Nou, met jouw hulp ben ik erin geslaagd om iets te doen dat waarschijnlijk niet optimaal is, maar lijkt te werken. De openheid van kinderen is inderdaad noodzakelijk.
als het kan helpen
'**********************
'Auteursrecht(C) 2023 Xarial Pty Limited
'Referentie: De componentenboom doorkruisen met behulp van de SOLIDWORKS API
"Licentie: Licentie
'**********************
Optie Expliciete
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Dim deel als SldWorks.ModelDoc2
Zon SelMgr Als SldWorks.SelectionMgr
Dim swFeatMgr als SldWorks.FeatureManager
Dim path_complete als String' volledige manier van het stuk
Dim myError zo lang mogelijk
Dim myWarning zo lang
Dim aanhalingsteken als tekenreeks
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Dim ext als snaar
Const INDENT_SYMBOL As String = " "
Sub hoofd()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set SelMgr = Part.SelectionManager
Set swFeatMgr = Part.FeatureManager
' Show Component Descriptions is set to true
swFeatMgr.ShowComponentDescriptions = True
' Show Component Configuration Names is set to false
swFeatMgr.ShowComponentConfigurationNames = True
' Show Component Configuration Descriptions is set to false
swFeatMgr.ShowComponentConfigurationDescriptions = False
' Show Component Names
swFeatMgr.ShowComponentNames = False
swFeatMgr.ShowDisplayStateNames = False
Dim swRootComp As SldWorks.Component2
Set swRootComp = swModel.ConfigurationManager.ActiveConfiguration.GetRootComponent
TraverseComponent swRootComp, ""
Else
MsgBox "Please open assembly"
End If
Einde Sub
Sub TraverseComponent(comp als SldWorks.Component2, inspringen als tekenreeks)
Dim vChildComps As Variant
vChildComps = comp.GetChildren
Dim i As Integer
For i = 0 To UBound(vChildComps)
Dim swChildComp As SldWorks.Component2
Set swChildComp = vChildComps(i)
Debug.Print indent & swChildComp.Name2 & " (" & swChildComp.GetPathName() & ")"
TraverseComponent swChildComp, indent & INDENT_SYMBOL
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
' Set SelMgr = Part.SelectionManager
' Stel swFeatMgr = Deel.FeatureManager in
' Opent het lusbestand
ext = Recht(swChildComp.GetPathName(), 6)
'Als het een onderdeel is
Als ext = "sldprt" Dan
Deel instellen = swApp.OpenDoc6(swChildComp.GetPathName(), 1, 0, "", longstatus, longwarnings)
Anders
'Het is geen lening'
Als ext = "sldasm" Dan
"////aSM
Deel instellen = swApp.OpenDoc6(swChildComp.GetPathName(), 2, 0, "", longstatus, longwarnings)
Else
MsgBox "pas d'extension trouvée"
End If
Einde als
''Wijzigt de weergave van de SW-boom
Set SelMgr = Part.SelectionManager
Set swFeatMgr = Part.FeatureManager
' Show Component Descriptions is set to true
swFeatMgr.ShowComponentDescriptions = True
' Show Component Configuration Names is set to false
swFeatMgr.ShowComponentConfigurationNames = True
' Show Component Configuration Descriptions is set to false
swFeatMgr.ShowComponentConfigurationDescriptions = False
' Show Component Names
swFeatMgr.ShowComponentNames = False
swFeatMgr.ShowDisplayStateNames = False
'MsgBox' voor het sluiten van het dossier
''ferme le fichier de la boucle
swApp.CloseDoc Part.GetPathName
Set Deel = Niets
Next
Einde Sub