Modul Erstellung

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Module Creation and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎română • ‎svenska • ‎русский • ‎中文(中国大陆)‎

This documentation is not finished. Please help and contribute documentation.

Gui Command explains how tools should be documented. See Draft ShapeString for an example of a well documented tool. Browse Category:UnfinishedDocu to see incomplete pages like this one. See Category:Command Reference for all commands.

See WikiPages to learn about editing the wiki pages, and go to Help FreeCAD to learn about other ways in which you can contribute.

Überblick

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 Bau 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 unter:

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 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> ?

Gib an der Eingabeaufforderung CM ein, um die Erstellung eines Moduls zu starten:

Insert command: ''CM''

Du wirst nun 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 Enter 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 Ziele (Unix) hinzuzufügen. Das war's!

Manuelles Einrichten eines neuen Moduls

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). Du kannst es nennen, wie du willst.
  • 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 auch 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. Da wir jedoch einen Arbeitsbereich erstellen, legen wir unseren Code in InitGui.py ab, da Arbeitsbereiche reine GUI Werkzeuge sind.

Einen neuen Arbeitsbereich erstellen

Innerhalb der Datei InitGui.py wirst du als erstes einen Arbeitsbereich definieren wollen. Das folgende Beispiel kannst du als Vorlage verwenden:

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)

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:

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

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

Zu Dokumentieren

Verweise