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