Cze wszystkim
Będąc z zawodu projektantem/redaktorem i małym programistą z pasji, poradziłem sobie z silniejszym ode mnie kodowaniem makr VBA.
Moim celem jest obniżenie paska odzyskiwania we wszystkich częściach zespołu. Aby to zrobić, chciałbym, aby makro wybierało i otwierało, jedna po drugiej, części (z wyświetlaniem na ekranie lub bez), a następnie przesuwało się w dół paska wznawiania w drzewie i zapisywało część. Gdyby w moim zbiorze miał być podzbiór, chciałbym, aby otworzył ten podzbiór (tak samo jak dla części, z wyświetlaczem lub bez) i zaczął otwierać części jedna po drugiej, aby ponownie rozpocząć pierwszy krok.
Oto mały schemat:
SW ASSEMBLY-----> Otwórz część i tyłek (które nie są usuwane) -------> Jeśli jest to część --------> przejdź w dół paska wznawiania + zapisz + zamknij
Ja
I-----> Jeśli jest to zgromadzenie, Zrób to samo, co w ramce 2
oto kod i gdzie jestem, to jest kod, który znalazłem w sieci, ale który najwyraźniej został zakodowany trochę "w pośpiechu" na tym forum: https://forum.solidworks.com/thread/159206
Mój kod poprawiłem najlepiej, jak potrafiłem : Problem z moim kodem polega na tym, że wszędzie są błędy... błąd 91, a czasami 13.... Jestem zagubiony i potrzebowałbym pomocy jednego z Was, który o tym wie!! Z góry dziękuję ;)
Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swModel1 As SldWorks.ModelDoc2
Dim swAssembly jako SldWorks.AssemblyDoc
Dim CompNum As Integer
Dim CompNum1 jako liczba całkowita
Przyciemnij komponenty jako SldWorks.Component2
Przyciemnij komponenty1 jako SldWorks.Component2
Przyciemnij składnik jako SldWorks.Component2
Dim component1 As SldWorks.Component2
Sub main()
Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc
Ustaw swAssembly = swModel
' Pobieranie liczby komponentów, bez uwzględniania komponentów potomnych w podzespołach
CompNum = swAssembly.GetComponentCount(True)
components = swAssembly.GetComponents(True)
Dim i jako liczba całkowita
Dla i = 0 do CompNum
Komponent = Komponenty(I)
swModel1 = komponent. Pobierz dokument ModelDoc2
'Otwórz część z funkcji złożenia (jeśli jest to podzespół, utwórz kolejną pętlę for, korzystając z tej samej procedury)
Jeśli swModel1.GetType = swDocPART to
Ustaw swModel = swApp.ActivateDoc3(komponent. Nazwa2, Fałsz, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = udział. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = udział. EditRebuild3()
swModel.SaveAs (komponent. GetPathName)
swApp.CloseDoc. GetPathName (Nazwa_ścieżki)
Ustaw swModel = swApp.ActiveDoc
ElseIf swModel1.GetType = swDocASSEMBLY Then
CompNum1 = swModel1.GetComponentCount(Prawda)
components1 = swModel1.GetComponents(True)
Sun j jako liczba całkowita
Dla j = 0 TB CompNum1
Składnik1 = Komponenty1(J)
swModel1 = komponent1. Pobierz dokument ModelDoc2
Ustaw swModel = swApp.ActivateDoc3(komponent. Nazwa2, Fałsz, swRebuildOnActivation_e.swUserDecision, 0)
boolstatus = udział. FeatureManager.EditRollback(swMoveRollbackBarTo_e.swMoveRollbackBarToEnd, "")
boolstatus = udział. EditRebuild3()
swModel.SaveAs (komponent. GetPathName)
swApp.CloseDoc. GetPathName (Nazwa_ścieżki)
Następny
Zakończ jeżeli:
Następny
Koniec subwoofera