Comment déplacer une cotation dans une MEP à l'aide d'une macro ?

Bonjour,

Je souhaite déplacer des cotations dans ma mise en plan. Etant autodidacte sur les macros de SolidWorks, j'utilise l'enregistrement de macro pour m'aiguiller cependant là je bute. En effet suite au déplacement d'une cote la macro enregistrée me retourne :

boolstatus = Part.Extension.SelectByID2("D1@Vue de mise en plan1", "DIMENSION", 3.20196294133094E-02, 0.121152137881271, 0, False, 0, Nothing, 0)'Position de la cote au départ

boolstatus = Part.Extension.SelectByID2("D1@Vue de mise en plan1", "DIMENSION", 8.08807508164743E-02, 0.118580499912683, 0, False, 0, Nothing, 0)'Position de la cote une fois déplacé

J'en conclu donc que les nombres en gras définissent la position de la cote. Cependant quand j'exécute ces lignes de commande même si le nombre change la cote ne se déplace absolument pas. Je dois mal mi prendre. Pourriez-vous venir à mon aide ?

Merci d'avance.

Bonjour,

En fait l'instruction utilisée est SELECT : donc ça ne sert qu'à sélectionner la cote !

Pour déplacer celle-ci, il faut utiliser SETPOSITION :
http://help.solidworks.com/2011/English/api/sldworksapi/SolidWorks.Interop.sldworks~SolidWorks.Interop.sldworks.IAnnotation~SetPosition.html

voir les exemples ici :

https://forum.solidworks.com/thread/49057

http://help.solidworks.com/2011/English/api/sldworksapi/Insert_a_Note_Example_VB.htm

 

Bonjour,

Juste par curiosité : quel est l'intérêt de déplacer une cote via une macro ? Mon mulot fait ça très bien !

 

3 « J'aime »

+ 1000 a @ TicTic

je ne vois en ne comprends pas l'utilité d'une macro pour déplacer une cote dans une mise en plan sur SW

ćest par curiosité pour quoi faire ???

la cote a déplacer c'est une cote créé dans la mép ou une cote qui vient du 3 D

@+

 

Bonjour,

Merci ".PL" pour votre réponse, je suis en train de chercher comment utiliser "SETPOSITION". J'avoue avoir un peu de mal mais je ne suis qu'au début de mes recherches.

Pour répondre sur l'utilité de bouger la position d'une cote dans une MEP, il s'agit en fait de positionner toujours au même endroit des cotes qui change de position en fonction des dimensions de la pièce tout en gardant le même nom. Plus précisément : J'ai une pièce ayant plusieurs fonctions actives ou non et des dimensions qui changent également. Le tout est configuré à partir d'un fichier Excel qui vient exécuter une macro qui place les bonnes dimensions de chaque cotation. Je n'utilise pas les familles de pièce. Une fois l'importation de ces dimensions et des fonctions actives ou non la pièce et reconstruite puis importée dans ma MEP. Les cotations sont importées également mais apparaissent aléatoirement (Même avec option "comme sur esquisse"). J'ai donc décidé de fixer leur position sur le plan. Car l'utilisateur lambda doit juste configurer le fichier Excel et avoir un plan imprimable sans avoir à repositionner des côtes.

Merci à vous tous

Je ne sais pas si ça peut t'aider, mais dans les options de mise en plan, je te conseille de décocher :

Réduire l'espacement en cas de suppression ou de modification de cotes (ajout ou modification de tolérances, texte, etc.)

 

http://help.solidworks.com/2012/french/SolidWorks/sldworks/HIDD_OPTIONS_DRAWINGS_GENERAL.htm

 

Et pourquoi ne pas prendre simplement

l'option cotation automatique de S W 

si c'est des pièces sensiblement identique

les cotations devraient en théorie être à la même place  sauf ajout des ref de côtes 

Merci pour vos suggestions cependant j'ai déjà testé beaucoup des possibilités logiciels sur l'importation ou la mise en forme des cotations et aucunes ne permettent un résultat normé exploitable sans retouches en effet les cotations automatiques se chevauchent et n'apparaissent pas en respectant les règles du dessin industriel. Cela permet juste de dégrossir l'affichage mais pas de le rendre normé. De plus j'ai également des cotations angulaires qui elles sont les pires à importer en automatique en effet en fonction de l'angle la cote peut se retrouver à l'autre bout du plan ^^

Je suis toujours en train d'essayer d'utiliser "SetPosition" mais je galère dans les déclarations. Si quelqu'un a un exemple simple, qui reprendrait par exemple la sélection d'une cote au nom "N" et a une position "X,Y" pour la faire passer à la position "X',Y'" je suis preneur ^^

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.ActivateView("Vue de mise en plan1")

boolstatus = Part.Extension.SelectByID2("N", "DIMENSION", X, Y, 0, True, 0, Nothing, 0)

….

boolstatus = .............SetPosition(X', Y', 0)

……

End Sub