SOLIDWORKS : Inserer une pièce dans un assemblage à l'aide VBA

Bonjour,

Je debute en VBA et j'aimerais creer une macro qui creer un assemblage et insere d'abord une 1ere pièce.

J'ai essayer d'enregistrer une macro, mais celle-ci ne fonctionne pas !

La voici :

Dim swApp As ObjectDim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.NewDocument("C:\ProgramData\SolidWorks\SOLIDWORKS 2015\templates\Assemblage.asmdot", 0, 0, 0)
swApp.ActivateDoc2 "Assemblage1", False, longstatus
Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

boolstatus = Part.AddComponent("C:\Users\Moi\Desktop\Dossier\Pièce1.SLDPRT", 0, 0, 0)

End Sub

A priori l'erreur semble venir de la ligne :

boolstatus = Part.AddComponent("C:\Users\Moi\Desktop\Dossier\Pièce1.SLDPRT", 0, 0, 0)

 

Quelqu'un saurait t'il me dire d'ou vient le problème ?

Merci d'avance.

Cordialement

 

Bonjour,

Déjà, attention à l'enregistreur de macro, celui-ci n'utilise pas les dernières versions des méthodes des API.

Pour le AddComponent, regarde ici, tu verras que cette fonction permet d'ajouter un composant qui est pré-chargé dans Solidworks.

Cordialement,

1 « J'aime »

Ah d'accord, donc la seule solution c'est d'ouvrir d'abord la pièce, de l'insérer dans l'assemblage puis de la fermer ? Il n'existe pas d'autre fonction que AddComponent ?

Autre question :

Quant j'enregistre des macros, je me retrouve souvent avec des variable tel que boolstatus, longstatus, etc... Quelqu'un pourrait m'expliquer a quoi servent elle ? A la lecture du code j'ai l'impression que ce sont des variables qui n'ont pas vraiment de but précis mais qui servent pour tout et pour rien. Est ce bien cela ?

Bonjour,

Les variables boolstatus, longstatus, etc ... ne servent pas tout à fait à rien, par exemple, pour la fonction AddComponent, boolstatus est la valeur de retour de la méthode :

Function AddComponent(_

ByVal CompName As System.String, _

ByVal X As System.Double, _

ByVal Y As System.Double, _

ByVal Z As System.Double _

) As System.Boolean

 

Regarde déjà de ce coté avant de te lancer tête baissée dans les macros sinon tu risque de vite te perdre, et puis après, un peu de lecture sur les API de Solidworks que l'on trouve ici.

Cordialement,

Bonjour,

Comme dit dans le précédent message, ces variables permettent de stocker des valeurs de retour de fonctions.

Quand la fonction doit retourner plusieurs valeurs (messages d'erreur, résultat de la fonction comme par exemple lorsque l'on accède aux propriétés personnalisées) il faut d'abord créer les variables et les passer par référence à la fonction pour obtenir les valeurs.