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