Witam
Żałuję, że nie mam kodu do uruchomienia polecenia "show with dependent" w solidworks 2018 SP5.
Znalazłem to łącze, ale czas przetwarzania jest znacznie dłuższy niż "pokaż z zależnym" , który wykonuje się ręcznie w menedżerze operacji SolidWorks.
http://help.solidworks.com/2015/english/api/sldworksapi/Show_All_Components_Example_VB.htm
Czy masz jakieś leady?
Dziękuję
Pozdrowienia
Witam
Musisz wybrać zestaw i zrobić na nim "ShowComponent2", wypróbuj poniższe makro (oczywiście zmieniając nazwę zestawu "Assemblage1.SLDASM" na własną):
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
Należy pamiętać, że działa to tylko w przypadku złożenia nadrzędnego i komponentów najwyższego poziomu.
Pozdrowienia
Witaj D.Roger
Dziękuję za odpowiedź.
Próbowałem już tego kodu, ale rzeczywiście, nie zachowuje się on jak "pokaz z osobami zależnymi", który wyświetla wszystkie poziomy.
Oto kod, który uważam za najszybszy do uruchomienia do tej pory
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