howto:3d:freecad:creermacro

Ceci est une ancienne révision du document !


Créer un macro dans FreeCAD

Lorsqu'on applique une recette de fabrication régulièrement on n'a très vite envie d'automatiser le process pour ne plus avoir à répéter les mêmes actions. C'est le but d'une macro, une série d'actions automatisées qui nous fera gagner du temps et évitera des erreurs de manipulation. C'est donc ce qui est arrivé à un adhérent du Fablab avec qui nous avons mis au point un flux de travail lui permettant de soustraire des volumes d'une surface non plane en utilisant divers ateliers et une succession d'étapes bien définies. Ce flux de travail étant désormais fiable, nous proposons d'écrire une macro afin de l'automatiser.

Les macros FreeCAD sont en langage Python. Depuis le menu Macro il est possible d'enregistrer une macro à partir des actions faites à la souris. Une autre méthode pour connaître les commandes consiste à ouvrir le panneau de console Python et les récupérer au fur et à mesure pour comprendre le principe.

Cet article vise donc à consigner sous forme de mémo les différents éléments qui nous ont servi à écrire la macro finale.

La sélection à la souris d'un élément se traduit en python par

Gui.Selection.addSelection('Nom du fichier','Nom du corps','Nom de l'objet.élémentT',X,Y,Z)

exemple : Gui.Selection.addSelection('Modele3D','Body','Revolution.Surface4',-1.76854,-14.5652,120)

Pour construire cette commande dans une macro il nous faut donc récupérer des variables à partir des éléments d'un fichier et du modèle :

docname=FreeCAD.ActiveDocument.Name → récupère le nom du fichier dans la variable “docname”

sel=FreeCADGui.Selection.getSelection → récupère la sélection dans la variable de type liste nommée “sel”

bodyname = sel[0]._Body.Name → récupère le nom du corps de l'objet sélectionné dans la variable texte nommée “bodyname”

selObjectName = sel[0].Name → renvoie le nom de du premier objet de la sélection - dans notre exemple : “Revolution”

SubElement = FreeCADGui.Selection.getSelectionEx()[0] → renvoie le type d'élément du sous objet (face, vertex,edge…) du premier objet de la sélection dans la variable de type liste “SubElement”

subElemName = SubElement.SubElementNames[0]→ renvoie le nom du premier sous objet du premier objet de la sélection dans la variable texte “subElemName”

myelement = selObjectName+'.'+subElemName→ permet de construire la chaine de caractère qui sera injectée dans la commande qui nous servira à sélectionner l'objet :

Gui.Selection.addSelection(docname,bodyname,myelement)

  • howto/3d/freecad/creermacro.1747821359.txt.gz
  • Dernière modification : 2025/05/21 11:55
  • de admin