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
Zuerst wirst Du in der Datei InitGui.py einen Arbeitsbereich definieren wollen. Du kannst das folgende Beispiel als Vorlage benutzen:

Für einen Arbeitsbereich müssen die folgenden Attribute definiert werden:
 * Icon - Ein XPM-Bild. Die meisten Bild-(Verarbeitungs-)Programme (wie GIMP) können ein Bild ins XPM-Format (eine Textdatei) konvertieren. Du kannst den Inhalt hierher kopieren.
 * MenuText - Der Arbeitsbereichname, wie er in der Arbeitsbereichliste erscheint
 * Tooltip - Definiert den Tooltip-Text
 * Initialize - Wird beim Start von FreeCAD ausgeführt und erzeugt alle Menü und Werkzeugleisten, die der Arbeitsbereich benutzen wird. Wenn Du Dein Modul in C++ erstellst, kann Du auch die Menüs und Werkzeugleisten im C+-Modul erstellen anstatt in der 'InitGui.py'-Datei. Wichtig ist, dass sie jetzt erstellt werden, bevor das Modul erzeugt wird.
 * Activated - Wird ausgeführt, wenn der Benutzer zu Deinem Arbeitsbereich wechselt
 * Deactivated - Wird ausgeführt, wenn der Benutzer zu einem anderem Arbeitsbereich wechselt oder FreeCAD verlässt

FreeCAD-Befehle in Python erstellen
Normalerweise definierst Du alle Werkzeuge (in FreeCAD 'Befehle' genannt) in einem weiteren Modul, importierst dieses Modul vor der Erstellung der Werkzeugleisten und Menüs. Hier ist ein einfaches Beispiel, das als Vorlage benutzt werden kann:

Beachte, dass drei Methoden definiert werden:
 * GetResources - Liefert ein Dictionary mit den visuellen Attributen Deines Werkzeugs zurück. Der Accel-Parameter definiert ein optionales Standardtastenkürzel.
 * IsActive - Legt fest, ob der Befehl aktiv ist oder nicht. Inaktive Befehle sind durch ein ausgegrautes Piktogramm in Menüs und Werkzeugleisten gekennzeichnet.
 * Activated - Ausgeführt, wenn der Befehl aufgerufen wird, entweder durch einen Werkzeugleisten-Button, Menü oder Script-API-Aufruf.

FreeCAD-Befehle in C++ erstellen
To Be Documented

Verweise

 * Einige Beispiele, wie Power-User FreeCAD durch verschiedene benutzerdefinierte Arbeitsbereiche erweitert haben, sind in Externe Arbeitsbereiche versammelt
 * Weitere Beispiele in Power user hub Erstellung von Arbeitsbereichen
 * Befehle erstellen Befehl