FreeCAD Scripting Basics/de

Python skripten in FreeCAD
FreeCAD wurde von Grund auf neu entwickelt, um vollständig von Python Skripten gesteuert zu werden. Nahezu alle Teile von FreeCAD, wie z.B. die Oberfläche, die Szeneninhalte und sogar die Darstellung dieser Inhalte in den 3D Ansichten, sind über den eingebauten Python Interpreter oder über eigene Skripte zugänglich. Damit ist FreeCAD wahrscheinlich eine der am weitesten anpassbaren Engineering Anwendungen, die heute verfügbar sind.

Wenn du nicht mit Python vertraut bist, empfehlen wir dir, nach Tutorien im Internet zu suchen, um so einen kurzen Blick auf seine Struktur zu bekommen. Python ist eine sehr einfache Sprache zu lernen, vor allem, weil es innerhalb eines Interpreters ausgeführt werden kann, wobei von einfachen Befehlen bis zu vollständigen Programmen alles dynamisch ausgeführt werden kann. Wenn du das Fenster mit der Aufschrift "Python Konsole", wie unten dargestellt nicht siehst, kannst du es unter aktivieren.

Der Interpreter
Über den Interpreter, können Sie auf alle Ihre systeminstallierten Python-Module zugreifen, sowie die eingebaute FreeCAD Module und alle zusätzlichen Module, die Sie später installiert haben. Der folgende Screenshot zeigt den Python-Interpreter:



Vom Interpreter aus kannst du Python Code ausführen und durch die verfügbaren Klassen und Funktionen blättern. FreeCAD bietet einen sehr handlichen Klassenbrowser zur Erkundung der FreeCAD Welt: Wenn du den Namen einer bekannten Klasse gefolgt von einem Punkt eingibst (d.h. wenn du etwas von dieser Klasse hinzufügen möchtest), öffnet sich ein Klassenbrowser Fenster, in dem du zwischen den verfügbaren Unterklassen und Methoden navigieren kannst. Wenn du etwas auswählst, wird ein zugehöriger Hilfetext (falls vorhanden) angezeigt:



Beginne also hier mit der Eingabe von oder  und schau was passiert. Eine andere, allgemeinere Python Methode, um den Inhalt von Modulen und Klassen zu untersuchen, ist die Verwendung des Befehls. Wenn du beispielsweise eingibst, werden alle derzeit in FreeCAD geladenen Module aufgelistet. zeigt dir alles innerhalb des App Moduls usw.

Eine weitere nützliche Funktion des Interpreters ist die Möglichkeit, zurück zu gehen in der Befehlshistorie und eine Zeile des Codes wiederzubekommen, den du bereits früher getippt hast. Um durch die Befehlshistorie zu navigieren, benutze einfach or.

Mit Rechtsklick im Interpreter Fenster hast du auch einige andere Optionen, wie z. B. Kopie der gesamten Historie (nützlich, wenn du mit Dingen experimentieren möchtest, bevor du ein vollständiges Skript davon erstellst), oder füge einen Dateinamen mit vollständigem Pfad ein.

Anfang

Python Hilfe
Im FreeCAD findest Du einen mit  beschrifteten Eintrag, der ein Browserfenster öffnet, das eine vollständige, in Echtzeit generierte Dokumentation aller dem FreeCAD Interpreter zur Verfügung stehenden Python Module enthält, einschließlich Python- und FreeCAD Einbaumodule, systeminstallierte Module und FreeCAD Zusatzmodule. Die dort verfügbare Dokumentation hängt davon ab, wie viel Aufwand jeder Modulentwickler in die Dokumentation seines Codes gesteckt hat, aber normalerweise haben Python Module den Ruf, ziemlich gut dokumentiert zu sein. Dein FreeCAD Fenster muss geöffnet bleiben, damit dieses Dokumentationssystem funktioniert. Der Eintrag gibt dir einen schnelle Verknüpfung zum Vielnutzer Verteiler Wiki Bereich.

Anfang

Eingebaute Module
Da FreeCAD für den Betrieb ohne grafische Benutzeroberfläche (GUI) konzipiert ist, ist fast die gesamte Funktionalität in zwei Gruppen unterteilt: Kernfunktionalität, genannt, und GUI Funktionalität, genannt. Diese beiden Module heißen daher App und Gui. Auf diese beiden Module kann auch von Skripten ausserhalb des Interpreters unter den Namen  bzw. zugegriffen werden.


 * Im findest Du alles, was mit der Anwendung selbst zu tun hat, wie Methoden zum Öffnen oder Schließen von Dateien, und mit den Dokumenten, wie das Setzen des aktiven Dokuments oder das Auflisten seines Inhalts.


 * Im Modul, wirst du Werkzeuge für den Zugriff und die Verwaltung von GUI Elementen finden, wie die Arbeitsbereiche und ihre Werkzeugleisten, und, noch interessanter, die grafische Darstellung aller FreeCAD Inhalte.

