Supprimer des composants d'un assemblage via vba

Bonjour à tous,

Je viens vers vous en espérant trouver de l'aide.

Contexte :

J'aimerais piloter des assemblages solidworks depuis excel grâce à des macros. En gros l'excel ouvre des assemblages les uns après les autres, en supprimant où en résolvant des composants dans ceux-ci.

Mon problème réside dans la commande pour supprimer ces composants : J'ai essayé d'ouvrir la famille de pièce (via mes macros) et de modifier celle-ci mais ça ne marche pas et finis par corrompre la famille de pièce. De plus cela crée pas mal d'erreurs quand la famille de pièce est ouverte en même temps qu'un autre fichier excel.

Piste de résolution :

J'ai donc trouvé la fonction EditSuppress2(), mais je n'arrive pas l'adapter à mon code. Si quelqu'un connait bien cette fonction et peut m'orienter, je vous donne mon bout de code.

Code :

 

Private Sub CommandButton1_Click()

Dim swApp As Object

Dim Model As ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret As Boolean

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
Set swModelDocExt = Model.Extension
 
boolstatus = swModelDocExt.SelectByID2("Pompe à engrenage<1>", "swSelCOMPONENT", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Model.EditSuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


End Sub

 

J'ai cru voir des miracles s'opérer ici ;) j'espère trouver de l'aide.

Bonne journée

Jette plutôt un oeil à cette méthode:
http://help.solidworks.com/2017/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IComponent2~SetSuppression2.html

Merci pour la réponse, je ne connaissais pas cette fonction, je vais essayer ça.

Merci Thomas pour cette fonction il doit surement y avoir moyen de résoudre le problème grâce à elle mais j'ai trouvé la solution grâce à EditSuppress2().

Je vous donne mon code pour les futurs intéressés.

(La fonction EditUnsuppress2() fait l'inverse de EditSuppress2(), elle résout le composant.)

Code :

Private Sub CommandButton1_Click()

Dim swApp As Object

Dim Model As ModelDoc2
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim ret As Boolean

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
Set swModelDocExt = Model.Extension
 
boolstatus = swModelDocExt.SelectByID2("Pièce1-1@Assemblage1", "COMPONENT", 0, 0, 0, True, 0, Nothing, 0)
boolstatus = Model.EditSuppress2()
'boolstatus = Model.EditUnsuppress2()

ret = swModelDocExt.Rebuild(swRebuildOptions_e.swRebuildAll)


End Sub