FreeCAD Scripting Basics/de: Difference between revisions

From FreeCAD Documentation
(Created page with "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, gena...")
No edit summary
(31 intermediate revisions by the same user not shown)
Line 43: Line 43:
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 {{incode|App}}, und GUI Funktionalität, genannt {{incode|Gui}}. Diese beiden Module heißen daher App und Gui. Auf diese beiden Module kann auch von Skripten ausserhalb des Interpreters unter den Namen {{incode|FreeCAD}} bzw. {{incode|FreeCADGui}} zugegriffen werden.
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 {{incode|App}}, und GUI Funktionalität, genannt {{incode|Gui}}. Diese beiden Module heißen daher App und Gui. Auf diese beiden Module kann auch von Skripten ausserhalb des Interpreters unter den Namen {{incode|FreeCAD}} bzw. {{incode|FreeCADGui}} zugegriffen werden.


* Im {{incode|App}} 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.
<div class="mw-translate-fuzzy">
* Im '''App Modul''' 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.
</div>


* Im {{incode|Gui}} 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.
<div class="mw-translate-fuzzy">
* Im '''GUI-Modul''', werden Sie Werkzeuge für den Zugriff und das Management GUI-Elemente zu finden, wie die Arbeitsbereiche und ihre Symbolleisten, und, noch interessanter, die grafische Darstellung aller Inhalte in FreeCAD.
</div>


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.
<div class="mw-translate-fuzzy">
Die Auflistung des ganzen Inhalts jener Module ist eine kontraproduktive Aufgabe, da sie ziemlich schnell entlang der FreeCAD Entwicklung wachsen. Aber die zwei zur Verfügung gestellten Browsing-Tools(der Klassenbrowser und die Python-Hilfe) sollten Ihnen, jederzeit, eine komplette und aktuelle Dokumentation dieser Module geben.
</div>


