API renommer les corps

Bonjour,

je cherche à faciliter la compréhension et la mise en plan d'un fichier multi-corps. Pour cela, une de mes pistes de réflexion serait de renommer les corps de cette pièce par sous ensemble incrémenté. Le tout via une macro qui me permette de cliquer sur les corps qui sont renommés.

En plus clair et explicite : imaginez un fichier pièce d'un meuble constitué de multiples sous-ensembles : corps, porte, tiroir, etageres. Ces sous-ensembles sont eux-mêmes constitués de plusieurs corps distincts (par exemple pour le tiroir: la façade, le bouton, le fond ,les côtés et l'arrière). Pour que cela soit lisible, je voudrais lancer une macro qui me demande de cliquer sur les corps dans la vue 3D qui constituent le tiroir et renomme ces corps "tiroir [1], tiroir[2], tiroir[3], ... ". Lorsque j'ai identifié toutes les pièces du tiroir, je clique sur le bouton de droite et la macro passe automatiquement au renommage des éléments de porte : "porte [1], porte [2], ..."  Et ainsi de suite pour tous les sous-ensembles. Après plusieurs recherches, J'ai bien trouvé une macro qui permet d'afficher le nom d'un corps quand on clique dessus, que j'ai mixée avec une autre qui permet de renommer avec swbody.name=. Je bute sur la rédation des boucles, notamment du test du clic droit.

Je débute presque dans les API, mes anciennes expériences sont malheureusement totalement oubliées, faute de pratique régulière. Je sais que des experts des API sont actifs ici (j'ai d'ailleurs piqué la macro de sélection dans les tutos de .PL), toute aide dans ce qui doit être assez basique pour eux sera bienvenue.

Merci.

Sébastien

2 « J'aime »

Salut,

Quelque chose d'assez simple et à la portée de tout le monde, est de faire une macro par apprentissage, ainsi, tu verras comment SolidWorks procède !

Sinon, il y a des infos intéressantes ici :

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

Et peut-être ici :

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

1 « J'aime »

Merci pour ce premier retour. J'ai déjà trouvé et exploité le second lien.

Mon problème n'est plus trop sur SW, mais plutôt sur VBA. L'apprentissage des macros sous SW ne me permet pas d'apprendre à coder une boucle et ses évènements de sortie (bouton droit en l'occurence).

Mon script serait :

  • implémentation dans le code d'une liste d'appellations (tiroir, étagère, ...) -> je vais chercher, pas trop un problème je pense
  • au lancement de la macro, il me demande de cliquer sur les éléments de la première liste (tiroir) -> partiellement OK
  • je clique sur X corps successivement avec le bouton de gauche, la macro change le nom des corps en tiroir1, tiroir2,...,  tiroirX ("tiroir" étant le premier sur la liste)-> OK grâce au 2è lien et macro .PL
  • je clique sur le bouton de droite, la macro reprend la boucle juste au dessus en me demandant de cliquer sur les éléments de l'étagère (2è sur la liste) -> C'est là que je bloque
  • Fin de la macro au clic droit sur la dernière pièce de la dernière liste (qui peut être vide).

Après, je chercherai comment faire rentrer la liste par une boite de dialogue au démarrage, mais c'est vraiment accessoire.

Je vais éplucher et tester sur la base du premier lien que je n'avais pas trouvé, il y a des infos très intéressantes dedans à première vue. Mais je ne sais pas si l'action du clic droit est utilisée.

Merci.

2 « J'aime »

Pour le clic rechercher "event click".

Voir cette page :

https://books.google.fr/books?id=ftVsBgAAQBAJ&pg=PA97&lpg=PA97&dq=event+click+solidworks&source=bl&ots=11x9fcPapa&sig=yk4KI0H_hDwF6M2BpRQBoPdH5ow&hl=fr&sa=X&redir_esc=y#v=onepage&q=event%20click%20solidworks&f=false

Ou voir ici :

http://help.solidworks.com/2015/English/api/sldworksapi/Run_SOLIDWORKS_Commands_and_Synthesize_Mouse_Events_Example_VB.htm

http://help.solidworks.com/2012/English/api/sldworksapiprogguide/Overview/Events.htm?id=6328edd0faf9464baf45de5be3f06f30