Jak to zrobić w asemblerze "pokaż z zależnym" w vba

Witam

Żałuję, że nie mam kodu do uruchomienia polecenia "show with dependent" w solidworks 2018 SP5.

Znalazłem to łącze, ale czas przetwarzania jest znacznie dłuższy niż "pokaż z zależnym" , który wykonuje się ręcznie w menedżerze operacji SolidWorks.

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

Czy masz jakieś leady?

Dziękuję

Pozdrowienia

Witam

Musisz wybrać zestaw i zrobić na nim "ShowComponent2", wypróbuj poniższe makro (oczywiście zmieniając nazwę zestawu "Assemblage1.SLDASM" na własną):

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

 

Należy pamiętać, że działa to tylko w przypadku złożenia nadrzędnego i komponentów najwyższego poziomu.

Pozdrowienia

Witaj  D.Roger

Dziękuję za odpowiedź.

Próbowałem już tego kodu, ale rzeczywiście, nie zachowuje się on jak "pokaz z osobami zależnymi", który wyświetla wszystkie poziomy.

 

Oto kod, który uważam za najszybszy do uruchomienia do tej pory

 

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