VBA Excel vers Solidworks

Bonjour à tous,
j'aimerais piloter une fonction de solidworks via un fichier Excel avec une macro VBA


Ci-joint le code pour la fonction EditSuppress2() qui m’intéresse.
'Dim instance As IModelDoc
'Dim value As System.Boolean
'value = instance.EditSuppress2()

 

Ci-joint la macro enregistrer via le logiciel Solidworks
'Sub main()

'Set swApp = _
'Application.SldWorks

'Set Part = swApp.ActiveDoc
'boolstatus = Part.Extension.SelectByID2("Enlèv. mat.-Extru.1@PièceX.part", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
'Part.EditSuppress2
'Part.ClearSelection2 True
'End Sub

Est-ce que quelqu'un a déjà travaillé sur ce type de VBA? Comment faire concorder les deux?

Je souhaite piloter un suppression d'une fonction via excel d'un piece?

Merci de votre aide par avance.

Bonjour,

Ce que vous semblez vouloir faire s'apparente à une famille de pièce. Tout aussi efficace et simple, excel pilote déjà en natif SW dans ce cadre là.

2 « J'aime »

oui tout a fait mais je souhaiterais proceder par un macro excel, est-ce possible?

comme j'ai plusieurs fonction à supprimer, je souhaiterais passer par une macro excel qui pilote la suppression de fonction de Solidworks (EditSuppress2())

Bonjour,

Voici un exemple de macro dans Excel qui permet de récupérer le nom de la pièce chargée dans Solidworks :

Sub Macro1()
    
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
        
Set swModel = swApp.ActiveDoc

MsgBox swModel.GetTitle

End Sub

Ne pas oublier d'ajouter les références à Solidworks dans l'éditeur de macro Excel :

Le reste n'est que de l'écriture de macro vba standard.

Cordialement,

Bonjour, merci de ta réponse, 

j'ai déjà fait une macro similaire à la tienne pour modifier les cotes d'une pièce avec le code joint:

Part.Parameter("D1@Esquisse1@PièceX.Part").SystemValue = Excel.Range("B2") / 1000

 

Mais je bloque sur la suppression d'une fonction de la pièce, il me semble qu'il faut utilise la fonction EditSuppress2() mais je n'arrive pas à la mettre en forme en VBA pour supprimer l'enlèvement de matière de ma pièce ("Enlèv. mat.-Extru.1@PièceX.Part") 

J'ai mon exemple de pièce au post.

Merci de votre aide.

 


piecex.sldprt

Bonjour,

Tu as un exemple de l'utilisation de la fonction EditSuppress2() ICI.

Cordialement

je n'avais pas essayé cela mais j'ai toujours le même résultat "cela ne fonctionne pas"

j'ai mis ce code:

Model.SelectByID("Enlèv. mat.-Extru.1@PièceX.Part", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0) = Model.EditSuppress()

 

j'ai une erreur d'excécuton "424" Objet requis

 

C'est que tu as un objet qui n'est pas défini, probablement "Model".

Pourquoi mets-tu "@piecex.Part" après le "Enlèv. mat.-Extru.1" dans le "SelectByID" qui d'ailleurs devrait plutôt être "SelectByID2", de même que le "EditSuppress()" qui devrait être "EditSuppress2()"...

Set Model = swApp.ActiveDoc
boolstatus = Model.Extension.SelectByID2("Enlèv. mat.-Extru.1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = swModel.EditSuppress2()

Cordialement,

merci de ta reponse mais j'ai le meme resultat 

je te joins mon code entier 

Dim swApp As Object


Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Private Sub CommandButton1_Click()

Set swApp = CreateObject("SldWorks.application")

Set Model = swApp.ActiveDoc
boolstatus = Model.Extension.SelectByID2("Enlèv. mat.-Extru.1", "BODYFEATURE", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = swModel.EditSuppress2()

Part.ClearSelection2 True


End Sub

 

et j'ai toujours la même erreur au final  "Erreur d'exécution "424" : Objet requis

Erreur de ma part dans un copier coller, remplace boolstatus = swModel.EditSuppress2() par boolstatus = Model.EditSuppress2()

super a fonction je te remercie beaucoup, j'ai galeré tout la semaine sur ce code merci énormement