📘 Cours : Création d’add-ons pour FreeCAD
Objectif de la leçon : créer un add-on simple qui ajoute un nouvel environnement de travail avec un bouton, et qui affiche un message lorsqu’on clique dessus.
📁 Étape 1. Préparation du dossier de l’add-on
Assurez-vous d’avoir le dossier :
.../FreeCAD/Mod/HelloWorldAddon/
Si ce n’est pas le cas, créez-le.
💡 Le nom du dossier est important : il doit correspondre au nom du module dans le code.
Nous utiliseronsHelloWorldAddon.
À l’intérieur de ce dossier, créez deux fichiers :
InitGui.pyhello_workbench.py
❗ N’utilisez pas d’espaces ni de caractères cyrilliques dans les noms de fichiers et de dossiers !
📄 Étape 2. Fichier InitGui.py — point d’entrée
Ce fichier est automatiquement lancé par FreeCAD au démarrage s’il se trouve dans le dossier de l’add-on.
Ouvrez-le dans un éditeur et insérez le code suivant :
# InitGui.py
import FreeCADGui
from HelloWorldAddon.hello_workbench import HelloWorldWorkbench
FreeCADGui.addWorkbench(HelloWorldWorkbench())
🔍 Que fait ce code ?
- Importe notre environnement de travail depuis le fichier
hello_workbench.py - Enregistre cet environnement dans l’interface FreeCAD via
FreeCADGui.addWorkbench()
⚠️ Remarque :
from HelloWorldAddon.hello_workbench— iciHelloWorldAddonest le nom du dossier, ethello_workbenchest le nom du fichier sans l’extension.py.
📄 Étape 3. Fichier hello_workbench.py — logique de l’add-on
Maintenant, créons l’environnement de travail lui-même.
Insérez le code suivant dans hello_workbench.py :
# hello_workbench.py
import FreeCAD, FreeCADGui
from PySide import QtGui
# === COMMANDE : ce qui se passe lorsque le bouton est cliqué ===
class HelloWorldCommand:
def GetResources(self):
"""Renvoie les données pour l'affichage de la commande"""
return {
"MenuText": "Say Hello", # Texte dans le menu
"ToolTip": "Show a greeting", # Info-bulle
"Pixmap": "" # Chemin vers l'icône (vide pour l'instant)
}
def Activated(self):
"""Appelé lorsque le bouton est cliqué"""
QtGui.QMessageBox.information(
None,
"FreeCAD Addon",
"Bonjour le monde !\nVous venez de lancer votre premier add-on !"
)
def IsActive(self):
"""Quand la commande est-elle disponible ? (toujours — True)"""
return True
# === ENVIRONNEMENT DE TRAVAIL : regroupe les commandes ===
class HelloWorldWorkbench(FreeCADGui.Workbench):
# Nom qui sera affiché dans la liste
MenuText = "Hello World"
ToolTip = "Mon premier environnement de travail"
def Initialize(self):
"""Appelé lors de l'activation de l'environnement de travail"""
# Liste des noms de commandes
self.list = ["HelloWorldCommand"]
# Ajout de la barre d'outils
self.appendToolbar("Hello Tools", self.list)
# Ajout d'un élément au menu
self.appendMenu("Hello World", self.list)
def GetClassName(self):
"""Méthode requise pour les environnements de travail Python"""
return "Gui::PythonWorkbench"
# === ENREGISTREMENT DE LA COMMANDE ===
FreeCADGui.addCommand("HelloWorldCommand", HelloWorldCommand())
🔍 Analyse du code par parties :
1. Commande (HelloWorldCommand)
GetResources()— décrit l’apparence de la commande dans l’interfaceActivated()— ce qui se passe au clicIsActive()— quand le bouton est actif (par exemple, seulement s’il y a un document)
2. Environnement de travail (HelloWorldWorkbench)
- Hérite de
FreeCADGui.Workbench - La méthode
Initialize()ajoute les commandes à la barre d’outils et au menu GetClassName()dit à FreeCAD : « c’est un environnement de travail Python »
3. Enregistrement
FreeCADGui.addCommand()lie le nom `