Entfernen von Komponenten aus einer Baugruppe über vba

Hallo ihr alle

Ich komme zu euch in der Hoffnung, Hilfe zu finden.

Zusammenhang:

Ich möchte SOLIDWORKS-Baugruppen aus Excel mit Makros steuern. Grundsätzlich öffnet Excel Baugruppen nacheinander und löscht oder löst darin enthaltene Komponenten auf.

Mein Problem liegt in dem Befehl, diese Komponenten zu entfernen: Ich habe versucht, die Teilefamilie (über meine Makros) zu öffnen und zu ändern, aber es funktioniert nicht und endet damit, dass die Teilefamilie beschädigt wird. Darüber hinaus verursacht es viele Fehler, wenn die Teilefamilie gleichzeitig mit einer anderen Excel-Datei geöffnet wird.

Mögliche Lösung:

Also habe ich die Funktion EditSuppress2() gefunden , kann sie aber nicht an meinen Code anpassen. Wenn jemand diese Funktion gut kennt und mich anleiten kann, gebe ich Ihnen mein Stück Code.

Code:

 

Privater Sub CommandButton1_Click()

Dimmen swApp als Objekt

Modell als Modell dimmenDoc2
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret Als Boolescher Wert

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
Legen Sie swModelDocExt = Model.Extension fest
 
boolstatus = swModelDocExt.SelectByID2("Zahnradpumpe<1>", "swSelCOMPONENT", 0, 0, 0, Wahr, 0, Nichts, 0)
boolstatus = Modell.EditSuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Ende Sub

 

Ich dachte, ich sehe hier Wunder wirken ;) Ich hoffe, Hilfe zu finden.

Schönen Tag

Schauen Sie sich stattdessen diese Methode an:
http://help.solidworks.com/2017/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~SetSuppression2.html

Danke für die Antwort, ich kannte diese Funktion nicht, ich werde sie ausprobieren.

Vielen Dank Thomas für diese Funktion, es muss sicherlich einen Weg geben, das Problem dank ihr zu lösen, aber ich habe die Lösung dank EditSuppress2() gefunden.

Ich gebe Ihnen meinen Code für diejenigen, die daran interessiert sind.

(Die Funktion EditUnsuppress2() bewirkt das Gegenteil von EditSuppress2(), sie löst die Komponente auf.)

Code:

Privater Sub CommandButton1_Click()

Dimmen swApp als Objekt

Modell als Modell dimmenDoc2
Dim boolstatus als boolescher Wert
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret Als Boolescher Wert

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
Legen Sie swModelDocExt = Model.Extension fest
 
boolstatus = swModelDocExt.SelectByID2("Teil1-1@Assemblage1", "KOMPONENTE", 0, 0, 0, Wahr, 0, Nichts, 0)
boolstatus = Modell.EditSuppress2()
'boolstatus = Modell.BearbeitenUnsuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Ende Sub