Componenten uit een assemblage verwijderen via vba

Hoi allemaal

Ik kom naar je toe in de hoop hulp te vinden.

Context:

Ik wil graag solidworks-assemblages vanuit Excel besturen met behulp van macro's. Kortom, Excel opent de een na de ander assemblages, waarbij componenten erin worden verwijderd of opgelost.

Mijn probleem ligt in het commando om deze componenten te verwijderen: ik heb geprobeerd de onderdeelfamilie te openen (via mijn macro's) en deze te wijzigen, maar het werkt niet en eindigt met het beschadigen van de onderdeelfamilie. Bovendien zorgt het voor veel fouten wanneer de artikelfamilie tegelijkertijd met een ander Excel-bestand wordt geopend.

Mogelijke resolutie:

Dus ik heb de functie EditSuppress2() gevonden , maar ik kan deze niet aanpassen aan mijn code. Als iemand deze functie goed kent en me kan begeleiden, zal ik je mijn stukje code geven.

Code:

 

Privé Sub CommandButton1_Click()

Dim swApp als object

Model dimmen als ModelDoc2
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt als SldWorks.ModelDocExtension
Dim ret als Booleaanse

Stel swApp = CreateObject("SldWorks.application") in

Model instellen = swApp.ActiveDoc
Stel swModelDocExt = Model.Extension in
 
boolstatus = swModelDocExt.SelectByID2("Tandwielpomp<1>", "swSelCOMPONENT", 0, 0, 0, Waar, 0, Niets, 0)
boolstatus = Model.EditSuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Einde Sub

 

Ik dacht dat ik hier wonderen zag werken ;) Ik hoop hulp te vinden.

Fijne dag

Kijk in plaats daarvan eens naar deze methode:
http://help.solidworks.com/2017/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~SetSuppression2.html

Bedankt voor het antwoord, ik kende deze functie niet, ik zal het proberen.

Bedankt Thomas voor deze functie, er moet zeker een manier zijn om het probleem dankzij het op te lossen, maar ik heb de oplossing gevonden dankzij EditSuppress2().

Ik geef je mijn code voor degenen die geïnteresseerd zijn.

(De functie EditUnsuppress2() doet het tegenovergestelde van EditSuppress2(), het lost de component op.)

Code:

Privé Sub CommandButton1_Click()

Dim swApp als object

Model dimmen als ModelDoc2
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt als SldWorks.ModelDocExtension
Dim ret als Booleaanse

Stel swApp = CreateObject("SldWorks.application") in

Model instellen = swApp.ActiveDoc
Stel swModelDocExt = Model.Extension in
 
boolstatus = swModelDocExt.SelectByID2("Deel1-1@Assemblage1", "COMPONENT", 0, 0, 0, Waar, 0, Niets, 0)
boolstatus = Model.EditSuppress2()
'boolstatus = Model.EditUnsuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


Einde Sub