Module Creation/de

Hinzufügen von neuen Modulen und Arbeitsbereichen zu FreeCAD ist sehr einfach. Ein Modul ist jede Erweiterung von FreeCAD, während ein Arbeitsbereich eine spezielle GUI-Konfiguration, die einige Werkzeugleisten und Menüs gruppiert. Normalerweise kannst Du ein neues Modul erstellen, das seinen eigenen Arbeitsbereich enthält.

Module können in C++ oder Python programmiert werden oder in einem Mix aus beiden, aber die Modul-Init-Dateien müssen in Python geschrieben sein. Die Erstellung eines neuen Module mit diesen Init-Dateien ist einfach und kann entweder manuell oder mit dem FreeCAD-Build-Werkzeug erfolgen.

Das FreeCAD-Build-Werkzeug benutzen
Erzeugen eines Anwendungsmoduls in FreeCAD ist ziemlich einfach. Das FreeCAD Build Tool (fcbt) erledigt die meiste Schwerarbeit. Es ist ein Python-Skript, das im FreeCAD-Entwicklungsbaum zu finden ist: trunk/src/Tools/fcbt.py Wenn der Python-Interpreter korrekt installiert ist, lässt sich das Skript auf der Kommandozeile ausführen mit python fcbt.py Es wird das folgende Menü zeigen: FreeCAD Build Tool Usage: fcbt [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 ? Die Eingabe von CM am Kommandozeilen-Prompt starten das Erzeugen eines Moduls: Insert command: CM Du wirst gebeten, einen Namen für das neue Modul einzugeben. Nehmen wir TestMod für dieses Beispiel: Please enter a name for your application: TestMod Nach Drücken von startet 'fcbt' mit dem Kopieren aller notwendigen Dateien für Dein Modul in einen neuen Ordner unterhalb von trunk/src/Mod/TestMod/ Dann werden alle Dateien mit dem neuen Modulnamen modifiziert. Das Einzige, was Du noch tun musst, die beiden Projekte appTestMod und appTestModGui zu Deinem Arbeitsplatz (unter Windows) oder zu Deinen Makefile-Targets (Unix) hinzuzufügen. Das war's!

Ein neues Modul manuell erstellen
Du brauchst zwei Dinge zur Erstellung eines neuen Moduls:


 * Ein neuer Ordner im FreeCAD-Mod-Ordner (entweder in InstalledPath/FreeCAD/Mod oder in UserPath/.FreeCAD/Mod). Der Name ist frei wählbar.
 * In diesem Ordner eine InitGui.py-Datei. Diese Datei wird automatisch beim Start von FreeCAD ausgeführt (sie kann leer sein, aber einfach zum Testen, schreib print("Hallo Welt") hinein)

Zusätzlich kannst Du eine Datei Init.py hinzufügen. Die Datei 'InitGui.py' wird nur geladen, wenn FreeCAD im GUI-Modus ausgeführt wird, die Datei 'Init.py' wird immer geladen. Weil wir einen Arbeitsbereich erstellen, werden wir den Code allerdings in 'InitGui.py' schreiben, denn Arbeitsbereiche sind GUI-Werkzeuge.

Einen neuen Arbeitsbereich erstellen
Inside the InitGui.py file, the first thing you will want to do is define a workbench. You can use the following example as a template: The workbench must have all these attributes defined:
 * Icon - An XPM image. Most image software (like GIMP) can convert an image into xpm format, which is a text file. You can then paste the contents here.
 * MenuText - The workbench name as it appears in the workbenches list
 * Tooltip - Defines the tooltip text
 * Initialize - Executed when FreeCAD loads and creates all menus and toolbars that the workbench will use. If you are going to make your module in C++, you can also define your menus and toolbars inside the C++ module rather than the InitGui.py file. The important thing is that they are created now, before the module is activated.
 * Activated - Executed when the user switches to your workbench
 * Deactivated - Executed when the user switches away to another workbench or leaves FreeCAD

Creating FreeCAD commands in Python
Usually you define all your tools (called Commands in FreeCAD) in another module, then import that module before creating the toolbars and menus. Here is a simple example that can be used as a template: Note there are three methods defined:
 * GetResources - Returns a dictionary with the visual attributes of your tool. The Accel parameter defines an optional shortcut key.
 * IsActive - Determines whether or not the command is active. Inactive commands are indicated by a greyed-out icon in the menus and toolbars.
 * Activated - Executed when the Command is called, whether through a toolbar button, menu or script API call.

Creating FreeCAD Commands in C++
To Be Documented

Links

 * Some examples how power users have extended FreeCAD with various custom external workbenches are collected in External workbenches
 * Other example in Power user hub Workbench creation
 * Creating Commands Command