[[#top|top]]
[[#top|Anfang]]


===Die App und GUI Objekte===
<div class="mw-translate-fuzzy">
===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.
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.
</div>

As already mentioned, in FreeCAD everything is separated into core and representation. This includes the 3D objects. You can access defining properties of objects (called features in FreeCAD) via the {{incode|App}} module, and change the way they are represented on screen via the {{incode|Gui}} module. For example, a cube has properties that define it (like width, length, height) that are stored in an {{incode|App}} object, and representation properties (like faces color, drawing mode) that are stored in a corresponding {{incode|Gui}} object.


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.
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 {{incode|App}} Objekt in deinem Dokument gibt es ein entsprechendes {{incode|Gui}} Objekt. Tatsächlich hat das Dokument selbst sowohl ein {{incode|App}} als auch ein {{incode|Gui}} Objekt.
<div class="mw-translate-fuzzy">
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 {{incode|App}} Objekte verfügbar sind.
Für jedes App-Objekt in Ihrem Dokument, existiert ein entsprechendes GUI-Objekt. Das Dokument selbst hat tatsächlich auch App, und ein GUI-Objekt. Dies ist natürlich nur dann gültig, wenn Sie FreeCAD mit seiner vollen Schnittstelle starten. In der Kommandozeilen-Version besteht keine GUI, so dass nur App-Objekte verfügbar sind. Beachten Sie, dass der GUI-Teil der Objekte jedemal neu generiert wird, sobald ein ein App-Objekt markiert wird als "neu zu berechnen"(Zum Beispiel, wenn sich einer ihrer Parameter ändert), so dass Änderungen, die Sie direkt am GUI-Objekt vorgenommen haben, verloren gehen können.
Beachte, dass der {{incode|Gui}} Teil von Objekten jedes Mal neu erzeugt wird, wenn ein {{incode|App}} Objekt als "neu zu berechnen" markiert wird (z. B. wenn sich einer seiner Parameter ändert), so dass alle direkt am {{incode|Gui}} Objekt vorgenommenen Änderungen verloren gehen können.
</div>


Um auf den {{incode|App}} Teil von etwas zuzugreifen, gib ein:
<div class="mw-translate-fuzzy">
Um auf den App Teil von etwas zuzugreifen, tippen Sie:
</div>


{{Code|code=
{{Code|code=
Line 79: Line 67:
}}
}}


wobei {{incode|"ObjectName"}} der Name deines Objektes ist. Du kannst auch eingeben:
<div class="mw-translate-fuzzy">
wobei "ObjectName" der Name Ihres Objektes ist. Sie können auch eingeben:
</div>


{{Code|code=
{{Code|code=
Line 87: Line 73:
}}
}}


Um auf den {{incode|Gui}} Teil desselben Objekts zuzugreifen, gib ein:
<div class="mw-translate-fuzzy">
Um den GUI-Teil des gleichen Objekts zuzugreifen, geben Sie ein:
</div>


{{Code|code=
{{Code|code=
Line 95: Line 79:
}}
}}


wobei {{incode|"ObjectName"}} der Name deines Objektes ist. Du kannst auch eingeben:
<div class="mw-translate-fuzzy">
wobei "ObjectName" der Name Ihres Objektes ist. Sie können auch eingeben:
</div>


{{Code|code=
{{Code|code=
Line 103: Line 85:
}}
}}


Wenn du dich im Befehlszeilenmodus befindest und keine GUI hast, wird in der letzten Zeile {{incode|None}} zurückgegeben.
<div class="mw-translate-fuzzy">
Wenn wir kein GUI (zum Beispiel sind wir im Kommandozeilen-Modus) haben, wird die letzte Zeile None zurückgeben.
</div>


[[#top|top]]
[[#top|Anfang]]

<div class="mw-translate-fuzzy">
=== Die Dokument-Objekte ===


===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.
</div>


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 {{incode|App}} and {{incode|Gui}} objects. The {{incode|App}} object contains your actual geometry definitions, while the {{incode|Gui}} 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 {{incode|Gui}} object.
In FreeCAD befindet sich deine gesamte Arbeit in Dokumenten. Ein Dokument enthält deine Geometrie und kann in einer Datei gespeichert werden. Mehrere Dokumente können gleichzeitig geöffnet werden. Das Dokument hat, wie die darin enthaltene Geometrie {{incode|App}} und {{incode|Gui}} Objekte. Das {{incode|App}} Objekt die verschiedenen Ansichten deines Dokuments enthält. Du kannst mehrere Fenster öffnen, von denen jedes deine Arbeit mit einem anderen Zoomfaktor oder aus einer anderen Richtung betrachtet. Diese Ansichten sind alle Teil deines {{incode|Gui}} Dokument Objekts.


Um auf den {{incode|App}} Teil des aktuell geöffneten (aktiven) Dokuments zuzugreifen, gib ein:
<div class="mw-translate-fuzzy">
Für den Zugriff auf den App-Teil des aktuell geöffneten (aktiv) Dokuments, schreiben Sie:
</div>


{{Code|code=
{{Code|code=
Line 125: Line 99:
}}
}}


Um ein neues Dokument zu erstellen, eingeben:
Um ein neues Dokument zu erstellen, gib ein:


{{Code|code=
{{Code|code=
Line 131: Line 105:
}}
}}


Um auf den {{incode|Gui}} Teil des aktuell geöffneten (aktiven) Dokuments zuzugreifen, gib ein:
<div class="mw-translate-fuzzy">
Für den Zugriff auf den GUI-Teil des aktuell geöffneten (aktiv) Dokuments, geben Sie ein:
</div>


{{Code|code=
{{Code|code=
Line 139: Line 111:
}}
}}


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


{{Code|code=
{{Code|code=
Line 145: Line 117:
}}
}}


[[#top|top]]
[[#top|Anfang]]


==Das Verwenden zusätzlicher Module==
<div class="mw-translate-fuzzy">
== 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 Module/de|Part Modul]] verwendet den OpenCascade Kern, und kann daher die Erstellung und Bearbeitung von [http://en.wikipedia.org/wiki/Boundary_representation B-rep] Geometrien behandeln, wofür OpenCascade entwickelt wurde. Das [[Mesh Module/de|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.
Die {{incode|FreeCAD}} und {{incode|FreeCADGui}} Module sind ausschließlich Verantwortlich für das Erstellen und Verwalten von Objekten in einem FreeCAD Dokument. Sie tun eigentlich nichts mehr, wie zum Beispiel Geometrie erstellen oder verändern. Das liegt daran, dass diese Geometrie aus mehreren Typen bestehen kann und daher zusätzliche Module erfordert, die jeweils für die Verwaltung eines bestimmten Geometrietyps zuständig ist. Beispielsweise ist das [[Part Module/de|Part Modul]] unter Verwendung des OpenCascade Kernels in der Lage, Geometrie vom Typ [http://en.wikipedia.org/wiki/Boundary_representation BRep] zu erstellen und zu verändern. Wohingegen das [[Mesh Module/de|Netz Module]] in der Lage ist, Netzobjekte zu erstellen und zu modifizieren. Auf diese Weise ist FreeCAD in der Lage, eine Vielzahl von Objekttypen zu handhaben, die alle im selben Dokument koexistieren können, und neue Typen können in Zukunft leicht hinzugefügt werden.
</div>


[[#top|Anfang]]
The {{incode|FreeCAD}} and {{incode|FreeCADGui}} 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|Part Module]], using the OpenCascade kernel, is able to create and manipulate [http://en.wikipedia.org/wiki/Boundary_representation BRep] type geometry. Whereas the [[Mesh Module|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|top]]

<div class="mw-translate-fuzzy">
=== Erzeugen von Objekten ===


===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:
</div>


Jedes Modul hat seine eigene Art, mit Geometrie umzugehen, aber eine Sache, die sie normalerweise alle tun können, ist, Objekte im Dokument zu erstellen. Das FreeCAD Dokument kennt aber auch die verfügbaren Objekttypen, die von den Modulen bereitgestellt werden:
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:


{{Code|code=
{{Code|code=
Line 169: Line 133:
}}
}}


listet alle möglichen Objekte auf, die du erstellen kannst. Lass uns zum Beispiel ein Netz (gehandhabt vom Modul {{incode|Mesh}}) und ein Teil (gehandhabt vom Modul {{incode|Part}}) erstellen:
<div class="mw-translate-fuzzy">
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):
</div>


{{Code|code=
{{Code|code=
Line 178: Line 140:
}}
}}


Das erste Argument ist der Objekttyp, das zweite der Name des Objekts. Unsere beiden Objekte sehen fast gleich aus: Sie enthalten noch keine Geometrie, und die meisten ihrer Eigenschaften sind die gleichen, wenn du sie mit {{incode|dir(myMesh)}} und {{incode|dir(myPart)}} inspizierst. Mit einer Ausnahme {{incode|myMesh}} hat eine {{incode|Mesh}} Eigenschaft und {{incode|myPart}} hat eine {{incode|Shape}} Eigenschaft. Dort werden die Netz und Teildaten gespeichert werden. Lass uns zum Beispiel einen {{incode|Part}} Würfel erstellen und speichern ihn in unserem {{incode|myPart}} Objekt:
<div class="mw-translate-fuzzy">
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:
</div>


{{Code|code=
{{Code|code=
Line 188: Line 148:
}}
}}


Du könntest versuchen, den Würfel innerhalb der {{incode|Mesh}} Eigenschaft des {{incode|myMesh}} Objekts zu speichern, aber es wird ein Fehler zurückgegeben. Das liegt daran, dass jede Eigenschaft dazu gemacht ist, nur einen bestimmten Typ zu speichern. In einer {{incode|Mesh}} Eigenschaft kannst du nur Dinge speichern, die mit dem {{incode|Mesh}} Modul erstellt wurden. Beachte, dass die meisten Module auch eine Verknüpfung zum Hinzufügen ihrer Geometrie zum Dokument haben:
<div class="mw-translate-fuzzy">
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:
</div>


{{Code|code=
{{Code|code=
Line 198: Line 156:
}}
}}


[[#top|top]]
[[#top|Anfang]]

<div class="mw-translate-fuzzy">
=== Ändern von Objekten ===


===Ändern von Objekten===
Ändern eines Objekts geschiet auf dieselbe Weise:
</div>


Das Ändern eines Objekts erfolgt auf die gleiche Weise:
Modifying an object is done in the same way:


{{Code|code=
{{Code|code=
Line 214: Line 168:
}}
}}


Wollen jetzt wir die Form in eine größere ändern:
Nun wollen wir die Form durch eine größere verändern:


{{Code|code=
{{Code|code=
Line 221: Line 175:
}}
}}


[[#top|top]]
[[#top|Anfang]]

<div class="mw-translate-fuzzy">
=== Abfragen von Objekten ===


===Abfragen von Objekten===
Sie können jederzeit den Typ eines Objekts wie folgt ermitteln:
</div>


Du kannst dir jederzeit den Typ eines solchen Objekts ansehen:
You can always look at the type of an object like this:


{{Code|code=
{{Code|code=
Line 236: Line 186:
}}
}}


oder prüfe, ob ein Objekt von einem der Basisobjekte (Part Formelement, Netz Formelement usw.) abgeleitet ist:
<div class="mw-translate-fuzzy">
der feststellen, ob ein Objekt von einer der Grunformen abgeleitet wurde(Part Feature, Mesh Feature, etc):
</div>


{{Code|code=
{{Code|code=
Line 244: Line 192:
}}
}}


Jetzt kannst du wirklich anfangen, mit FreeCAD zu spielen! Eine vollständige Liste der verfügbaren Module und ihrer Werkzeuge findest du im [[:Category:API|Category:API]] Abschnitt.
<div class="mw-translate-fuzzy">
Jetzt können Sie wirklich anfangen, mit FreeCAD zu spielen! Um herauszufinden, was Sie mit dem [[Part Module/de|Part Modul]] tun können, Lesen Sie die [[Topological data scripting/de|Part scripting]]-Seite, oder die [[Mesh Scripting/de|Mesh Skripting in FreeCAD]]-Seite für die Arbeit mit dem [[Mesh Module/de|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 Module/de|Draft-Modul]] auch [[Draft API/de|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/de|Category:API]]-Abschnitt.
</div>


[[#top|Anfang]]
[[#top|Anfang]]


{{Docnav/de
{{Docnav/de
|[[Python_scripting_tutorial/fe|Python Tutorium Skripten]]
|[[Python_scripting_tutorial/de|Python Tutorium Skripten]]
|[[Scripting_examples/de|Übersicht Python Skripten Seiten]]
|[[Scripting_examples/de|Übersicht Python Skripten Seiten]]
}}
}}

Revision as of 17:09, 9 September 2020

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 Ansicht → Paneele → Python Konsole 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:

Der FreeCAD 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:

The FreeCAD class browser

Beginne also hier mit der Eingabe von App. oder Gui. und schau was passiert. Eine andere, allgemeinere Python Methode, um den Inhalt von Modulen und Klassen zu untersuchen, ist die Verwendung des print(dir()) Befehls. Wenn du beispielsweise print(dir()) eingibst, werden alle derzeit in FreeCAD geladenen Module aufgelistet. print(dir(App)) 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 Pfeil oben or Pfeil unten.

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 Hilfe findest Du einen mit Automatische Python Moduldokumentation 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 Python Skripten Dokumentation 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 App, und GUI Funktionalität, genannt Gui. Diese beiden Module heißen daher App und Gui. Auf diese beiden Module kann auch von Skripten ausserhalb des Interpreters unter den Namen FreeCAD bzw. FreeCADGui zugegriffen werden.

  • Im App 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 Gui 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 App Objekt in deinem Dokument gibt es ein entsprechendes Gui Objekt. Tatsächlich hat das Dokument selbst sowohl ein App als auch ein Gui 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 App Objekte verfügbar sind. Beachte, dass der Gui Teil von Objekten jedes Mal neu erzeugt wird, wenn ein App Objekt als "neu zu berechnen" markiert wird (z. B. wenn sich einer seiner Parameter ändert), so dass alle direkt am Gui Objekt vorgenommenen Änderungen verloren gehen können.

Um auf den App Teil von etwas zuzugreifen, gib ein:

myObject = App.ActiveDocument.getObject("ObjectName")

wobei "ObjectName" der Name deines Objektes ist. Du kannst auch eingeben:

myObject = App.ActiveDocument.ObjectName

Um auf den Gui Teil desselben Objekts zuzugreifen, gib ein:

myViewObject = Gui.ActiveDocument.getObject("ObjectName")

wobei "ObjectName" der Name deines Objektes ist. Du kannst auch eingeben:

myViewObject = App.ActiveDocument.ObjectName.ViewObject

Wenn du dich im Befehlszeilenmodus befindest und keine GUI hast, wird in der letzten Zeile None zurückgegeben.

Anfang

Die Dokument Objekte

In FreeCAD befindet sich deine gesamte Arbeit in Dokumenten. Ein Dokument enthält deine Geometrie und kann in einer Datei gespeichert werden. Mehrere Dokumente können gleichzeitig geöffnet werden. Das Dokument hat, wie die darin enthaltene Geometrie App und Gui Objekte. Das App Objekt die verschiedenen Ansichten deines Dokuments enthält. Du kannst mehrere Fenster öffnen, von denen jedes deine Arbeit mit einem anderen Zoomfaktor oder aus einer anderen Richtung betrachtet. Diese Ansichten sind alle Teil deines Gui Dokument Objekts.

Um auf den App Teil des aktuell geöffneten (aktiven) Dokuments zuzugreifen, gib ein:

myDocument = App.ActiveDocument

Um ein neues Dokument zu erstellen, gib ein:

myDocument = App.newDocument("Document Name")

Um auf den Gui Teil des aktuell geöffneten (aktiven) Dokuments zuzugreifen, gib ein:

myGuiDocument = Gui.ActiveDocument

Um auf die aktuelle Ansicht zuzugreifen, gib ein:

myView = Gui.ActiveDocument.ActiveView

Anfang

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 tun eigentlich nichts mehr, wie zum Beispiel Geometrie erstellen oder verändern. Das liegt daran, dass diese Geometrie aus mehreren Typen bestehen kann und daher zusätzliche Module erfordert, die jeweils für die Verwaltung eines bestimmten Geometrietyps zuständig ist. Beispielsweise ist das Part Modul unter Verwendung des OpenCascade Kernels in der Lage, Geometrie vom Typ BRep zu erstellen und zu verändern. Wohingegen das Netz Module in der Lage ist, Netzobjekte zu erstellen und zu modifizieren. Auf diese Weise ist FreeCAD in der Lage, eine Vielzahl von Objekttypen zu handhaben, die alle im selben Dokument koexistieren können, und neue Typen können in Zukunft leicht hinzugefügt werden.

Anfang

Erzeugen von Objekten

Jedes Modul hat seine eigene Art, mit Geometrie umzugehen, aber eine Sache, die sie normalerweise alle tun können, ist, Objekte im Dokument zu erstellen. Das FreeCAD Dokument kennt aber auch die verfügbaren Objekttypen, die von den Modulen bereitgestellt werden:

FreeCAD.ActiveDocument.supportedTypes()

listet alle möglichen Objekte auf, die du erstellen kannst. Lass uns zum Beispiel ein Netz (gehandhabt vom Modul Mesh) und ein Teil (gehandhabt vom Modul Part) erstellen:

myMesh = FreeCAD.ActiveDocument.addObject("Mesh::Feature", "myMeshName")
myPart = FreeCAD.ActiveDocument.addObject("Part::Feature", "myPartName")

Das erste Argument ist der Objekttyp, das zweite der Name des Objekts. Unsere beiden Objekte sehen fast gleich aus: Sie enthalten noch keine Geometrie, und die meisten ihrer Eigenschaften sind die gleichen, wenn du sie mit dir(myMesh) und dir(myPart) inspizierst. Mit einer Ausnahme myMesh hat eine Mesh Eigenschaft und myPart hat eine Shape Eigenschaft. Dort werden die Netz und Teildaten gespeichert werden. Lass uns zum Beispiel einen Part Würfel erstellen und speichern ihn in unserem myPart Objekt:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Du könntest versuchen, den Würfel innerhalb der Mesh Eigenschaft des myMesh Objekts zu speichern, aber es wird ein Fehler zurückgegeben. Das liegt daran, dass jede Eigenschaft dazu gemacht ist, nur einen bestimmten Typ zu speichern. In einer Mesh Eigenschaft kannst du nur Dinge speichern, die mit dem Mesh Modul erstellt wurden. Beachte, dass die meisten Module auch eine Verknüpfung zum Hinzufügen ihrer Geometrie zum Dokument haben:

import Part
cube = Part.makeBox(2, 2, 2)
Part.show(cube)

Anfang

Ändern von Objekten

Das Ändern eines Objekts erfolgt auf die gleiche Weise:

import Part
cube = Part.makeBox(2, 2, 2)
myPart.Shape = cube

Nun wollen wir die Form durch eine größere verändern:

biggercube = Part.makeBox(5, 5, 5)
myPart.Shape = biggercube

Anfang

Abfragen von Objekten

Du kannst dir jederzeit den Typ eines solchen Objekts ansehen:

myObj = FreeCAD.ActiveDocument.getObject("myObjectName")
print(myObj.TypeId)

oder prüfe, ob ein Objekt von einem der Basisobjekte (Part Formelement, Netz Formelement usw.) abgeleitet ist:

print(myObj.isDerivedFrom("Part::Feature"))

Jetzt kannst du wirklich anfangen, mit FreeCAD zu spielen! Eine vollständige Liste der verfügbaren Module und ihrer Werkzeuge findest du im Category:API Abschnitt.

Anfang