Vorgehensweise in einer "Show with Dependent"-Assembly in VBA

Hallo

Ich wünschte, ich hätte den Code zum Ausführen von "show with dependent" in SolidWorks 2018 SP5.

Ich habe diesen Link gefunden, aber die Verarbeitungszeit ist viel länger als die "Mit abhängig anzeigen",  die Sie manuell im SolidWorks Feature-Manager durchführen.

http://help.solidworks.com/2015/english/api/sldworksapi/Show_All_Components_Example_VB.htm

Haben Sie Leads?

Vielen Dank

Herzliche Grüße

Hallo

Sie müssen die Assembly auswählen und ein "ShowComponent2" darauf ausführen, probieren Sie das folgende Makro aus (ändern Sie natürlich den Namen der Assembly "Assemblage1.SLDASM" in Ihren eigenen):

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean

Sub main()
   Set swApp = Application.SldWorks
   Set Part = swApp.ActiveDoc
   boolstatus = Part.Extension.SelectByID2("Assemblage1.SLDASM", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
   Part.ShowComponent2
End Sub

 

Seien Sie vorsichtig, dies funktioniert nur bei einer übergeordneten Assembly und bei Komponenten der obersten Ebene.

Herzliche Grüße

Hallo  D.Roger

Vielen Dank für Ihre Antwort.

Ich habe diesen Code bereits ausprobiert, aber in der Tat verhält er sich nicht wie die "Show with Dependents", die alle Ebenen anzeigt.

 

Hier ist der Code, den ich bisher als den schnellsten empfunden habe

 

Option Explicit

Public Enum swComponentVisibilityState_e

    swComponentHidden = 0
    swComponentVisible = 1

End Enum

 

Sub TraverseComponent(swComp As SldWorks.Component2, nLevel As Long)
    Dim vChildCompArr               As Variant
    Dim vChildComp                  As Variant
    Dim swChildComp                 As SldWorks.Component2
    Dim swCompConfig                As SldWorks.Configuration
    Dim sPadStr                     As String
    Dim i                           As Long

    
    For i = 0 To nLevel - 1

        sPadStr = sPadStr + "  "

    Next i

    
    vChildCompArr = swComp.GetChildren

    For Each vChildComp In vChildCompArr

        Set swChildComp = vChildComp
       
        Debug.Print sPadStr & swChildComp.Name2 & " <" & swChildComp.ReferencedConfiguration & ">"
        
        If swComponentHidden = swChildComp.Visible Then

            swChildComp.Visible = swComponentVisible

        End If
       
        TraverseComponent swChildComp, nLevel + 1

    Next

End Sub


Sub montrer_tout()

    Dim swApp                       As SldWorks.SldWorks
    Dim swModel                     As SldWorks.ModelDoc2
    Dim swAssy                      As SldWorks.AssemblyDoc
    Dim swConf                      As SldWorks.Configuration
    Dim swRootComp                  As SldWorks.Component2
    Dim bRet                        As Boolean

    
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swConf = swModel.GetActiveConfiguration
    Set swRootComp = swConf.GetRootComponent
    Debug.Print "File = " & swModel.GetPathName
    
    TraverseComponent swRootComp, 1

End Sub