Ik open het bericht opnieuw omdat ik een klein probleem heb met de macro in kwestie die wordt gebruikt om het geselecteerde deel in het grafische gebied te openen.
Dit komt omdat de macro alleen werkt als het onderdeel is ingesteld op opgelost.
Weet u of het mogelijk zou zijn om dit in de macro te integreren, d.w.z.: de munt selecteren in het grafische gebied (gezicht of anderszins), de macro starten: de munt oplossen en vervolgens openen.
Ik geef je de code van de macro hieronder:
'******************************************************************************
' VERGADERING GEOPEND. SWB door Ted Griebling
' Deze macro opent het eigen deel of subassemblage (indien geselecteerd uit de
' feature scrambler) van alles wat in een assemblage is geselecteerd.
' ******************************************************************************
Dim swApp als object
Dim activeDocument als object
Dim selEntity als object
Dim selType zo lang
Dim SelMgr als object
Dim owningComponent As Object
Dim componentName als tekenreeks
Deel dimmen als object
Componentpath dimmen als tekenreeks
Const swDocPART = 1
Const swDocASSEMBLY = 2
Const swDocDRAWING = 3
Sub hoofd()
Stel swApp = CreateObject("SldWorks.Application") in
Stel activeDocument in = swApp.ActiveDoc
' Zorg ervoor dat dit geen onderdeel is.
Als (activeDocument.GetType = swDocPART) Dan
Sub afsluiten
Einde als
' Iets anders doen voor tekeningen?
Als (activeDocument.GetType = swDocDRAWING) Dan
Sub afsluiten
Einde als
' Verkrijg de SelectionMgr-interface
Set SelMgr = activeDocument.SelectionManager
' Verkrijg het geselecteerde entiteitsobject
Set selEntity = SelMgr.GetSelectedObject3(1)
selType = SelMgr.GetSelectedObjectType2(1)
"MsgBox selType
' Typen die latere onderdelen barf maken
Als (selType = 0) of (selType = 42) of (selType = 69) dan
Sub afsluiten
Einde als
' Dit werkt geweldig voor componenten die zijn geselecteerd uit de functie scrambler
Als (SelMgr.GetSelectedObjectType2(1) = 20) dan
'Jazeker!
activeDocument.OpenCompFile
Sub afsluiten
Einde als
'Haal de naam van het pad uit de geselecteerde entiteit.
Als (activeDocument.GetType = swDocASSEMBLY) Dan
' Haal het object op dat de eigenaar is van een component
Set owningComponent = selEntity.GetComponent
' Haal de naam van het componentpad op
componentpath = owningComponent.GetPathName
' MsgBox componentpad
' Open het deel in zijn eigen raam ja!
Deel instellen = swApp.ActivateDoc(componentpath)
Sub afsluiten
Einde als
Einde Sub
Bij voorbaat dank voor uw antwoorden.
Vriendelijke groeten