Module Creation/it


Aggiungere in FreeCAD dei nuovi moduli e dei nuovi ambienti di lavoro è molto facile.

Chiameremo modulo qualsiasi estensione di FreeCAD, invece un ambiente di lavoro (workbench) è una configurazione speciale della GUI che raggruppa alcune barre degli strumenti e dei menu.

Di solito si crea un nuovo modulo che contiene un proprio ambiente di lavoro.

I moduli possono essere programmati in C++ o in Python, o in una miscela di entrambi, ma i file di inizializzazione (init) del modulo devono essere in Python.

Impostare un nuovo modulo con questi file init è facile, e può essere fatto manualmente o con lo Strumento per la costruzione di FreeCAD.

Utilizzare lo strumento di costruzione di FreeCAD

Creare un nuovo modulo dell'applicazione in FreeCAD è piuttosto semplice. Nella struttura di sviluppo FreeCAD esiste lo Strumento per la costruzione di FreeCAD (fcbt) che fa per voi le cose più importanti. Si tratta di uno script Python e si trova in:

 trunk/src/Tools/fcbt.py

Quando l'interprete Python è stato installato correttamente è possibile eseguire lo script da una riga di comando con:

 python fcbt.py

Viene visualizzato il seguente menu:

 FreeCAD Build Tool
 Usage:
    fcbt <command name> [command parameter] 
 possible commands are:
  - DistSrc         (DS)   Build a source Distr. of the current source tree
  - DistBin         (DB)   Build a binary Distr. of the current source tree
  - DistSetup       (DI)   Build a Setup Distr. of the current source tree
  - DistSetup       (DUI)  Build a User Setup Distr. of the current source tree
  - DistAll         (DA)   Run all three above modules
  - NextBuildNumber (NBN)  Increase the Build Number of this Version
  - CreateModule    (CM)   Insert a new FreeCAD Module in the module directory
  - CreatePyModule  (CP)   Insert a new FreeCAD Python Module in the module directory

 For help on the modules type:
   fcbt <command name> ?

Al prompt dei comandi digitare CM per avviare la creazione di un modulo:

 Insert command: ''CM''

Ora viene chiesto di specificare un nome per il nuovo modulo. Supponiamo, ad esempio, di chiamarlo TestMod:

 Please enter a name for your application: ''TestMod''

Dopo aver premuto Invio fcbt inizia a copiare tutti i file necessari per il nuovo modulo in una nuova cartella in

 trunk/src/Mod/TestMod/

Dopo tutti i file vengono modificati con il nome del nuovo modulo. Ora l'unica cosa da fare è aggiungere i due nuovi progetti "appTestMod" e "appTestModGui" al proprio workspace (su Windows) o al proprio makefile targets (unix). Ecco fatto!

Impostare manualmente un nuovo modulo

Per creare un nuovo modulo servono due cose:

In aggiunta, è anche possibile mettere un file Init.py. La differenza è che il file InitGui.py viene caricato solo quando FreeCAD viene eseguito in modalità GUI mentre il file Init.py viene sempre caricato. Dato che stiamo creando un ambiente di lavoro, lo metteremo in InitGui.py, perché gli ambienti di lavoro, ovviamente, vengono utilizzati solo in modalità GUI.

Creare un nuovo ambiente (workbench)

All'interno del file InitGui.py, una delle prima cosa da fare è quella di definire un ambiente di lavoro. Ecco il codice minimo che è possibile utilizzare:

 class MyWorkbench ( Workbench ):
 "My workbench object"
 Icon = """
 /* XPM */
 static const char *test_icon[]={
 "16 16 2 1",
 "a c #000000",
 ". c None",
 "................",
 "................",
 "..############..",
 "..############..",
 "..############..",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "................",
 "................"};
 """
 MenuText = "My Workbench"
 ToolTip = "This is my extraordinary workbench"
 
         def GetClassName(self):
                return "Gui::PythonWorkbench"
 
 def Initialize(self):
 import myModule1, myModule2
 self.appendToolbar("My Tools", ["MyCommand1","MyCommand2"])
 self.appendMenu("My Tools", ["MyCommand1","MyCommand2"])
 Log ("Loading MyModule... done\n")
 
 def Activated(self):
                # do something here if needed...
 Msg ("MyWorkbench.Activated()\n")
 
 def Deactivated(self):
                # do something here if needed...
 Msg ("MyWorkbench.Deactivated()\n")
 
 FreeCADGui.addWorkbench(MyWorkbench)

L'ambiente di lavoro deve avere tutti questi attributi definiti:

Creare dei comandi di FreeCAD in Python

Di solito si definiscono tutti gli strumenti (chiamati comandi in FreeCAD) in un altro modulo, quindi si importa quel modulo prima di creare le barre degli strumenti e i menu. Questo è il codice minimo che è possibile utilizzare per definire un comando:

 import FreeCAD,FreeCADGui
 
 class MyTool:
 "My tool object"
 
        def GetResources(self):
                return {"MenuText": "My Command",
                        "Accel": "Ctrl+M",
                        "ToolTip": "My extraordinary command",
                        "Pixmap"  : """
 /* XPM */
 static const char *test_icon[]={
 "16 16 2 1",
 "a c #000000",
 ". c None",
 "................",
 "................",
 "..############..",
 "..############..",
 "..############..",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "......####......",
 "................",
 "................"};
 """}
 
        def IsActive(self):
                if FreeCAD.ActiveDocument == None:
                        return False
                else:
                        return True
 
 def Activated(self):
                # do something here...
 
 FreeCADGui.addCommand('MyCommand1',MyTool())

Creare dei comandi di FreeCAD in C++

Ancora da documentare.

Link

Online version: "http://www.freecadweb.org/wiki/index.php?title=Module_Creation/it&oldid=287478"

Navigation menu