Maak een lijst van alle componenten in de actieve assemblage en componenten in subassemblages

Hallo

Ik wil alle componenten van de actieve assemblage in het formulier opsommen

component1-1@assemblageracine

component1-2@assemblageracine

ssassembly1-1@assemblageracine/component2-1@ssassemblage1

enz...

Het doel is om het resultaat vervolgens in de macro hierboven te injecteren volgens andere parameters.

Sub hoofd()

Stel swApp = Toepassing.SldWorks in

Deel instellen = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("1052616-1@1052602/2102935-1@1052616", "COMPONENT", 0, 0, 0, Onwaar, 0, Niets, 0)
Deel.HideComponent2
Deel.ClearSelection2 Waar
Einde Sub

Bedankt

Hallo, dit zou bij je moeten passen, ik heb de helpmacro een beetje opgeruimd, http://help.solidworks.com/2018/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.icomponent2~getchildren.html

 

Optie Expliciete

Sub TraverseComponent(swComp als SldWorks.Component2, nLevel zo lang)
    Dim vChildComp als variant
    Dim swChildComp als SldWorks.Component2
    Dim swCompConfig als SldWorks.Configuration
    Dim sPadStr als snaar
    Zon i Zo lang
    Voor i = 0 Naar nLevel - 1
        sPadStr = sPadStr + "  "
    volgende i
    vChildComp = swComp.GetChildren
    Voor i = 0 TB UBound(vChildComp)
        Stel swChildComp in = vChildComp(i)
        Debug.Print sPadStr & "+" & swChildComp.Name2 & " "

        TraverseComponent swChildComp, nLevel + 1
    volgende i
Einde Sub

Sub hoofd()
    Dim swApp als SldWorks.SldWorks
    Dim swModel als SldWorks.ModelDoc2
    Dim swAssy als SldWorks.AssemblyDoc
    Dim swConf als SldWorks.Configuration
    Dim swRootComp als SldWorks.Component2
    Dim nStart zo lang
    Dim bRet als Booleaanse
    Dim fileName als tekenreeks
    Dim fouten zo lang mogelijk
    Dim waarschuwingen zo lang
    Stel swApp = CreateObject("SldWorks.Application") in
    (') Open vergadering
    fileName = "C:\Gebruikers\Openbaar\Documenten\SOLIDWORKS\SOLIDWORKS 2018\samples\tutorial\smartcomponents\stepped_shaft.sldasm"
    Stel swModel in = swApp.OpenDoc6(fileName, swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent, "", fouten, waarschuwingen)
    Stel swConf = swModel.GetActiveConfiguration in
    Stel swRootComp in = swConf.GetRootComponent3(True)
    nStart = Timer
    Debug.Print "Bestand = " & swModel.GetPathName

    TraverseComponent swRootComp, 1
    
    Foutopsporing.Print ""
    Debug.Print "Tijd = " & Timer - nStart & " seconden"
Einde Sub
 

2 likes

Het werkt goed bedankt Mandrake