Command/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
(Created page with "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 exis...")
Line 6: Line 6:
FreeCADGui.runCommand("my_Command_Name")
FreeCADGui.runCommand("my_Command_Name")


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).
FreeCAD commands are defined per workbench. Workbenches will normally add their command definitions at FreeCAD init time, so the command exists and is available as soon as FreeCAD is started, no matter if the corresponding workbench has been activated yet or not. In some cases, however, the workbench author might have decided, to not overload too much the FreeCAD startup process, to load the command definitions only at workbench init. In those cases, the command will only be available after the workbench has been activated (you have switched to it at least once with the workbench selector).


As most of them require user interaction, FreeCAD commands are only available in GUI-mode, and not in console mode. However, for convenience, most FreeCAD commands will either have a corresponding python function (like Part.makeBox or Draft.makeLine), or will execute code that is very easy to replicate in a python script.
As most of them require user interaction, FreeCAD commands are only available in GUI-mode, and not in console mode. However, for convenience, most FreeCAD commands will either have a corresponding python function (like Part.makeBox or Draft.makeLine), or will execute code that is very easy to replicate in a python script.

Revision as of 07:39, 24 November 2018

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")

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).

As most of them require user interaction, FreeCAD commands are only available in GUI-mode, and not in console mode. However, for convenience, most FreeCAD commands will either have a corresponding python function (like Part.makeBox or Draft.makeLine), or will execute code that is very easy to replicate in a python script.

Commands can be defined either in C++ or in Python.

Example of a C++ command definition (usually defined in /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());

and a similar command in python (no rule for where it must be done, each python workbench does as it sees fit...)

class MyCommand:

    def __init__(self):
        # you can add things here like defining some variables that must exist at all times

    def GetResources(self):
        return {'Pixmap'  : 'MyCommand.svg',
                    'Accel' : "Ctrl+A",
                    'MenuText': QtCore.QT_TRANSLATE_NOOP("My_Command", "My Command"),
                   'ToolTip': QtCore.QT_TRANSLATE_NOOP("My_Command", "Runs my command in the active document")}

    def Activated(self):
        # place here the code to be executed when the command is ran

    def isActive(self):
        # 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
FreeCADGui.addCommand('My_Command',MyCommand())