Eine Auflistung des Inhalts dieser Module ist nicht sehr nützlich, da sie mit der Entwicklung von FreeCAD recht schnell wachsen. Aber die beiden zur Verfügung gestellten Browsing Werkzeuge (der Klassenbrowser und die Python Hilfe) sollte dir jederzeit eine vollständige und aktuelle Dokumentation liefern.

Anfang

Die App und GUI Objekte
Wie gesagt, in FreeCAD, wird alles zwischen Kern und Darstellung getrennt. Dazu gehören auch die 3D-Objekte. Sie können auf die Definition von Eigenschaften von Objekten (so genannte Features in FreeCAD) über das App Modul zugreifen, und die Art ändern, wie sie auf dem Schirm über das Gui Modul dargestellt werden. Zum Beispiel hat ein Würfel Eigenschaften, um ihn zu definieren, wie Breite, Länge, Höhe, die in einem App-Objekt gespeichert sind, und Darstellung-Eigenschaften, wie Flächen-Farbe, Zeichnen-Modus, die in einem entsprechenden GUI-Objekt gespeichert sind.

Diese Handlungsweise ermöglicht eine sehr breite Palette von Anwendungen, wie mit Algorithmen nur aem Teil der Definition von Features zu arbeiten, ohne die Notwendigkeit, sich um den visuellen Teil kümmern zu müssen, oder sogar den Inhalt des Dokumentes zu nichtgraphischen Anwendung, wie Listen, Spreadsheets, oder Element-Analysen umzuleiten.

Für jedes Objekt in deinem Dokument gibt es ein entsprechendes  Objekt. Tatsächlich hat das Dokument selbst sowohl ein als auch ein   Objekt. Dies gilt natürlich nur, wenn du FreeCAD mit seiner vollständigen Benutzeroberfläche ausführst. In der Befehlszeilenversion gibt es keine GUI, so dass nur Objekte verfügbar sind. Beachte, dass der Teil von Objekten jedes Mal neu erzeugt wird, wenn ein  Objekt als "neu zu berechnen" markiert wird (z. B. wenn sich einer seiner Parameter ändert), so dass alle direkt am  Objekt vorgenommenen Änderungen verloren gehen können.

Um auf den Teil von etwas zuzugreifen, gib ein:

wobei "ObjectName" der Name Ihres Objektes ist. Sie können auch eingeben:

Um den GUI-Teil des gleichen Objekts zuzugreifen, geben Sie ein:

wobei "ObjectName" der Name Ihres Objektes ist. Sie können auch eingeben:

Wenn wir kein GUI (zum Beispiel sind wir im Kommandozeilen-Modus) haben, wird die letzte Zeile None zurückgeben.

top

Die Dokument-Objekte
In FreeCAD wird Ihre gesamte Arbeit in Dokumenten hinterlegt. Ein Dokument enthält Ihre Geometrie und kann zu einer Datei gespeichert werden. Es können auch mehrere Dokumente zur gleichen Zeit geöffnet werden. Das Dokument, wie auch die darin enthalten Geometrie, hat App und GUI-Objekte. App-Objekt enthält Ihre tatsächliche Geometrie Definitionen, während dasdie GUI-Objekt die verschiedenen Ansichten von Ihrem Dokument enthält. Sie können mehrere Fenster öffnen, jedes, um Ihre Arbeit mit einem anderen Zoomfaktor oder Ansicht zu betrachten. Diese Ansichten sind alle Teil des GUI-Objekts Ihres Dokuments.

In FreeCAD all your work resides inside documents. A document contains your geometry and can be saved to a file. Several documents can be opened at the same time. The document, like the geometry contained inside, has and  objects. The object contains your actual geometry definitions, while the  object contains the different views of your document. You can open several windows, each one viewing your work with a different zoom factor or from a different direction. These views are all part of your document's object.

Für den Zugriff auf den App-Teil des aktuell geöffneten (aktiv) Dokuments, schreiben Sie:

Um ein neues Dokument zu erstellen, eingeben:

Für den Zugriff auf den GUI-Teil des aktuell geöffneten (aktiv) Dokuments, geben Sie ein:

Um auf die gegenwärtige Ansicht zuzugreifen, tippen Sie:

top

Das Verwenden zusätzlicher Module
Die FreeCAD und FreeCADGui Module sind ausschließlich Verantwortlich für das Erstellen und Verwalten von Objekten in einem FreeCAD Dokument. Sie haben nichts zu tun, mit dem Erstellen oder Ändern von Geometrie. Das liegt daran, dass die Geometrie aus mehreren Typen bestehen kann, somit werden sie durch zusätzliche Module verwaltet, jeweils zuständig für die Verwaltung eines bestimmten Geometrie-Typs. Zum Beispiel, Part Modul verwendet den OpenCascade Kern, und kann daher die Erstellung und Bearbeitung von B-rep Geometrien behandeln, wofür OpenCascade entwickelt wurde. Das Mesh-Modul ist in der Lage, Mesh-Objekte zu erzeugen und zu modifizieren. Auf diese Weise ist FreeCAD in der Lage, eine Vielzahl von Objekttypen, die alle im selben Dokument koexistieren können, zu handhaben, und neue Arten könnten in der Zukunft leicht hinzugefügt werden.

The and  modules are only responsible for creating and managing objects in the FreeCAD document. They don't actually do anything more such as creating or modifying geometry. This is because that geometry can be of several types, and therefore requires additional modules, each responsible for managing a certain geometry type. For example, the Part Module, using the OpenCascade kernel, is able to create and manipulate BRep type geometry. Whereas the Mesh Module is able to build and modify mesh objects. In this manner FreeCAD is able to handle a wide variety of object types, that can all coexist in the same document, and new types can easily be added in the future.

top

Erzeugen von Objekten
Jedes Modul hat seine eigene Art und Weise seiner Geometrie zu behandeln, aber eines können sie in der Regel alle, neue Objekte im Dokument erzeugen. Aber das FreeCAD Dokument ist sich auch der verfügbaren, durch die Module zur Verfügung gestellten Objektarten bewusst:

Each module has its own way of dealing with geometry, but one thing they usually all can do is create objects in the document. But the FreeCAD document is also aware of the available object types provided by the modules:

listet Ihnen alle möglichen Objekte, die Sie erstellen können. Zum Beispiel, erstellen wir ein Mesh (behandelt durch das Mesh-Modul) und einen Teil (behandelt durch das Part-Modul):

Das erste Argument ist die Objektart, das zweite der Name desObjekts. Unsere beiden Objekte sehen fast gleich aus: Sie enthalten noch keine Geometrie, und die meisten ihrer Eigenschaften sind die selben, wenn Sie sie mit dir (myMesh) und dir (myPart) untersuchen. Bis auf eines, myMesh hat eine "Mesh"-Eigenschaft und "Part" hat eine "Shape"-Eigenschaft(Gestalt). Das ist, wo die Mesh-und Part-Daten gespeichert sind. Zum Beispiel erstellen wir ein Teil Würfel und speichern Sie es in unserem MyPart Objekt:

Falls Sie versuchen, den Würfel innerhalb der Mesh-Eigenschaft des Objekts myMesh zu speichern, wird ein Fehler gemeldet, da es sich um den falschen Typ handelt. Das passiert, weil die Eigenschaften so vorgegeben sind, das sie nur einen bestimmten Typ speichern. In der "myMesh"-Mesh-Eigenschaft können Sie nur speichern, was mit dem Mesh-Modul erstellt wurde. Beachten Sie, dass die meisten Module auch eine Verknüpfung haben, über die sie ihre Geometrie zum Dokument hinzufügen:

top

Ändern von Objekten
Ändern eines Objekts geschiet auf dieselbe Weise:

Modifying an object is done in the same way:

Wollen jetzt wir die Form in eine größere ändern:

top

Abfragen von Objekten
Sie können jederzeit den Typ eines Objekts wie folgt ermitteln:

You can always look at the type of an object like this:

der feststellen, ob ein Objekt von einer der Grunformen abgeleitet wurde(Part Feature, Mesh Feature, etc):

Jetzt können Sie wirklich anfangen, mit FreeCAD zu spielen! Um herauszufinden, was Sie mit dem Part Modul tun können, Lesen Sie die Part scripting-Seite, oder die Mesh Skripting in FreeCAD-Seite für die Arbeit mit dem Mesh-Modul. Beachten Sie, dass, obwohl das Teil- und Mesh-Modul die vollständigsten und am weitesten verbreitetet sind, haben andere Module wie das Draft-Modul auch scripting-APIs, die für Sie nützlich sein können. Eine vollständige Liste der einzelnen Module und ihrer verfügbaren Tools finden Sie im Category:API-Abschnitt.

Anfang