Auflisten aller Komponenten in der aktiven Baugruppe und Komponenten in Unterbaugruppen

Hallo

Ich möchte alle Komponenten der aktiven Assembly im Formular

Komponente1-1@assemblageracine

Komponente1-2@assemblageracine

SSCassemblierung1-1@assemblageracine/Komponente2-1@ssassemblage1

etc...

Ziel ist es, das Ergebnis dann entsprechend anderen Parametern in das obige Makro zu injizieren.

Sub main()

Legen Sie swApp = Application.SldWorks fest

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("1052616-1@1052602/2102935-1@1052616", "KOMPONENTE", 0, 0, 0, Falsch, 0, Nichts, 0)
Teil.HideComponent2
Part.ClearSelection2 Wahr
Ende Sub

Vielen Dank

Hallo, das sollte dir passen Ich habe das Hilfe-Makro ein wenig aufgeräumt, http://help.solidworks.com/2018/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~getchildren.html

 

Option Explizit

Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
    Dim vChildComp als Variante
    Dim swChildComp als SldWorks.Component2
    Dim swCompConfig als SldWorks.Configuration
    Dim sPadStr As String
    Sonne i So lang
    Für i = 0 Bis nLevel - 1
        sPadStr = sPadStr + "  "
    Weiter i
    vChildComp = swComp.GetChildren
    Für i = 0 TB UBound(vChildComp)
        Legen Sie swChildComp = vChildComp(i) fest.
        Debug.Print sPadStr & "+" & swChildComp.Name2 & " "

        TraverseComponent swChildComp, nLevel + 1
    Weiter i
Ende Sub

Sub main()
    Dim swApp als SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swAssy As SldWorks.AssemblyDoc
    Dim swConf als SldWorks.Configuration
    Dim swRootComp als SldWorks.Component2
    Dim nStart So lange
    Dim bRet als boolescher Wert
    Dim fileName als Zeichenfolge
    Fehler so lange dimmen
    Schwache Warnungen So lange
    Set swApp = CreateObject("SldWorks.Application")
    ' Offene Baugruppe
    fileName = "C:\Benutzer\Öffentlich\Dokumente\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\smartcomponents\stepped_shaft.sldasm"
    Set swModel = swApp.OpenDoc6(fileName, swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent, "," Fehler, Warnungen)
    Legen Sie swConf = swModel.GetActiveConfiguration fest
    Set swRootComp = swConf.GetRootComponent3(True)
    nStart = Zeitgeber
    Debug.Print "Datei = " & swModel.GetPathName

    TraverseComponent swRootComp, 1
    
    Debug.Drucken ""
    Debug.Print "Zeit = " & Timer - nStart & " Sekunden"
Ende Sub
 

2 „Gefällt mir“

Es funktioniert gut, danke Mandarake