Ich öffne den Beitrag erneut, weil ich ein kleines Problem mit dem betreffenden Makro habe, das zum Öffnen des ausgewählten Teils im Grafikbereich verwendet wird.
Dies liegt daran, dass das Makro nur funktioniert, wenn das Teil auf aufgelöst eingestellt ist.
Wissen Sie, ob es möglich wäre, dies in das Makro zu integrieren, d.h. die Münze im grafischen Bereich (Gesicht oder etwas anderes) auszuwählen, das Makro zu starten: die Münze zu lösen und sie dann zu öffnen.
Ich gebe Ihnen den Code des Makros unten:
'******************************************************************************
' VERSAMMLUNGOFFEN. SWB von Ted Griebling
' Dieses Makro öffnet das besitzende Bauteil oder die untergeordnete Baugruppe (wenn es aus dem Menü
' Feature Scrambler) für alles, was in einer Baugruppe ausgewählt ist.
' ******************************************************************************
Dimmen swApp als Objekt
activeDocument als Objekt dimmen
Dim selEntity als Objekt
Dim selType As Long
Dim SelMgr als Objekt
Dim owneringComponent als Objekt
Dim componentName als Zeichenfolge
Teil als Objekt dimmen
Komponentenpfad als Zeichenfolge dimmen
const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Sub main()
Set swApp = CreateObject("SldWorks.Application")
Legen Sie activeDocument = swApp.ActiveDoc fest
' Stellen Sie sicher, dass es sich nicht um ein Teil handelt.
Wenn (activeDocument.GetType = swDocPART) dann
Sub beenden
Ende, wenn
' Etwas anderes für Zeichnungen machen?
Wenn (activeDocument.GetType = swDocDRAWING) dann
Sub beenden
Ende, wenn
' Abrufen der SelectionMgr-Schnittstelle
Festlegen von SelMgr = activeDocument.SelectionManager
' Abrufen des ausgewählten Entity-Objekts
Set selEntity = SelMgr.GetSelectedObject3(1)
selType = SelMgr.GetSelectedObjectType2(1)
'MsgBox selType
' Typen, die spätere Teile barf machen
Wenn (selType = 0) oder (selType = 42) oder (selType = 69) dann
Sub beenden
Ende, wenn
' Dies funktioniert hervorragend für Komponenten, die aus dem Feature Scrambler ausgewählt wurden
Wenn (SelMgr.GetSelectedObjectType2(1) = 20) dann
»Jawohl!
activeDocument.OpenCompDatei
Sub beenden
Ende, wenn
'Extrahieren Sie den Pfadnamen aus der ausgewählten Entität.
Wenn (activeDocument.GetType = swDocASSEMBLY) dann
' Abrufen des besitzenden Component-Objekts
Legen Sie owningComponent = selEntity.GetComponent fest
' Rufen Sie den Pfadnamen der Komponente ab
componentpath = owningComponent.GetPathName
' MsgBox-Komponentenpfad
' Öffnen Sie das Teil in einem eigenen Fenster, ja!
Set part = swApp.ActivateDoc(componentpath)
Sub beenden
Ende, wenn
Ende Sub
Vielen Dank im Voraus für Ihre Antworten.
Herzliche Grüße