Command/ru: Difference between revisions

From FreeCAD Documentation
(Created page with "== Основы ==")
No edit summary
Line 6: Line 6:
[[Command/ru|Команда]] это то, что выполняется, когда вы нажимаете кнопку на панели инструментов или набираете комбинацию клавиш. Это может быть очень простое действие, например изменение уровня масштабирования [[3D view/ru|трёхмерного вида]] или поворот точки зрения или сложная система, которая откроет диалоговые окна и дождитесь, когда пользователь выполнит определенные задачи.
[[Command/ru|Команда]] это то, что выполняется, когда вы нажимаете кнопку на панели инструментов или набираете комбинацию клавиш. Это может быть очень простое действие, например изменение уровня масштабирования [[3D view/ru|трёхмерного вида]] или поворот точки зрения или сложная система, которая откроет диалоговые окна и дождитесь, когда пользователь выполнит определенные задачи.


Каждая команда FreeCAD имеет уникальное имя, которое появляется на странице [[:Category:Command_Reference]]. Команды могут запускаться с помощью кнопки панели инструментов, элемента меню, [[python]] скрипта или [[консоли Python]], запустив:
Каждая команда FreeCAD имеет уникальное имя, которое появляется на странице [[:Category:Command_Reference]]. Команды могут запускаться с помощью кнопки панели инструментов, элемента меню, [[python/ru|python]] скрипта или [[Python_console/ru|консоли Python]], запустив:


{{Code|code=
{{Code|code=

Revision as of 23:52, 27 July 2021

Вступление

Команда это то, что выполняется, когда вы нажимаете кнопку на панели инструментов или набираете комбинацию клавиш. Это может быть очень простое действие, например изменение уровня масштабирования трёхмерного вида или поворот точки зрения или сложная система, которая откроет диалоговые окна и дождитесь, когда пользователь выполнит определенные задачи.

Каждая команда FreeCAD имеет уникальное имя, которое появляется на странице Category:Command_Reference. Команды могут запускаться с помощью кнопки панели инструментов, элемента меню, python скрипта или консоли Python, запустив:

FreeCADGui.runCommand("my_Command_Name")

Основы

Команды FreeCAD определяются отдельно для каждого верстака. Верстаки обычно добавляют свои определения команд во время запуска FreeCAD, поэтому команда существует и доступна сразу после запуска FreeCAD, независимо от того, был ли активирован соответствующий верстак или нет. Однако в некоторых случаях автор рабочей среды, возможно, решил не перегружать/нагружать процесс запуска FreeCAD и поэтому загрузил определения команд только при запуске рабочей среды. В этих случаях команда будет доступна только после активации рабочего стола (если вы переключились на него по крайней мере один раз с помощью переключателя верстака).

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 and/or macro.

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

Назначение команд в C++

Example of a C++ command definition, usually defined following the structure 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());

Назначение команд в Python

Example of a Python command definition, it can be placed in a directory like Mod/ModuleName/tools/commands.py.

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

Примеры

See Line drawing function.