Hoe te doen in een "show met afhankelijke" vergadering in vba

Hallo

Ik wou dat ik de code had om "show with dependent" uit te voeren in solidworks 2018 SP5.

Ik heb deze link gevonden, maar de verwerkingstijd is veel langer dan de "show met afhankelijke"  die je handmatig doet in de SolidWorks-functiemanager.

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

Heb je aanknopingspunten?

Bedankt

Vriendelijke groeten

Hallo

Je moet de assembly selecteren en er een "ShowComponent2" op doen, probeer de macro hieronder (verander de naam van de assembly "Assemblage1.SLDASM" natuurlijk in je eigen naam):

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

 

Let op, dit werkt alleen op een bovenliggende assemblage en op componenten van het hoogste niveau.

Vriendelijke groeten

Hallo  D.Roger

Dank u voor uw antwoord.

Ik heb deze code al geprobeerd, maar inderdaad, het gedraagt zich niet als de "show met afhankelijken" die alle niveaus weergeeft.

 

Hier is de code die ik tot nu toe de snelste vond om uit te voeren

 

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