Comment faire dans un assemblage "montrer avec dépendant" en vba

bonjour,

je souhaite avoir le code pour executer "montrer avec dépendant" dans solidworks 2018 SP5.

j'ai trouver ce lien mais le temps de traitement est beaucoup plus long que le "montrer avec dépendant"  que l'on fait manuellement dans le feature manager de solidworks.

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

auriez vous une pistes?

Merci

cordialement

Bonjour,

Il faut sélectionner l'assemblage et faire un "ShowComponent2" dessus, essaye la macro ci-dessous (en changeant le nom de l'assemblage "Assemblage1.SLDASM" par le tien bien sûr) :

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

 

Attention, cela ne fonctionne que sur un assemblage père et sur les composants de premier niveau.

Cordialement,

bonjour  d.roger

merci pour votre reponse.

J'ai deja essayé ce code mais effectivement , cela ne se comporte pas comme le "montrer avec dependants" qui affiche tout les niveaux.

 

voici le code que j'ai trouvé le plus rapide en execution pour l'instant

 

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