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