Les commandes
Introduction
Une commande FreeCAD est ce qui est en cours d’exécution lorsque vous appuyez sur un bouton de la barre d’outils ou tapez un raccourci clavier. Cela peut être une action très simple, comme changer le niveau de zoom de la vue 3D ou faire pivoter le point de vue, ou un système complexe qui ouvrira des boîtes de dialogue et attendra que l'utilisateur exécute des tâches spécifiques.
Chaque commande FreeCAD a un nom unique, qui apparaît dans la page Category: Command_Reference. Les commandes peuvent être lancées à l'aide d'un bouton de la barre d'outils, d'un élément de menu, d'un script python ou de la console python, en exécutant:
FreeCADGui.runCommand("my_Command_Name")
Background
Les commandes FreeCAD sont définies par atelier. Les ateliers ajoutent normalement leurs définitions de commande au moment de l’initialisation de FreeCAD. La commande existe donc et est disponible dès le démarrage de FreeCAD, que le Atelier correspondant ait été activé ou non. Dans certains cas, cependant, l'auteur d'Atelier aurait peut-être décidé de ne pas surcharger le processus de démarrage de FreeCAD et de charger les définitions de commande uniquement à l'initiation du workbench. Dans ce cas, la commande ne sera disponible qu'après l'activation du plan de travail (vous y avez basculé au moins une fois à l'aide du sélecteur de plan de travail).
omme la plupart d’entre elles nécessitent une interaction de l’utilisateur, les commandes FreeCAD ne sont disponibles qu’en mode graphique, et non en mode console. Cependant, pour des raisons pratiques, la plupart des commandes FreeCAD auront une fonction python correspondante (telle que Part.makeBox ou Draft.makeLine) ou exécuteront du code très facile à répliquer dans un script python.
Les commandes peuvent être définies en C ++ ou en Python.
Commands defined in C++
Exemple de définition de commande C ++ (généralement définie dans /Mod/ModuleName/Gui/Command.cpp):
DEF_STD_CMD_A(StdCmdMyCommand);
StdCmdMyCommand::StdCmdMyCommand()
: Command("Std_My_Command")
{
sGroup = QT_TR_NOOP("File");
sMenuText = QT_TR_NOOP("My Command");
sToolTipText = QT_TR_NOOP("Runs my command in the active document");
sWhatsThis = "Std_MyCommand";
sStatusTip = QT_TR_NOOP("Runs my command in the active document");
sPixmap = "MyCommand.svg";
sAccel = "Ctrl+A";
}
void StdCmdExport::activated(int iMsg)
{
// place here the code to be executed when the command is ran
}
bool StdCmdMyCommand::isActive(void)
{
// here you have a chance to return true or false depending if your command must be shown as active or inactive (greyed).
}
// the command must be "registered" in FreeCAD's command system
CommandManager &rcCmdMgr = Application::Instance->commandManager();
rcCmdMgr.addCommand(new StdCmdMyCommand());
Commands defined in Python
et une commande similaire en python (pas de règle pour ce qui doit être fait, chaque atelier python fait comme bon lui semble ...)
from PySide.QtCore import QT_TRANSLATE_NOOP
class MyCommand:
"""Explanation of the command."""
def __init__(self):
"""Initialize variables for the command that must exist at all times."""
pass
def GetResources(self):
"""Return a dictionary with data that will be used by the button or menu item."""
return {'Pixmap': 'MyCommand.svg',
'Accel': "Ctrl+A",
'MenuText': QT_TRANSLATE_NOOP("My_Command", "My Command"),
'ToolTip': QT_TRANSLATE_NOOP("My_Command", "Runs my command in the active document")}
def Activated(self):
"""Run the following code when the command is activated (button press)."""
print("Activated")
def isActive(self):
"""Return True when the command should be active or False when it should be disabled (greyed)."""
return True
# The command must be "registered" with a unique name by calling its class.
FreeCADGui.addCommand('My_Command', MyCommand())
- Démarrer avec FreeCAD
- Installation : Téléchargements, Windows, Linux, Mac, Logiciels supplémentaires, Docker, AppImage, Ubuntu Snap
- Bases : À propos de FreeCAD, Interface, Navigation par la souris, Méthodes de sélection, Objet name, Préférences, Ateliers, Structure du document, Propriétés, Contribuer à FreeCAD, Faire un don
- Aide : Tutoriels, Tutoriels vidéo
- Ateliers : Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Start, Surface, TechDraw, Test, Web