Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Enthält die Zeichnung einen bestimmten Block?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Elektromagnetische Simulation im niederfrequenten Bereich mit CST Studio Suite
Autor Thema:  API: Enthält die Zeichnung einen bestimmten Block? (1120 mal gelesen)
Piet
Mitglied
Konstruktionsleiter & Konstrukteur


Sehen Sie sich das Profil von Piet an!   Senden Sie eine Private Message an Piet  Schreiben Sie einen Gästebucheintrag für Piet

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 18. Mrz. 2013 16:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich möchte mit einem Makro ermitteln, ob eine Zeichnung einen bestimmten Block enthält, und ob er verwendet wird.

Anstatt alle Ansichten zu durchlaufen, ist meine Idee, im Featuremanager zu gucken, ob der Block gelistet ist, und ob er als verwendet gelistet ist (ausgegraut).
Hintergrund: Das Makro erstellt PDFs von der Zeichnung, wenn der Block "preliminary" verwendet wird, soll an den Dateinamen auch ein "_preliminary" gehängt werden.

Ich habe noch gar keine Idee, wie ich im Featuremanager nach einem Block und dessen Eigenschaften suchen kann, kann mir jemand weiterhelfen?

Gruß,
Piet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 19. Mrz. 2013 10:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Piet 10 Unities + Antwort hilfreich

Hallo Piet,

vielleicht kannst du dir ja aus diesem Beispiel in der SWX API Hilfe die benötigten Informationen ziehen.

Get Block Information Example (VBA)

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


Sehen Sie sich das Profil von Piet an!   Senden Sie eine Private Message an Piet  Schreiben Sie einen Gästebucheintrag für Piet

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 19. Mrz. 2013 10:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das sieht schon mal vielversprechend aus, dieses Beispiel hatte ich nicht gefunden.

Vielen Dank!
Piet

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 19. Mrz. 2013 17:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Piet 10 Unities + Antwort hilfreich

Hallo,

wir haben so einen Block grundsätzlich drauf, der soll auf einem bestimmten Layer sein.
Zur Freigabe wird der Layer automatisiert ausgeblendet, für neuen Index wieder eingeblendet.

Unsere Abfrage lautet dann: ist der Layer sichtbar oder unsichtbar.
(was nicht 100% korrekt ist und auch wieder andere Verwirrungen stiften kann)

Und du musst auch ggf. über alle Blätter der Zeichnung gehen.

Gruß, Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 21. Mrz. 2013 16:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Piet 10 Unities + Antwort hilfreich

Hallo,

habe jetzt folgendes gebaut:

Code:
Function GetBlockDef(MyBlockname As String) As Object
    Dim i
    Dim vblockdef As Variant
    vblockdef = MyDoc.SketchManager.GetSketchBlockDefinitions
    i = 0
    While i < UBound(vblockdef)
        If vblockdef(i).GetFeature.Name = MyBlockname Then
            Set GetBlockDef = vblockdef(i)
            ' hab ihn!
            Exit Function
        End If
        i = i + 1
    Wend
    ' wenn nicht bleibt es bei nothing
End Function


Wenns die Blockdefinition nicht gibt, kommt nothing zurück, ansonsten ein Objekt von dem man die Instances zählen kann etc
also z.b.
Code:
GetBlockDef("Block_Dich_suche_ich").GetInstanceCount

Vielleicht etwas simpel, und berücksichtigt auch nicht, ob der Block unter einem anderen Namen eingefügt bzw. umbenannt wurde.
aber vielleicht kann jemand etwas draus machen 

Gruß, Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


Sehen Sie sich das Profil von Christian_W an!   Senden Sie eine Private Message an Christian_W  Schreiben Sie einen Gästebucheintrag für Christian_W

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 22. Mrz. 2013 10:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Piet 10 Unities + Antwort hilfreich

Hallo,

gerade probier ich mal wieder...
und da fügt er den Block (makesketchblockfromfile) doch beim 2. mal mit anderem Namen "Block1" ein.

weiß jemand, an welcher Option das liegt?

Gruß, Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


Sehen Sie sich das Profil von Piet an!   Senden Sie eine Private Message an Piet  Schreiben Sie einen Gästebucheintrag für Piet

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 26. Mrz. 2013 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Dank eurer Hilfe krieg ich raus, ob der Block da ist und verwendet wird, vielen Dank!

Piet

Hier mein Code:

Dim bPreliminary As Boolean
'
Sub SuchBlockPreliminary()
Dim sPreliminaryBlockName As String
sPreliminaryBlockName = "P:\ORGA\BLÖCKE\Nicht freigegeben (Serie).SLDBLK"  'nach diesem Block wird gesucht
bPreliminary = False

Set SwSketchMgr = Model.SketchManager
vBlockDef = SwSketchMgr.GetSketchBlockDefinitions

If Not IsEmpty(vBlockDef) Then  'wenn mindestens ein Block da ist
    For i = 0 To UBound(vBlockDef)  'durch alle Blöcke
        Set swBlockDef = vBlockDef(i)  'holt die Blockeigenschaften
        vBlockInst = swBlockDef.GetInstances    ' >0, wenn der Block verwendet wird
        If sPreliminaryBlockName = swBlockDef.FileName Then  'Wenn es der gesuchte Block ist
            If Not IsEmpty(vBlockInst) Then                  'wenn der Block verwendet wird
                bPreliminary = True
            End If
        End If
    Next i
End If

End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz