Sélectionner une pièce pour ajouter une note VBA SolidWorks

Bonjour,

Je souhaite ajouter, via une macro, une note liée à la propriété du composant auquel elle est accrochée dans une mise en plan SolidWorks.

J'ai essayé par la méthode d'enregistrement de SolidWorks mais le code généré ne me convient pas. En effet, il sélectionne la pièce en fonction de ses coordonées et si je souhaite appliquer cette macro sur une autre mise en plan où se trouve la pièce, elle ne marche pas si la pièce n'est pas placée de la même manière sur la feuille.

Voici le code généré pas SolidWorks :

Dim swApp As Object

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

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("", "EDGE", 0.418950851731392, 0.261697604464967, -499.977072134691, False, 0, Nothing, 0)

Dim myNote As Object
Dim myAnnotation As Object
Dim myTextFormat As Object
Set myNote = Part.InsertNote("$PRPMODEL:""Repère""")
If Not myNote Is Nothing Then
   myNote.LockPosition = False
   myNote.Angle = 0
   boolstatus = myNote.SetBalloon(0, 0)
   Set myAnnotation = myNote.GetAnnotation()
   If Not myAnnotation Is Nothing Then
      longstatus = myAnnotation.SetLeader3(swLeaderStyle_e.swSTRAIGHT, 0, True, False, False, False)
      boolstatus = myAnnotation.SetPosition(0.304559076486096, 0.311886588479215, 0)
      boolstatus = myAnnotation.SetTextFormat(0, True, myTextFormat)
   End If
End If
Part.ClearSelection2 True
Part.WindowRedraw
End Sub

 

J'ai essayé de remplacer boolstatus = Part.Extension.SelectByID2("", "EDGE", 0.418950851731392, 0.261697604464967, -499.977072134691, False, 0, Nothing, 0)

par

boolstatus = Part.Extension.SelectByID2("Pièce2-1", "COMPONENT", 0.418950851731392, 0.261697604464967, -499.977072134691, False, 0, Nothing, 0)

mais ça ne marche pas.

Quelqu'un connait-il une solution ?

Merci

Bonjour,

je propose une idée; mais si vous affichiez les origines et vous re-faisiez votre macro avec l'accroche de l'origine de la pièce ça ne fonctionnerais pas??? Je suis novice dans les macros....

Bonjour manu67,

Merci pour votre réponse qui fonctionne presque.

J'ai ajouté ma note à l'origine en enregistrant ma macro qui me donne une ligne de code correspondant à ce que je souhaitait, c'est-à-dire que la pièce est sélectionnée par son nom et pas par ses coordonnées.

Par contre ça fonctionne uniquement avec des pièces sans configuration. Je regarde pour le faire avec des pièces configurées.

Hello,

Est-ce que passer par une note que tu mets en bibliothèque ne serait pas le plus simple ?

Voici la procédure en fichier joint

En espérant t'avoir aidé.


note_en_bibliotheque.docx

Ce n'était finalement pas un problème de configuration mais de langue dans la pièce. J'ai une pièce téléchargée qui est en anglais, l'origine s'appelle donc "Origin". C'est pour cette raison que la macro ne macrchait pas pour cette pièce.

@fliard : merci pour ta réponse, je garde l'astuce qui pourra me servir plus tard. Par contre, pour cette application elle ne correspond pas à ce que j'attends car j'ai déjà une macro qui ajoute des cotes et je la complète pour ajouter des notes. De plus, les notes que j'ajoute ne sont pas toujours sur la même pièce.

Bonne journée :)

Bonjour,

C'est possibel de poster la macro qui fonctionne dans un fichier texte par exemple ?

Merci !

Ci-joint la macro qui fonctionne


macronote.txt

Bonjour,

merci de m'avoir selectionner comme meilleur réponse mais je ne pense pas t'avoir été d'une grande aide mais merci...