Python scripting tutorial/de: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
(46 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>
{{docnav/de|[[Introduction to Python/de|Einführung in Python]]|[[FreeCAD Scripting Basics/de|FreeCAD Skripte-Grundlagen]]}}
{{docnav/de|[[Introduction to Python/de|Einführung in Python]]|[[FreeCAD Scripting Basics/de|FreeCAD Skripten Grundlagen]]}}


{{TutorialInfo/de
{{TutorialInfo/de
|Topic=Programming
|Topic/de=Programmierung
|Level=Intermediate
|Level/de=Intermediate
|Time=
|Time=
|Author=
|Author=
Line 27: Line 27:
In diesem Tutorial werden wir an ein paar einfachen Beispielen arbeiten, um dir den Einstieg zu erleichtern, aber es gibt auch viel mehr zu diesem Thema [[Power Users Hub/de|Dokumentation über Python Skripting]] auf diesem Wiki. Wenn du völlig neu in Python bist und verstehen willst, wie es funktioniert, haben wir auch eine grundlegende [[introduction to Python/de|Einführung in Python]].
In diesem Tutorial werden wir an ein paar einfachen Beispielen arbeiten, um dir den Einstieg zu erleichtern, aber es gibt auch viel mehr zu diesem Thema [[Power Users Hub/de|Dokumentation über Python Skripting]] auf diesem Wiki. Wenn du völlig neu in Python bist und verstehen willst, wie es funktioniert, haben wir auch eine grundlegende [[introduction to Python/de|Einführung in Python]].


"'Wichtig!' Bevor Du mit dem Python-Skripting fortfährst, gehe zum {{MenuCommand/de|BearbeitenEinstellungenAllgemeinAusgabefenster}} und aktiviere 2 Kästchen:
<div class="mw-translate-fuzzy">
'''Wichtig!''' Bevor Sie mit dem Python scripting loslegen, sollten Sie noch zwei Ankreuzfelder im Menü {{MenuCommand|Bearbeiten->Einstellungen->Allgemein->Ausgabefenster}} (ganz unten) aktivieren:
* Interne Python-Meldungen auf Ausgabefenster umleiten
* Interne Python-Meldungen auf Ausgabefenster umleiten
* Interne Python-Fehlermeldungen auf Ausgabefenster umleiten
* Interne Python-Fehlermeldungen auf Ausgabefenster umleiten
Gehen Sie dann ins Menü {{MenuCommand|Ansicht->Paneele}} und klicken Sie auf ''Ausgabefenster''. Dies wird Ihnen eine Menge Ärger ersparen.
Dann gehe zu {{MenuCommand/de|AnsichtPaneele}} und wähle:
* Ausgabefenster
</div>
Das erspart Dir eine Menge Ärger!


== Python Code schreiben ==
<div class="mw-translate-fuzzy">
Es gibt zwei einfache Wege, Python Code in FreeCAD zu schreiben: Über die Python Konsole (verfügbar im Menü AnsichtPaneelePython Konsole) oder über den Makro Editor (Werkzeuge → Makros). In der Konsole schreibst Du nacheinander Python Befehle, die ausgeführt werden, wenn Du die Eingabetaste drückst, während die Makros ein komplexeres Skript aus mehreren Zeilen enthalten können, das erst bei der Ausführung des Makros ausgeführt wird.
== Python-Code schreiben ==
Es gibt zwei einfache Wege, um Python-Programmcode in FreeCAD zu schreiben: Über die Python-Konsole (Menü: {{MenuCommand|Ansicht->Paneele->Python-Konsole}}) oder über den Makro-Editor (Menü: {{MenuCommand|Werkzeuge->Makros}}). In der Konsole werden die Python-Befehle zeilenweise nacheinander eingegeben und mit der Eingabetaste ausgeführt, wohingegen Makros komplexere Skripte enthalten können, die viele Zeilen lang sind und beim Ausführen des Makros nacheinander ausgeführt werden.
</div>


[[Image:Screenshot_pythoninterpreter.jpg|center|frame|Die Python-Konsole in FreeCAD]]
[[Image:Screenshot_pythoninterpreter.jpg|center|frame|Die FreeCAD Python Konsole]]


In diesem Tutorial werden Sie beide Methoden kennenlernen, also entweder durch Kopieren/Einfügen von einzelnen Zeilen in die Python-Konsole und drücken der {{KEY|Eingabetaste}} oder alternativ durch Kopieren/Einfügen des gesamten Programmcodes in ein neues Makro-Fenster.
In diesem Tutorial wirst Du beide Methoden kennenlernen, also entweder durch Kopieren/Einfügen von einzelnen Zeilen in die Python Konsole und drücken der {{KEY|Eingabetaste}} oder alternativ durch Kopieren/Einfügen des gesamten Programmcodes in ein neues Makro Fenster.


== Erkunden von FreeCAD ==
== Erkunden von FreeCAD ==
Wir beginnen damit, ein neues und leeres Dokument zu erstellen:
Wir beginnen damit, ein neues leeres Dokument zu erstellen:


{{Code|code=
{{Code|code=
Line 50: Line 48:
}}
}}


Wenn Sie dies in die Python-Konsole eingeben, werden Sie bemerken, dass nach dem Eintippen von ''FreeCAD.'' ein neues Fenster erscheint, dass eine Autovervollständigung des gesuchten Befehls anbietet. Vorteilhaft ist dabei auch, dass jeder angebotene Befehl eine Kurzinfo über die Funktion des Befehls anzeigt, sobald man den Mauszeiger darüber stehen lässt. Dies macht es umso einfacher, die verschiedenen Möglichkeiten des Programms zu erkunden. Bevor Sie ''newDocument'' auswählen, sollten Sie sich auch die anderen verfügbaren Optionen ansehen.
Wenn Du dies in die Python Konsole eingibst, wirst Du bemerken, dass nach dem Eintippen von ''FreeCAD.'' ein neues Fenster erscheint, dass eine Autovervollständigung des gesuchten Befehls anbietet. Vorteilhaft ist dabei auch, dass jeder angebotene Befehl eine Kurzinfo über die Funktion des Befehls anzeigt, sobald man den Mauszeiger darüber stehen lässt. Dies macht es umso einfacher, die verschiedenen Möglichkeiten des Programms zu erkunden. Bevor Du ''newDocument'' auswählst, sieh Dir die anderen verfügbaren Optionen an.


[[Image:Screenshot_classbrowser.jpg|center|frame|Die Autovervollständigungsfunktion in der Python-Konsole von FreeCAD]]
[[Image:Screenshot_classbrowser.jpg|center|frame|Der Autovervollständigungsmechanismus der FreeCAD Pythonkonsole]]


Nun wird unser neues Dokument erstellt. Dies ist ähnlich wie das Drücken der Schaltfläche "Neues Dokument" in der Symbolleiste. Tatsächlich tun die meisten Schaltflächen in FreeCAD nichts anderes, als ein oder zwei Zeilen Python Code auszuführen. Noch besser, Du kannst eine Option in {{MenuCommand/de|Bearbeiten→ Einstellungen → Allgemein → Makro}} auf "Skriptbefehle in der Python Konsole anzeigen" setzen. Dies wird in der Konsole den gesamten Python Code ausgeben, der beim Drücken von Knöpfen ausgeführt wird. Sehr nützlich, um zu lernen, wie man Aktionen in Python reproduziert.
<div class="mw-translate-fuzzy">
Nach dem Drücken der Eingabetaste wird ein neues Dokument erzeugt. Dies ist vergleichbar mit dem Drücken der Schaltfläche ''Neues Dokument erstellen'' in der Werkzeugleiste. Tatsächlich wird beim Drücken von Schaltflächen in FreeCAD meistens lediglich ein Python-Code ausgeführt. Noch besser ist es, wenn man im Menü {{MenuCommand|Bearbeiten->Einstellungen->Allgemein->Makro}} die Option ''Skript-Befehle in Pythonkonsole anzeigen'' aktiviert. Dadurch wird beim Drücken von Schaltflächen der dazugehörige Python-Code in der Konsole angezeigt, was das Erlernen der Python-Befehle erleichtert.
</div>


Kehren wir nun zu unserem Dokument zurück. Schauen wir uns an, was wir damit machen können:
Kehren wir nun zu unserem Dokument zurück. Schauen wir uns an, was wir damit machen können:
Line 64: Line 60:
}}
}}


Erkunden Sie die verfügbaren Möglichkeiten. Namen, die mit einem Großbuchstaben beginnen, bezeichnen üblicherweise Attribute (Variablen bzw. Eigenschaften), während Namen, die mit Kleinbuchstaben beginnen, meistens aufrufbaren Funktionen (so genannte "Methoden") kennzeichnen. Hingegen beziehen sich Namen, die mit einem Unterstrich beginnen, auf die interne Programmierung des Moduls und sind im Normalfall nicht für die Verwendung durch den Benutzer gedacht. Wir werden nun eine der verfügbaren Methoden nutzen, um ein neues Objekt in under Dokument einzufügen:
Erkunde die verfügbaren Möglichkeiten. Üblicherweise sind Namen, die mit einem Großbuchstaben beginnen, Attribute, sie enthalten einen Wert, während Namen, die mit einem Kleinbuchstaben beginnen, Funktionen (auch Methoden genannt) sind, sie "tun etwas". Namen, die mit einem Unterstrich beginnen, sind normalerweise für die interne Arbeit des Moduls da, und Du solltest dich nicht um sie kümmern. Lasse uns eine der Methoden verwenden, um ein neues Objekt zu unserem Dokument hinzuzufügen:


{{Code|code=
{{Code|code=
Line 76: Line 72:
}}
}}


Nun erscheint unser Würfel. Viele der Schaltflächen für Objekte in FreeCAD tun eigentlich zwei Dinge: das Objekt einfügen und das Dokument neuberechnen lassen. Wenn Sie oben die Option ''Skript-Befehle in Pythonkonsole anzeigen'' aktiviert haben, dann können Sie dies nun leicht überprüfen, indem Sie die Schaltfläche für eine Kugel anklicken und sich anschließend die Ausgabekonsole ansehen, in der die beiden Befehle erscheinen sollten.
Siehst du? Jetzt ist unsere Box erschienen! Viele der Schaltflächen, mit denen in FreeCAD Objekte hinzugefügt werden, tun eigentlich 2 Dinge: das Objekt hinzufügen und neu berechnen. Wenn Du oben die Option "lich zwei Dinge: das Objekt einfügen und das Dokument neuberechnen lassen. Wenn Du oben die Option ''Zeige Skript Befehle in Pythonkonsole" eingeschaltet hast, versuche nun, eine Kugel mit der GUI Schaltfläche hinzuzufügen, Du wirst sehen, wie die beiden Zeilen Python Code nacheinander ausgeführt werden.


Was ist mit der "Part::Box", könnten Sie sich nun fragen? Woher kann ich wissen, welche anderen Objekte eingefügt werden können? Dies funktioniert mit folgendem Befehl:
Was ist mit der "Part::Box", wirst Du fragen? Wie kann ich wissen, welche weiteren Objekte hinzugefügt werden können? Es ist alles hier:


{{Code|code=
{{Code|code=
Line 90: Line 86:
}}
}}


Man sieht sofort einige interessante Dinge, wie z.B.:
Du wirst sofort einige sehr interessante Dinge sehen, wie zum Beispiel:


{{Code|code=
{{Code|code=
Line 96: Line 92:
}}
}}


Dieser Befehl zeigt die aktuelle Höhe des Würfels an. Versuchen wir nun, diesen Wert zu ändern:
Dadurch wird die aktuelle Höhe unseres Würfels ausgegeben. Versuchen wir nun, das zu ändern:


{{Code|code=
{{Code|code=
Line 147: Line 143:
Wenn Sie FreeCAD starten, dann lädt die Python-Konsole automatisch die beiden Module ''FreeCAD'' und ''FreeCADGui'' (die in der Konsole auch über ihre Abkürzungen ''App'' und ''Gui'' angesprochen werden können). Sie enthalten allerlei allgemeine Funktionen zum Arbeiten mit Dokumenten und Objekten. Um unser Konzept zu illustrieren, beachten Sie, dass sowohl ''FreeCAD'' als auch ''FreeCADGui'' ein Attribut namens ''ActiveDocument'' enthalten, das das momentan geöffnete Dokument angibt. Dabei sind ''FreeCAD.ActiveDocument'' and ''FreeCADGui.ActiveDocument'' jedoch nicht dasselbe Objekt. Sie sind stattdessen zwei Komponenten eines FreeCAD-Dokumentes, die verschiedene Attribute und Methoden enthalten. Beispielsweise enthält nur ''FreeCADGui.ActiveDocument'' eine Eigenschaft namens ''ActiveView'', die die momentan geöffnete 3D-Ansicht beschreibt.
Wenn Sie FreeCAD starten, dann lädt die Python-Konsole automatisch die beiden Module ''FreeCAD'' und ''FreeCADGui'' (die in der Konsole auch über ihre Abkürzungen ''App'' und ''Gui'' angesprochen werden können). Sie enthalten allerlei allgemeine Funktionen zum Arbeiten mit Dokumenten und Objekten. Um unser Konzept zu illustrieren, beachten Sie, dass sowohl ''FreeCAD'' als auch ''FreeCADGui'' ein Attribut namens ''ActiveDocument'' enthalten, das das momentan geöffnete Dokument angibt. Dabei sind ''FreeCAD.ActiveDocument'' and ''FreeCADGui.ActiveDocument'' jedoch nicht dasselbe Objekt. Sie sind stattdessen zwei Komponenten eines FreeCAD-Dokumentes, die verschiedene Attribute und Methoden enthalten. Beispielsweise enthält nur ''FreeCADGui.ActiveDocument'' eine Eigenschaft namens ''ActiveView'', die die momentan geöffnete 3D-Ansicht beschreibt.


<div class="mw-translate-fuzzy">
== Module ==
== Module ==
Nun fragen Sie sich vielleicht, was man außer "Part::Box" sonst noch tun kann? Die Basisanwendung von FreeCAD ist mehr oder weniger ein leerer Container. Ohne die dazugehörigen Module kann man kaum mehr machen als Dokumente zu öffnen. Die wahre Stärke von FreeCAD liegt in seinen Modulen. Jedes davon fügt nicht nur einen neuen Arbeitsbereich in die Benutzeroberfläche ein, sondern auch neue Python-Befehle und neue Objekttypen. Als Folge davon können viele verschiedene und sogar zueinander inkompatible Objekte im selben Dokument koexistieren. Die wichtigsten Module von FreeCAD werden wir uns im weiteren Verlauf des Tutorials ansehen, d.h. die Module [[Part Module/de|Part]], [[Mesh Module/de|Mesh]], [[Sketcher Workbench/de|Sketcher]] und [[Draft Module/de|Draft]].
Nun fragst du dich sicher, was außer "Part::Box" kann ich noch tun ? Die FreeCAD Basisanwendung ist mehr oder weniger ein leerer Behälter. Ohne seine Module kann es kaum mehr tun, als neue, leere Dokumente erstellen. Die wahre Stärke von FreeCAD liegt in seinen zuverlässigen Modulen.
Jedes von ihnen fügt nicht nur neue Arbeitsbereiche zur Benutzeroberfläche hinzu, sondern auch neue Python Befehle und neue Objekttypen.
</div>
Als Ergebnis können mehrere unterschiedliche oder sogar völlig inkompatible Objekttypen in einem Dokument koexistieren. Die wichtigsten Module in FreeCAD, die wir in diesem Tutorial betrachten werden, sind [[Part Module/de|Part]], [[Mesh Module/de|Netz]], [[Sketcher Workbench/de|Skizzierer]] und [[Draft Module/de|Entwurf]].


Die Module [[Sketcher Workbench/de|Sketcher]] und [[Draft Module/de|Draft]] nutzen beide das Modul [[Part Module/de|Part]], um Geometrien zu erzeugen und zu handhaben, während das Modul [[Mesh Module/de|Mesh]] vollkommen unabhängig ist und seine eigenen Objekte verwaltet. Mehr darüber folgt weiter unten.
[[Sketcher Workbench|Skizzierer]] und [[Draft Module/de|Entwurf]] verwenden beide das [[Part Module/de|Part]] Modul, um ihre Geometrie zu erzeugen und handzuhaben, die BRep ist, während [[Mesh Module/de|Netz]] völlig unabhängig ist und seine eigenen Objekte handhabt. Mehr dazu weiter unten.


Man kann sich alle für das aktuelle Dokument verfügbaren Basisobjekttypen folgendermaßen anzeigen lassen:
Du kannst alle verfügbaren Basisobjekttypen für das aktuelle Dokument folgendermaßen prüfen:


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


Die verschiedenen FreeCAD Module werden nicht automatisch in der Python-Konsole geladen, obwohl ihre Objekttypen zu FreeCAD hinzugefügt werden. Der Grund dafür ist, dass auf diesem Wege der Programmstart beschleinigt wird. Module werden immer nur geladen, wenn man sie benötigt. Die Inhalte eines Moduls lassen sich wie folgt betrachten:
Die verschiedenen FreeCAD Module werden, obwohl sie ihre Objekttypen zu FreeCAD hinzugefügt haben, nicht automatisch in die Python Konsole geladen. Dies soll einen sehr langsamen Start vermeiden. Die Module werden nur dann geladen, wenn Du sie benötigst. Zum Beispiel, um zu erkunden, was sich innerhalb des Part Moduls befindet:


{{Code|code=
{{Code|code=
Line 167: Line 163:
}}
}}


Wir werden unten mehr über das Modul ''Part'' lernen.
Aber wir werden weiter unten mehr über das Part Modul sprechen.


Mittlerweile weist Du ein wenig mehr über die verschiedenen Module von FreeCAD: Die Kernmodule (FreeCAD, FreeCADGui), und die Module der Arbeitsbereiche (Part, Netz, Skizzierer). Die anderen wichtigen Module sind das 3D Szenenmodul (pivy) und das Schnittstellenmodul (pyside), auf die wir weiter unten ebenfalls sprechen werden.
<div class="mw-translate-fuzzy">
Mittlerweile sollten Sie etwas mehr über die verschiedenen Module von FreeCAD wissen: Die Kernmodule (FreeCAD, FreeCADGui) und die Arbeitsbereichmodule (Part, Mesh, Sketcher). Weitere wichtige Module sind das 3D-Szenenmodul (pivy) und das Schnittstellenmodul (pyside), die wir weiter unten behandeln werden.
</div>


Nun ist es an der Zeit, die wichtigeren Arbeitsbereichmodule etwas tiefgehender zu erkunden.
Jetzt ist es an der Zeit, die wichtigen Module, welche die Arbeitsbereichsmodule sind, etwas tiefergehender zu erforschen.


== Mesh ==
== Netz ==


[https://de.wikipedia.org/wiki/Polygonnetz Polygonnetze] (engl. Meshes) sind eine sehr einfache Art von 3D Objekten, die z.B. von [https://de.wikipedia.org/wiki/SketchUp_(Software) Sketchup (Software)], [https://de.wikipedia.org/wiki/Blender_(Software) Blender (Software)] oder [https://de.wikipedia.org/wiki/3ds_Max 3ds Max] verwendet werden. Sie werden gebildet aus 3 Elementen: Punkte (auch Knoten genannt), Linien (auch Kanten genannt) und Flächen. In vielen Anwendungen, einschließlich FreeCAD, können Flächen nur 3 Eckpunkte haben. Natürlich hindert Dich nichts daran, eine größere ebene Fläche aus mehreren nebeneinander liegenden Dreiecken zu haben.
<div class="mw-translate-fuzzy">
[https://de.wikipedia.org/wiki/Polygonnetz Polygonnetze] (engl. Mesh) sind eine einfache Art von 3D-Objekten, wie sie z.B. in den [https://de.wikipedia.org/wiki/SketchUp_%28Software%29 Sketchup], [https://de.wikipedia.org/wiki/Blender_%28Software%29 Blender] oder [https://de.wikipedia.org/wiki/3ds_Max 3ds Max] verwendet werden. Sie bestehen aus drei Komponenten: Punkte ("vertices"), Linien ("edges") und Oberflächen. In vielen Anwendungen, u.a. FreeCAD, können Oberflächen nur 3 vertices besitzen. Aber nichts hält Sie davon ab, eine größere Fläche aus nebeneinander liegenden Dreiecksflächen zu erstellen.
</div>


Polygonnetze sind einfach, aber weil sie einfach sind, kannst Du leicht Millionen von ihnen in einem einzigen Dokument haben. Allerdings sind sie in FreeCAD weniger nützlich und meist vorhanden, so dass Du Objekte in Netzformaten (.stl, .obj) aus anderen Anwendungen importieren kannst. Das Netzmodul wurde auch im ersten Monat des FreeCAD Lebens ausgiebig als Haupttestmodul verwendet.
<div class="mw-translate-fuzzy">
Polygonnetze sind sehr einfache Objekte, was auch Nachteile haben kann, aber für viele Anwendungen überwiegen die Vorteile, sodass man wegen ihrer Einfachheit Millionen davon in einem Dokument speichern kann. In FreeCAD hingegen, sind sie weniger bedeutend und werden vor allem beim Importieren von Objekten aus anderen Dateiformaten (.stl, .obj) verwendet. Sie wurden außerdem in der Anfangszeit von FreeCAD intensiv für Testzwecke verwendet.
</div>


Netzobjekte und FreeCAD Objekte sind unterschiedliche Dinge. Du kannst das FreeCAD Objekt als einen Behälter für ein Netzobjekt betrachten (und wie wir unten sehen werden, auch für Part Objekte). Um also ein Netz Objekt zu FreeCAD hinzuzufügen, müssen wir zuerst ein FreeCAD Objekt und ein Mesh Objekt erstellen und dann das Netz Objekt zum FreeCAD Objekt hinzufügen:
<div class="mw-translate-fuzzy">
Polygonnetz-Objekte und FreeCAD-Objekte sind zwei verschiedene Dinge. Man kann das FreeCAD-Objekt als einen Container für Polygonnetz-Objekte ansehen. Um also ein Mesh-Objekt in FreeCAD hinzuzufügen, müssen wir erst ein FreeCAD-Objekt und eine Mesh-Objekt erstellen und dann das Mesh-Objekt in das FreeCAD-Objekt einfügen:
</div>


{{Code|code=
{{Code|code=
Line 201: Line 189:
}}
}}


Dies ist ein Standardbeispiel, das die createSphere() Methode verwendet, um automatisch eine Kugel zu erstellen, aber Du kannst auch benutzerdefinierte Netze von Grund auf neu erstellen, indem Du ihre Knoten und Flächen definierst.
<div class="mw-translate-fuzzy">
Dies ist ein Standardbeispiel, das die Methode ''createSphere()'' nutzt, um eine Kugel zu erzeugen, aber man kann natürlich auch individuelle Polygonnetze konstruieren, indem man ihre "vertices" und "faces" selbst definiert.
</div>


[[Mesh Scripting|Read more about mesh scripting...]]
[[Mesh Skripten|Lies mehr über Netz Skripten...]]


<div class="mw-translate-fuzzy">
== Part ==
== Part ==
Das Modul [[Part Module/de|Part]] ist das leistungsstärkste Modul in FreeCAD. Es erlaubt das Erstellen und Bearbeiten von [https://de.wikipedia.org/wiki/Boundary_Representation BRep-Objekten]. Diese Objekte können, im Gegensatz zu Polygonnetzen (Meshes), eine größere Anzahl an Komponenten besitzen. Der Term "Brep" steht dabei für ''Boundary Representation'', was bedeutet, dass diese Objekte durch ihre Oberflächen definiert werden, die wiederum ein geschlossenes Volumen definieren. Die Oberflächen können dabei auf vielfältige Weise definiert werden, z.B. durch ebene Flächen oder auch durch komplexe [https://de.wikipedia.org/wiki/Non-Uniform_Rational_B-Spline NURBS]-Oberflächen. Sie enthalten zudem das Konzept eines Volumens.
Das [[Part Module/de|Part Arbeitsbereich]] ist das leistungsfähigste Modul im gesamten FreeCAD. Es erlaubt Dir [http://en.wikipedia.org/wiki/Boundary_representation BRep] Objekte zu erstellen und zu verändern. Diese Art von Objekten kann, im Gegensatz zu Netzen, eine Vielzahl von Komponenten haben. Brep steht für Begrenzungsflächenmodell (engl.: Boundary Representation), was bedeutet, dass Brep Objekte durch ihre Oberflächen definiert werden; diese Oberflächen umschließen und definieren ein Innenvolumen. Eine Oberfläche kann eine Vielzahl von Dingen sein, wie z.B. ebene Flächen oder sehr komplexe NURBS Oberflächen.
</div>


Das Part-Modul basiert auf der leistungsstarken Bibliothek [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], die eine Vielzahl komplexer Operationen auf Objekten erlaubt.Beispiel dafür sind Boolsche Operationen, Abrundungen, usw.
Das Part-Modul basiert auf der leistungsstarken [http://en.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade] Bibliothek, die es ermöglicht, eine Vielzahl von komplexen Operationen auf diesen Objekten einfach durchzuführen, wie z.B. boolesche Operationen, Filetierung, Ausformungen, usw.


Das Part-Modul arbeitet auf dieselbe Weise wie das Mesh-Modul: Man erstellt ein FreeCAD-Objekt und ein Part-Objekt, danach fügt man das Part-Objekt in das FreeCAD-Objekt ein:
Das Part-Modul arbeitet auf dieselbe Weise wie das Netz Modul: Man erzeugt ein FreeCAD Objekt, ein Part Objekt, danach fügt man das Part Objekt zum FreeCAD Objekt hinzu:


{{Code|code=
{{Code|code=
Line 228: Line 212:
}}
}}


Das Part Modul (wie das Netz Modul) hat auch ein Tastaturkürzel, das automatisch ein FreeCAD Objekt erstellt und eine Form hinzufügt, so dass du die letzten drei Zeilen oben verkürzen kannst auf:
<div class="mw-translate-fuzzy">
Das Part-Module besitzt ebenso wie das Mesh-Modul eine Abkürzung zum Erzeugen von FreeCAD-Objekten und Einfügen von Formen in dieses Objekt, sodass die letzten drei Zeilen des vorherigen Absatzes übersprungen werden können:
</div>


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


Beim erforschen der Inhalt von myshape, wirst Du viele interessante Unterkomponenten wie Flächen, Kanten, Knoten, Festkörper und Schalen, und eine weite Bandbreite von Geometrieoperationen wie Schnitt (Subtraktion), Gemein (Schnittpunkt) oder Verschmelzung (Vereinigung) bemerken. Die [[Topological data scripting/de|Topologisches Daten Skripten]] Seite erklärt all das im Detail.
<div class="mw-translate-fuzzy">
Beim Untersuchen der Inhalte von ''myshape'' werden Sie feststellen, dass viele interessante Komponenten wie Flächen, Kanten, Eckpunkte, Volumenkörper oder Hüllkörper vorhanden sind. Weiterhin findet man geometrische Operationen wie Ausschneiden (Subtraktion), Vereinigung (Union) und Schnitt (Intersektion). Die Seite [[Topological data scripting/de|Topological data scripting]] beschreibt diese Zusammenhänge im Detail.
</div>


[[Topological data scripting|Read more about part scripting...]]
[[Topological data scripting|Lies mehr über Part Skripten...]]


== Entwurf ==
<div class="mw-translate-fuzzy">
FreeCAD bietet noch viele weitere Module, wie [[Sketcher Workbench/de|Skizzierer]] und [[Draft Module/de|Entwurf]], die ebenfalls Teilobjekte erzeugen. Diese Module fügen zusätzliche Parameter zu den erzeugten Objekten hinzu oder implementieren sogar eine völlig neue Art und Weise, die Teilegeometrie in ihnen zu handhaben. Unser obiges Box Beispiel ist ein perfektes Beispiel für ein parametrisches Objekt. Alles was Du zur Definition der Box benötigst, ist die Angabe der Parameter Höhe, Breite und Länge. Basierend auf diesen Parametern berechnet das Objekt automatisch seine Teileform. FreeCAD erlaubt es Dir [[Scripted objects/de|Erzeuge solche Objekte in Python]].
== Draft ==
FreeCAD enthält viele weitere Module, wie [[Sketcher Workbench/de|Sketcher]] oder [[Draft Module/de|Draft]], die ebenfalls Part-Objekte erzeugen, aber ihnen weitere Parameter mitgeben oder die Handhabung der Geometrie auf andere Weise lösen. Unser obiges Würfelbeispiel ist ein perfektes Beispiel eines parametrischen Objektes. Zum Definieren des Würfels müssen nur ein paar Parameter, wie Höhe, Breite und Länge, festgelegt werden. Darauf aufbauend wird das Objekt automatisch seine Form und Darstellung als Part-Objekt berechnen. FreeCAD erlaubt es Ihnen, solche Objekte mit Python zu [[Scripted objects/de|erstellen]].
</div>


Das [[Draft Module/de|Entwurfsmodul]] fügt parametrische 2D Objekttypen (die alle Part Objekte sind) wie Linien und Kreise hinzu und bietet auch einige grundlegende Funktionen, die nicht nur auf Entwurfsobjekte, sondern auf jedes Part Objekt wirken. Um zu erkunden, was verfügbar ist, mache einfach:
<div class="mw-translate-fuzzy">
Das Modul [[Draft Module/de|Draft]] fügt einige zweidimensionale, parametrische Objekttypen hinzu (die ebenfalls Part-Objekte sind), wie z.B. Linien und Kreise, und bietet zudem einige Funktionen, die nicht nur auf mit Draft erstellte Objekte anwendbar sind, sondern auch auf Part-Objekte. Um diese Möglichkeit zu untersuchen, sollten Sie folgendes eingeben:
</div>


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


== Benutzeroberfläche ==
<div class="mw-translate-fuzzy">
Die Benutzeroberfläche von FreeCAD ist mit [http://en.wikipedia.org/wiki/Qt_%28framework%29 Qt], einer leistungsstarken grafischen Schnittstellensystem, erstellt worden, das für das Zeichnen und die Handhabung aller Bedienelemente, Menüs, Werkzeugleisten und Schaltflächen rund um die 3D Ansicht verantwortlich ist. Qt stellt ein Modul, PySide, zur Verfügung, welches Python erlaubt, auf die Qt Schnittstellen wie FreeCAD zuzugreifen und zu verändern. Lass uns versuchen, mit der Qt Schnittstelle zu tüfteln und einen einfachen Dialog zu erzeugen:
== Benutzeroberfläche (Interface) ==
Die Benutzeroberfläche von FreeCAD wurde mit der leistungsstarken Grafikbibliothek [https://de.wikipedia.org/wiki/Qt_%28Bibliothek%29 Qt] entwickelt, die hierbei für das Zeichnen und Verwalten der Schaltflächen, Menüs, Werkzeugleisten usw. zuständig ist. Die Bibliothek ''Qt'' stellt ein Modul namens ''PySide'' zur Verfügung, das den Zugriff und die Bearbeitung von Qt-Schnittstellen, wie in FreeCAD, ermöglicht. Dies probieren wir nun aus, indem wir ein einfaches Dialogfenster erzeugen:
</div>


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


Beachte, dass der erscheinende Dialog das FreeCAD Symbol in seiner Werkzeugleiste hat, was bedeutet, dass Qt weiß, dass der Auftrag aus der FreeCAD Anwendung heraus erteilt wurde. Wir können daher leicht jeden Teil der FreeCAD Schnittstelle direkt manipulieren.
<div class="mw-translate-fuzzy">
Das erscheinende Dialogfenster hat das FreeCAD-Icon in der Titelleiste, d.h. Qt weiß, dass der Aufruf innerhalb von FreeCAD stattfand. Damit können wir alle Bereiche der Benutzeroberfläche von FreeCAD auf einfache Art und Weise verändern.
</div>


Qt ist ein sehr mächtiges Schnittstellensystem, das es dir erlaubt, sehr komplexe Dinge zu tun. Es hat auch einige einfach zu benutzende Werkzeuge wie den Qt Designer, mit dem du Dialoge grafisch entwerfen kannst und sie dann mit ein paar Zeilen Python Code zur FreeCAD Oberfläche hinzufügen kannst.
<div class="mw-translate-fuzzy">
Qt ist ein sehr leistungsfähige Benutzeroberfläche, mit der man sehr komplexe Dinge machen kann. Sie hat aber auch eine Reihe von einfach zu benutzenden Werkzeugen wie den Qt-Designer. Hiermit kann man Dialoge grafisch entwerfen und sie der FreeCAD-Oberfläche mit ein paar Zeilen Pythoncode hinzufügen.
</div>


[[PySide|Erfahre hier mehr über PySide...]]
[[PySide|Erfahre hier mehr über PySide...]]


<div class="mw-translate-fuzzy">
== Makros ==
== Makros ==
Nachdem wir nun Grundlagen verstanden haben, kommt als nächstes, wie wir Pythonscripte erhalten und sie von der FreeCAD aus starten können. Dafür gibt es einfache Mechanismen genannt [[Macros/de]]. Ein Makro ist ein einfaches Pythonscript, das der Werkzeugleiste hinzugefügt werden kann und mit einem einfachen Mausklick gestartet werden kann. FreeCAD stellt dafür einen einfachen Texteditor (Makro -> Makros -> Create) zur Verfügung, mit dem man Scripte schreiben oder einfach einfügen Button festzulegen, der der Werkzeugleiste hinzugefügt werden kann.
Nun, da Du ein gutes Verständnis der Grundlagen hast, wo werden wir unsere Python Skripte aufbewahren und wie werden wir sie einfach von FreeCAD aus starten? Dafür gibt es einen einfachen Mechanismus, genannt [[Macros/de|Makros]]. Ein Makro ist einfach ein Python Skript, das zu einer Werkzeugleiste hinzugefügt und per Mausklick gestartet werden kann. FreeCAD bietet dir einen einfachen Texteditor (Makro Makros Erstellen), in dem du Skripte schreiben oder einfügen kannst. Sobald das Skript fertig ist, verwende Werkzeuge → Anpassung → Makros, um eine Schaltfläche dafür zu definieren, die zu den Symbolleisten hinzugefügt werden kann.
</div>


Jetztbist Du bereit für eine vertiefte FreeCAD Skripterstellung. Gehe weiter zum [[Power users hub/de|Verteiler für Erfahrene Anwender]]!
<div class="mw-translate-fuzzy">
Jetzt bist Du bereit für mehr tiefergehenderes FreeCAD-Scripting. Weiter geht's zum [[Power users hub/de]]!
</div>


{{docnav/de|[[Introduction to Python/de|Einführung in Python]]|[[FreeCAD Scripting Basics/de|FreeCAD Skripte-Grundlagen]]}}
{{docnav/de|[[Introduction to Python/de|Einführung in Python]]|[[FreeCAD Scripting Basics/de|FreeCAD Skripte-Grundlagen]]}}


{{Userdocnavi}}
{{Userdocnavi/de}}


[[Category:Poweruser Documentation]]
[[Category:Poweruser Documentation/de]]


{{clear}}
{{clear}}

Revision as of 20:07, 19 December 2019

Tutorium
Thema
{{{Topic}}}
Niveau
{{{Level}}}
Zeit zum Abschluss
Autoren
FreeCAD-Version
Beispieldateien
Siehe auch
None


Python ist eine Programmiersprache, sehr einfach zu bedienen und sehr schnell zu erlernen. Sie ist quelloffen, plattformübergreifend und kann für eine Vielzahl von Aufgaben allein verwendet werden, von der Programmierung einfacher Shell Skripte bis hin zu sehr komplexen Programmen. Aber eine der am weitesten verbreiteten Anwendungen ist die Skriptsprache, da sie leicht in andere Anwendungen integriert werden kann. Genau so wird es in FreeCAD verwendet. Von der Python Konsole oder von deinen benutzerdefinierten Skripten aus kannst du FreeCAD steuern und es sehr komplexe Aktionen ausführen lassen, für die es noch kein Werkzeug für die grafische Benutzeroberfläche gibt.

Zum Beispiel aus einem Python Skript, kannst Du:

  • neue Objekte erstellen
  • bestehende Objekte ändern
  • die 3D Darstellung dieser Objekte ändern
  • die FreeCAD Schnittstelle modifizieren

Es gibt auch mehrere Möglichkeiten, Python in FreeCAD zu verwenden:

  • Aus dem FreeCAD Python Interpreter, wo du einfache Befehle wie in einer "Kommandozeile" Stilschnittstelle ausgeben kannst.
  • Aus Makros, die eine bequeme Möglichkeit darstellen, ein fehlendes Werkzeug schnell zur FreeCAD Oberfläche hinzuzufügen.
  • Aus externen Skripten, mit denen man viel komplexere Dinge programmieren kann, wie z.B. ganze Arbeitsbereiche.

In diesem Tutorial werden wir an ein paar einfachen Beispielen arbeiten, um dir den Einstieg zu erleichtern, aber es gibt auch viel mehr zu diesem Thema Dokumentation über Python Skripting auf diesem Wiki. Wenn du völlig neu in Python bist und verstehen willst, wie es funktioniert, haben wir auch eine grundlegende Einführung in Python.

"'Wichtig!' Bevor Du mit dem Python-Skripting fortfährst, gehe zum Template:MenuCommand/de und aktiviere 2 Kästchen:

  • Interne Python-Meldungen auf Ausgabefenster umleiten
  • Interne Python-Fehlermeldungen auf Ausgabefenster umleiten

Dann gehe zu Template:MenuCommand/de und wähle:

  • Ausgabefenster

Das erspart Dir eine Menge Ärger!

Python Code schreiben

Es gibt zwei einfache Wege, Python Code in FreeCAD zu schreiben: Über die Python Konsole (verfügbar im Menü Ansicht → Paneele → Python Konsole) oder über den Makro Editor (Werkzeuge → Makros). In der Konsole schreibst Du nacheinander Python Befehle, die ausgeführt werden, wenn Du die Eingabetaste drückst, während die Makros ein komplexeres Skript aus mehreren Zeilen enthalten können, das erst bei der Ausführung des Makros ausgeführt wird.

Die FreeCAD Python Konsole

In diesem Tutorial wirst Du beide Methoden kennenlernen, also entweder durch Kopieren/Einfügen von einzelnen Zeilen in die Python Konsole und drücken der Eingabetaste oder alternativ durch Kopieren/Einfügen des gesamten Programmcodes in ein neues Makro Fenster.

Erkunden von FreeCAD

Wir beginnen damit, ein neues leeres Dokument zu erstellen:

doc = FreeCAD.newDocument()

Wenn Du dies in die Python Konsole eingibst, wirst Du bemerken, dass nach dem Eintippen von FreeCAD. ein neues Fenster erscheint, dass eine Autovervollständigung des gesuchten Befehls anbietet. Vorteilhaft ist dabei auch, dass jeder angebotene Befehl eine Kurzinfo über die Funktion des Befehls anzeigt, sobald man den Mauszeiger darüber stehen lässt. Dies macht es umso einfacher, die verschiedenen Möglichkeiten des Programms zu erkunden. Bevor Du newDocument auswählst, sieh Dir die anderen verfügbaren Optionen an.

Der Autovervollständigungsmechanismus der FreeCAD Pythonkonsole

Nun wird unser neues Dokument erstellt. Dies ist ähnlich wie das Drücken der Schaltfläche "Neues Dokument" in der Symbolleiste. Tatsächlich tun die meisten Schaltflächen in FreeCAD nichts anderes, als ein oder zwei Zeilen Python Code auszuführen. Noch besser, Du kannst eine Option in Template:MenuCommand/de auf "Skriptbefehle in der Python Konsole anzeigen" setzen. Dies wird in der Konsole den gesamten Python Code ausgeben, der beim Drücken von Knöpfen ausgeführt wird. Sehr nützlich, um zu lernen, wie man Aktionen in Python reproduziert.

Kehren wir nun zu unserem Dokument zurück. Schauen wir uns an, was wir damit machen können:

doc.

Erkunde die verfügbaren Möglichkeiten. Üblicherweise sind Namen, die mit einem Großbuchstaben beginnen, Attribute, sie enthalten einen Wert, während Namen, die mit einem Kleinbuchstaben beginnen, Funktionen (auch Methoden genannt) sind, sie "tun etwas". Namen, die mit einem Unterstrich beginnen, sind normalerweise für die interne Arbeit des Moduls da, und Du solltest dich nicht um sie kümmern. Lasse uns eine der Methoden verwenden, um ein neues Objekt zu unserem Dokument hinzuzufügen:

box = doc.addObject("Part::Box","myBox")

Es passiert zunächst einmal nichts. Warum? Weil FreeCAD für das große Ganze gedacht ist. Eines Tages wird es mit hunderten von komplexen Objekten arbeiten, die alle voneinander abhängen. Eine geringfügige Änderung an einer Stelle könnte eine große Veränderung an einer anderen Stelle bewirken, sodass das gesamte Dokument aufwendig neu berechnet werden muss. Aus diesem Grund aktualisiert kaum ein Befehl die Ansicht automatisch. Es muss manuell durchgeführt werden:

doc.recompute()

Siehst du? Jetzt ist unsere Box erschienen! Viele der Schaltflächen, mit denen in FreeCAD Objekte hinzugefügt werden, tun eigentlich 2 Dinge: das Objekt hinzufügen und neu berechnen. Wenn Du oben die Option "lich zwei Dinge: das Objekt einfügen und das Dokument neuberechnen lassen. Wenn Du oben die Option Zeige Skript Befehle in Pythonkonsole" eingeschaltet hast, versuche nun, eine Kugel mit der GUI Schaltfläche hinzuzufügen, Du wirst sehen, wie die beiden Zeilen Python Code nacheinander ausgeführt werden.

Was ist mit der "Part::Box", wirst Du fragen? Wie kann ich wissen, welche weiteren Objekte hinzugefügt werden können? Es ist alles hier:

doc.supportedTypes()

Nun erkunden wir die Inhalte unseres Würfels:

box.

Du wirst sofort einige sehr interessante Dinge sehen, wie zum Beispiel:

box.Height

Dadurch wird die aktuelle Höhe unseres Würfels ausgegeben. Versuchen wir nun, das zu ändern:

box.Height = 5

Wenn Sie den Würfel mit der Maus auswählen, dann sehen Sie in der Combo-Ansicht in der Registerkarte "Daten" ebenfalls diese Höhe. Alle Eigenschaften eines FreeCAD-Objektes, die dort erscheinen (und außerdem in der Registerkarte "Ansicht", später mehr dazu), können direkt über die Python-Konsole durch Angabe des Namens gelesen und geändert werden, genauso wie wir es mit der Höhe getan haben. Versuchen Sie die anderen Maße des Würfels auf diesem Wege zu ändern!

Vektoren und Platzierungen

Vektoren sind ein fester Bestandteil jeder 3D-Anwendung. Ein Vektor ist dabei eine Liste von Zahlen (x,y,z), die einen Ort im dreidimensionalen Raum beschreiben. Mit Vektoren sind verschiedene mathematische Operationen möglich, wie z.B. Addition, Subtraktion, Projektion (Skalarprodukt) und vieles mehr. In FreeCAD funktionieren Vektoren wie folgt:

myvec = FreeCAD.Vector(2,0,0)
myvec
myvec.x
myvec.y
othervec = FreeCAD.Vector(0,3,0)
sumvec = myvec.add(othervec)

Ein wichtiges Merkmal von Objekten in FreeCAD ist ihr Ort. Jedes Objekt besitzt Attribute, die seinen Ort (Base) und seine Ausrichtung (Rotation) angeben. Diese Attribute lassen sich leicht ändern, um beispielsweise das Objekt zu bewegen:

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

Bevor wir weitermachen können, müssen Sie erst noch einige wichtige Konzepte verstehen.

App und GUI

FreeCAD wurde von Anfang an als Kommandozeilen-Anwendung konzipiert, d.h. ohne notwendige Benutzeroberfläche. Als Folge davon ist fast alles zwischen einer "geometrischen" Komponente und einer "visuellen" Komponente aufgeteilt. Wenn man im Kommandozeilenmodus arbeitet, dann ist der geometrische Teil vorhanden, aber der visuelle Teil deaktiviert. Fast jedes Objekt in FreeCAD besteht deshalb aus zwei Teilen, einem Object und einem ViewObject (Objektansicht).

Um dieses Konzept besser zu verstehen, sollten Sie sich das Würfel-Objekt genauer ansehen. Seine geometrischen Eigenschaften (Maße, Ort, usw.) sind im object gespeichert, während seine visuellen Eigenschaften (Farbe, Liniendicke, usw.) im viewobject enthalten sind. Diese Aufteilung entspricht den beiden Registerkarten "Daten" und "Ansicht" in der Combo-Ansicht. Das viewobject eines Objektes kann wie folgt angesprochen werden:

vo = box.ViewObject

Damit lassen sich auch die Eigenschaften der Registerkarte "Ansicht" ändern:

vo.Transparency = 80
vo.hide()
vo.show()

Wenn Sie FreeCAD starten, dann lädt die Python-Konsole automatisch die beiden Module FreeCAD und FreeCADGui (die in der Konsole auch über ihre Abkürzungen App und Gui angesprochen werden können). Sie enthalten allerlei allgemeine Funktionen zum Arbeiten mit Dokumenten und Objekten. Um unser Konzept zu illustrieren, beachten Sie, dass sowohl FreeCAD als auch FreeCADGui ein Attribut namens ActiveDocument enthalten, das das momentan geöffnete Dokument angibt. Dabei sind FreeCAD.ActiveDocument and FreeCADGui.ActiveDocument jedoch nicht dasselbe Objekt. Sie sind stattdessen zwei Komponenten eines FreeCAD-Dokumentes, die verschiedene Attribute und Methoden enthalten. Beispielsweise enthält nur FreeCADGui.ActiveDocument eine Eigenschaft namens ActiveView, die die momentan geöffnete 3D-Ansicht beschreibt.

Module

Nun fragst du dich sicher, was außer "Part::Box" kann ich noch tun ? Die FreeCAD Basisanwendung ist mehr oder weniger ein leerer Behälter. Ohne seine Module kann es kaum mehr tun, als neue, leere Dokumente erstellen. Die wahre Stärke von FreeCAD liegt in seinen zuverlässigen Modulen. Jedes von ihnen fügt nicht nur neue Arbeitsbereiche zur Benutzeroberfläche hinzu, sondern auch neue Python Befehle und neue Objekttypen. Als Ergebnis können mehrere unterschiedliche oder sogar völlig inkompatible Objekttypen in einem Dokument koexistieren. Die wichtigsten Module in FreeCAD, die wir in diesem Tutorial betrachten werden, sind Part, Netz, Skizzierer und Entwurf.

Skizzierer und Entwurf verwenden beide das Part Modul, um ihre Geometrie zu erzeugen und handzuhaben, die BRep ist, während Netz völlig unabhängig ist und seine eigenen Objekte handhabt. Mehr dazu weiter unten.

Du kannst alle verfügbaren Basisobjekttypen für das aktuelle Dokument folgendermaßen prüfen:

doc.supportedTypes()

Die verschiedenen FreeCAD Module werden, obwohl sie ihre Objekttypen zu FreeCAD hinzugefügt haben, nicht automatisch in die Python Konsole geladen. Dies soll einen sehr langsamen Start vermeiden. Die Module werden nur dann geladen, wenn Du sie benötigst. Zum Beispiel, um zu erkunden, was sich innerhalb des Part Moduls befindet:

import Part
Part.

Aber wir werden weiter unten mehr über das Part Modul sprechen.

Mittlerweile weist Du ein wenig mehr über die verschiedenen Module von FreeCAD: Die Kernmodule (FreeCAD, FreeCADGui), und die Module der Arbeitsbereiche (Part, Netz, Skizzierer). Die anderen wichtigen Module sind das 3D Szenenmodul (pivy) und das Schnittstellenmodul (pyside), auf die wir weiter unten ebenfalls sprechen werden.

Jetzt ist es an der Zeit, die wichtigen Module, welche die Arbeitsbereichsmodule sind, etwas tiefergehender zu erforschen.

Netz

Polygonnetze (engl. Meshes) sind eine sehr einfache Art von 3D Objekten, die z.B. von Sketchup (Software), Blender (Software) oder 3ds Max verwendet werden. Sie werden gebildet aus 3 Elementen: Punkte (auch Knoten genannt), Linien (auch Kanten genannt) und Flächen. In vielen Anwendungen, einschließlich FreeCAD, können Flächen nur 3 Eckpunkte haben. Natürlich hindert Dich nichts daran, eine größere ebene Fläche aus mehreren nebeneinander liegenden Dreiecken zu haben.

Polygonnetze sind einfach, aber weil sie einfach sind, kannst Du leicht Millionen von ihnen in einem einzigen Dokument haben. Allerdings sind sie in FreeCAD weniger nützlich und meist vorhanden, so dass Du Objekte in Netzformaten (.stl, .obj) aus anderen Anwendungen importieren kannst. Das Netzmodul wurde auch im ersten Monat des FreeCAD Lebens ausgiebig als Haupttestmodul verwendet.

Netzobjekte und FreeCAD Objekte sind unterschiedliche Dinge. Du kannst das FreeCAD Objekt als einen Behälter für ein Netzobjekt betrachten (und wie wir unten sehen werden, auch für Part Objekte). Um also ein Netz Objekt zu FreeCAD hinzuzufügen, müssen wir zuerst ein FreeCAD Objekt und ein Mesh Objekt erstellen und dann das Netz Objekt zum FreeCAD Objekt hinzufügen:

import Mesh
mymesh = Mesh.createSphere()
mymesh.
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature","MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

Dies ist ein Standardbeispiel, das die createSphere() Methode verwendet, um automatisch eine Kugel zu erstellen, aber Du kannst auch benutzerdefinierte Netze von Grund auf neu erstellen, indem Du ihre Knoten und Flächen definierst.

Lies mehr über Netz Skripten...

Part

Das Part Arbeitsbereich ist das leistungsfähigste Modul im gesamten FreeCAD. Es erlaubt Dir BRep Objekte zu erstellen und zu verändern. Diese Art von Objekten kann, im Gegensatz zu Netzen, eine Vielzahl von Komponenten haben. Brep steht für Begrenzungsflächenmodell (engl.: Boundary Representation), was bedeutet, dass Brep Objekte durch ihre Oberflächen definiert werden; diese Oberflächen umschließen und definieren ein Innenvolumen. Eine Oberfläche kann eine Vielzahl von Dingen sein, wie z.B. ebene Flächen oder sehr komplexe NURBS Oberflächen.

Das Part-Modul basiert auf der leistungsstarken OpenCasCade Bibliothek, die es ermöglicht, eine Vielzahl von komplexen Operationen auf diesen Objekten einfach durchzuführen, wie z.B. boolesche Operationen, Filetierung, Ausformungen, usw.

Das Part-Modul arbeitet auf dieselbe Weise wie das Netz Modul: Man erzeugt ein FreeCAD Objekt, ein Part Objekt, danach fügt man das Part Objekt zum FreeCAD Objekt hinzu:

import Part
myshape = Part.makeSphere(10)
myshape.
myshape.Volume
myshape.Area

shapeobj = doc.addObject("Part::Feature","MyShape")
shapeobj.Shape = myshape
doc.recompute()

Das Part Modul (wie das Netz Modul) hat auch ein Tastaturkürzel, das automatisch ein FreeCAD Objekt erstellt und eine Form hinzufügt, so dass du die letzten drei Zeilen oben verkürzen kannst auf:

Part.show(myshape)

Beim erforschen der Inhalt von myshape, wirst Du viele interessante Unterkomponenten wie Flächen, Kanten, Knoten, Festkörper und Schalen, und eine weite Bandbreite von Geometrieoperationen wie Schnitt (Subtraktion), Gemein (Schnittpunkt) oder Verschmelzung (Vereinigung) bemerken. Die Topologisches Daten Skripten Seite erklärt all das im Detail.

Lies mehr über Part Skripten...

Entwurf

FreeCAD bietet noch viele weitere Module, wie Skizzierer und Entwurf, die ebenfalls Teilobjekte erzeugen. Diese Module fügen zusätzliche Parameter zu den erzeugten Objekten hinzu oder implementieren sogar eine völlig neue Art und Weise, die Teilegeometrie in ihnen zu handhaben. Unser obiges Box Beispiel ist ein perfektes Beispiel für ein parametrisches Objekt. Alles was Du zur Definition der Box benötigst, ist die Angabe der Parameter Höhe, Breite und Länge. Basierend auf diesen Parametern berechnet das Objekt automatisch seine Teileform. FreeCAD erlaubt es Dir Erzeuge solche Objekte in Python.

Das Entwurfsmodul fügt parametrische 2D Objekttypen (die alle Part Objekte sind) wie Linien und Kreise hinzu und bietet auch einige grundlegende Funktionen, die nicht nur auf Entwurfsobjekte, sondern auf jedes Part Objekt wirken. Um zu erkunden, was verfügbar ist, mache einfach:

import Draft
Draft.
rec = Draft.makeRectangle(5,2)
mvec = FreeCAD.Vector(4,4,0)
Draft.move(rec,mvec)
Draft.move(box,mvec)

Benutzeroberfläche

Die Benutzeroberfläche von FreeCAD ist mit Qt, einer leistungsstarken grafischen Schnittstellensystem, erstellt worden, das für das Zeichnen und die Handhabung aller Bedienelemente, Menüs, Werkzeugleisten und Schaltflächen rund um die 3D Ansicht verantwortlich ist. Qt stellt ein Modul, PySide, zur Verfügung, welches Python erlaubt, auf die Qt Schnittstellen wie FreeCAD zuzugreifen und zu verändern. Lass uns versuchen, mit der Qt Schnittstelle zu tüfteln und einen einfachen Dialog zu erzeugen:

from PySide import QtGui
QtGui.QMessageBox.information(None,"Apollo program","Houston, we have a problem")

Beachte, dass der erscheinende Dialog das FreeCAD Symbol in seiner Werkzeugleiste hat, was bedeutet, dass Qt weiß, dass der Auftrag aus der FreeCAD Anwendung heraus erteilt wurde. Wir können daher leicht jeden Teil der FreeCAD Schnittstelle direkt manipulieren.

Qt ist ein sehr mächtiges Schnittstellensystem, das es dir erlaubt, sehr komplexe Dinge zu tun. Es hat auch einige einfach zu benutzende Werkzeuge wie den Qt Designer, mit dem du Dialoge grafisch entwerfen kannst und sie dann mit ein paar Zeilen Python Code zur FreeCAD Oberfläche hinzufügen kannst.

Erfahre hier mehr über PySide...

Makros

Nun, da Du ein gutes Verständnis der Grundlagen hast, wo werden wir unsere Python Skripte aufbewahren und wie werden wir sie einfach von FreeCAD aus starten? Dafür gibt es einen einfachen Mechanismus, genannt Makros. Ein Makro ist einfach ein Python Skript, das zu einer Werkzeugleiste hinzugefügt und per Mausklick gestartet werden kann. FreeCAD bietet dir einen einfachen Texteditor (Makro → Makros → Erstellen), in dem du Skripte schreiben oder einfügen kannst. Sobald das Skript fertig ist, verwende Werkzeuge → Anpassung → Makros, um eine Schaltfläche dafür zu definieren, die zu den Symbolleisten hinzugefügt werden kann.

Jetztbist Du bereit für eine vertiefte FreeCAD Skripterstellung. Gehe weiter zum Verteiler für Erfahrene Anwender!