Usuwanie komponentów ze złożenia za pomocą VBA

Cze wszystkim

Przychodzę do was z nadzieją, że znajdę pomoc.

Kontekst:

Chciałbym sterować złożeniami solidworks z programu Excel za pomocą makr. Zasadniczo program Excel otwiera złożenia jeden po drugim, usuwając lub rozwiązując znajdujące się w nich komponenty.

Mój problem polega na poleceniu usunięcia tych komponentów: Próbowałem otworzyć rodzinę części (za pomocą moich makr) i zmodyfikować ją, ale to nie działa i kończy się uszkodzeniem rodziny części. Ponadto powoduje wiele błędów, gdy rodzina części jest otwierana w tym samym czasie, co inny plik Excel.

Możliwe rozwiązanie:

Znalazłem więc funkcję EditSuppress2(), ale nie mogę jej dostosować do mojego kodu. Jeśli ktoś dobrze zna tę funkcję i może mnie poprowadzić, to dam Ci swój kawałek kodu.

Kod:

 

Prywatna subskrypcja CommandButton1_Click()

Dim swApp As Object

Przyciemnij model jako ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret As Boolean

Ustaw swApp = CreateObject("SldWorks.application")

Ustaw model = swApp.ActiveDoc
Ustaw swModelDocExt = Model.Extension
 
boolstatus = swModelDocExt.SelectByID2("Pompa zębata<1>", "swSelCOMPONENT", 0, 0, 0, Prawda, 0, Nic, 0)
boolstatus = Model.EditSuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Koniec subwoofera

 

Wydawało mi się, że widziałam tu cuda działające ;) Mam nadzieję, że znajdę pomoc.

Miłego dnia

Zamiast tego spójrz na tę metodę:
http://help.solidworks.com/2017/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~SetSuppression2.html

Dzięki za odpowiedź, nie znałem tej funkcji, spróbuję.

Dziękuję Thomasowi za tę funkcję, na pewno musi być jakiś sposób na rozwiązanie problemu dzięki niej, ale znalazłem rozwiązanie dzięki EditSuppress2().

Dla zainteresowanych dam Ci mój kod.

(Funkcja EditUnsuppress2() działa odwrotnie niż EditSuppress2() i rozwiązuje składnik).

Kod:

Prywatna subskrypcja CommandButton1_Click()

Dim swApp As Object

Przyciemnij model jako ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret As Boolean

Ustaw swApp = CreateObject("SldWorks.application")

Ustaw model = swApp.ActiveDoc
Ustaw swModelDocExt = Model.Extension
 
boolstatus = swModelDocExt.SelectByID2("Część1-1@Assemblage1", "KOMPONENT", 0, 0, 0, Prawda, 0, Nic, 0)
boolstatus = Model.EditSuppress2()
'boolstatus = Model.EditUnsuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Koniec subwoofera