Komutlar

From FreeCAD Documentation
Revision as of 23:08, 7 January 2019 by Skywalker21 (talk | contribs)

Bir FreeCAD komutu, bir araç çubuğu düğmesine bastığınızda veya bir klavye kısayolu yazdığınızda yürütülen şeydir. 3D görünümün yakınlaştırma düzeyini değiştirmek veya bakış açısını döndürmek gibi çok basit bir işlem olabileceği gibi iletişim kutularını açıp kullanıcının belirli görevleri gerçekleştirmesini bekleyecek karmaşık bir sistem olabilir.

Her FreeCAD komutunun Komut Referansı sayfasında görünen benzersiz bir adı vardır. Komutlar aşağıdakileri çalıştırarak, bir araç çubuğu düğmesi, bir menü öğesi veya bir python betiğinden veya python konsolundan başlatılabilir:

FreeCADGui.runCommand("my_Command_Name")

Tezgah başına FreeCAD komutları tanımlanmıştır. Tezgahlar normalde FreeCAD açılış anında komut tanımlarını ekleyecektir, bu yüzden komut hazır olur ve ilgili tezgahın etkinleştirilip etkinleştirilmediğine bakılmaksızın FreeCAD başlatıldığı anda kullanılabilir. Bununla birlikte, bazı durumlarda tezgah kodlayıcısı, FreeCAD başlatma işlemini çok fazla yüklememeye, komut tanımlarını sadece tezgah girişinde yüklemeye karar vermiş olabilir. Bu gibi durumlarda, komut yalnızca tezgah etkinleştirildikten sonra kullanılabilir (tezgah seçicisiyle en az bir kere ona geçtiniz.)

FreeCAD komutlarının birçoğu kullanıcı etkileşimi gerektirdiğinden, sadece GUI modunda kullanılabilir, konsol modunda kullanılamaz. Bununla birlikte, kolaylık olması açısından, FreeCAD komutlarının çoğu ya karşılık gelen bir python işlevine (Part.makeBox veya Draft.makeLine gibi) sahip olacak veya bir python komut dosyasında çoğaltılması çok kolay olan bir kod yürütecektir.

Komutlar, C ++ veya Python'da tanımlanabilir.

C ++ komut tanımı örneği (genellikle /Mod/ModuleName/Gui/Command.cpp içinde tanımlanır):

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

ve python'da benzer bir komut (yapılması gereken yer için kural yoktur, her python tezgahı uygun gördüğü şekilde yapar ...)

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