Hallo
Ich wünschte, ich hätte den Code zum Ausführen von "show with dependent" in SolidWorks 2018 SP5.
Ich habe diesen Link gefunden, aber die Verarbeitungszeit ist viel länger als die "Mit abhängig anzeigen", die Sie manuell im SolidWorks Feature-Manager durchführen.
http://help.solidworks.com/2015/english/api/sldworksapi/Show_All_Components_Example_VB.htm
Haben Sie Leads?
Vielen Dank
Herzliche Grüße
Hallo
Sie müssen die Assembly auswählen und ein "ShowComponent2" darauf ausführen, probieren Sie das folgende Makro aus (ändern Sie natürlich den Namen der Assembly "Assemblage1.SLDASM" in Ihren eigenen):
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
Seien Sie vorsichtig, dies funktioniert nur bei einer übergeordneten Assembly und bei Komponenten der obersten Ebene.
Herzliche Grüße
Hallo D.Roger
Vielen Dank für Ihre Antwort.
Ich habe diesen Code bereits ausprobiert, aber in der Tat verhält er sich nicht wie die "Show with Dependents", die alle Ebenen anzeigt.
Hier ist der Code, den ich bisher als den schnellsten empfunden habe
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