Python/de: Difference between revisions
(Created page with "{{VeryImportantMessage|(January 2020) FreeCAD wurde ursprünglich für die Arbeit mit Python 2 entwickelt. Da Python 2 im Jahr 2020 das Ende seiner Lebensdauer erreicht hat, w...") |
No edit summary |
||
(35 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{VeryImportantMessage| |
{{VeryImportantMessage|FreeCAD wurde ursprünglich für die Arbeit mit Python 2.x entwickelt. Diese Reihe endete mit der Ausgabe 2.7.18 vom 20. April 2020 und wird gefolgt von Python 3. Die zukünftige Entwicklung von FreeCAD ausschließlich mit Python 3 durchgeführt, und die Abwärtskompatibilität wird nicht unterstützt.}} |
||
== |
== Beschreibung == |
||
{{TOCright}} |
|||
[https://www.python.org Python] is a general purpose, high level programming language that is very commonly used in large applications to automate some tasks by creating scripts or [[macros|macros]]. |
|||
[https://www.python.org Python] ist eine allgemeine, hochrangige Programmiersprache, die in großen Anwendungen sehr häufig verwendet wird, um einige Aufgaben zu automatisieren, indem man Skripte erstellt oder [[macros/de|Makros]]. |
|||
In FreeCAD, Python code can be used to create various elements programmatically, without needing to click on the graphical user interface. Additionally, many tools and workbenches of FreeCAD are programmed in Python. |
|||
In FreeCAD kann Python Code verwendet werden, um verschiedene Elemente programmgesteuert zu erstellen, ohne auf die grafische Benutzeroberfläche klicken zu müssen. Darüber hinaus sind viele Werkzeuge und Arbeitsbereiche von FreeCAD in Python programmiert. |
|||
⚫ | |||
⚫ | |||
When writing Python code, it's advisable to follow [https://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code]. |
|||
== |
== Lesbarkeit == |
||
In this documentation, some conventions for Python examples should be followed. |
|||
Die Lesbarkeit von Python Code ist einer der wichtigsten Aspekte dieser Sprache. Die Verwendung eines klaren und konsistenten Stils innerhalb der Python Gemeinschaft erleichtert Beiträge von verschiedenen Entwicklern, da die meisten erfahrenen Python Programmierer erwarten, dass der Code auf eine bestimmte Art und Weise formatiert ist und bestimmten Regeln folgt. Beim Schreiben von Python Code ist es ratsam, [https://www.python.org/dev/peps/pep-0008/ PEP8: Style Guide for Python Code] und [https://www.python.org/dev/peps/pep-0257/ PEP257: Docstring Conventions] zu befolgen. |
|||
This is a typical function signature |
|||
Diese Dokumente bieten Erklärungen in einer benutzerfreundlicheren Form: |
|||
* [https://realpython.com/python-pep8/ Wie man schönen Python Code mit PEP 8 schreibt] |
|||
* [https://realpython.com/documenting-python-code/ Python Code dokumentieren: Ein vollständiger Leitfaden]. |
|||
== Konventionen == |
|||
In dieser Dokumentation sollten einige Konventionen für Python Beispiele eingehalten werden. |
|||
Dies ist eine typische Funktionssignatur |
|||
{{Code|code= |
{{Code|code= |
||
Wire = |
Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None) |
||
}} |
}} |
||
* Argumente mit Schlüsselwert Paaren sind optional, wobei der Standardwert in der Signatur angegeben ist. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind: |
|||
* Arguments with key-value pairs are optional, with the default value indicated in the signature. This means that the following calls are equivalent: |
|||
{{Code|code= |
{{Code|code= |
||
Wire = |
Wire = make_wire(pointslist, False, None, None, None) |
||
Wire = |
Wire = make_wire(pointslist, False, None, None) |
||
Wire = |
Wire = make_wire(pointslist, False, None) |
||
Wire = |
Wire = make_wire(pointslist, False) |
||
Wire = |
Wire = make_wire(pointslist) |
||
}} |
}} |
||
: In diesem Beispiel hat das erste Argument keinen Standardwert, daher sollte es immer einbezogen werden. |
|||
: In this example the first argument doesn't have a default value so it should always be included. |
|||
* Wenn die Argumente mit dem expliziten Schlüssel angegeben werden, können die optionalen Argumente in beliebiger Reihenfolge angegeben werden. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind: |
|||
* When the arguments are given with the explicit key, the optional arguments can be given in any order. This means that the following calls are equivalent: |
|||
{{Code|code= |
{{Code|code= |
||
Wire = |
Wire = make_wire(pointslist, closed=False, placement=None, face=None) |
||
Wire = |
Wire = make_wire(pointslist, closed=False, face=None, placement=None) |
||
Wire = |
Wire = make_wire(pointslist, placement=None, closed=False, face=None) |
||
Wire = |
Wire = make_wire(pointslist, support=None, closed=False, placement=None, face=None) |
||
}} |
}} |
||
* Pythons Richtlinien betonen die Lesbarkeit von Code; insbesondere sollten Klammern unmittelbar auf den Funktionsnamen folgen, und ein Leerzeichen sollte einem Komma folgen. |
|||
* Python's guidelines stress readability of code; in particular, parentheses should immediately follow the function name, and a space should follow a comma. |
|||
{{Code|code= |
{{Code|code= |
||
Line 47: | Line 55: | ||
p2 = Vector(1, 1, 0) |
p2 = Vector(1, 1, 0) |
||
p3 = Vector(2, 0, 0) |
p3 = Vector(2, 0, 0) |
||
Wire = |
Wire = make_wire([p1, p2, p3], closed=True) |
||
}} |
}} |
||
* Wenn Code über mehrere Zeilen gebrochen werden muss, sollte dies mit einem Komma in Klammern oder Klammern erfolgen; die zweite Zeile sollte mit der vorherigen übereinstimmen. |
|||
* If code needs to be broken over several lines, this should be done at a comma inside brackets or parentheses; the second line should be aligned with the previous one. |
|||
{{Code|code= |
{{Code|code= |
||
Line 56: | Line 64: | ||
2, 4, 5] |
2, 4, 5] |
||
Wire = |
Wire = make_wire(pointslist, |
||
False, None, |
False, None, |
||
None, None) |
None, None) |
||
}} |
}} |
||
* Funktionen können ein Objekt zurückgeben, das als Basis für eine andere Zeichenfunktion verwendet werden kann. |
|||
* Functions may return an object that can be used as the base of another drawing function. |
|||
{{Code|code= |
{{Code|code= |
||
Wire = |
Wire = make_wire(pointslist, closed=True, face=True) |
||
Window = |
Window = make_window(Wire, name="Big window") |
||
}} |
}} |
||
== |
== Importe == |
||
Python |
Python Funktionen werden in Dateien gespeichert, die Module genannt werden. Bevor eine Funktion in diesem Modul verwendet wird, muss das Modul mit dem Befehl {{incode|import}} in das Dokument aufgenommen werden. |
||
Dies erzeugt vorangestellte Funktionen, d.h. {{incode|module.function()}}. Dieses System verhindert Namenskonflikte mit Funktionen, die zwar den gleichen Namen tragen, aber aus verschiedenen Modulen stammen. |
|||
Beispielsweise können die beiden Funktionen {{incode|Arch.make_window()}} und {{incode|myModule.make_window()}} problemlos nebeneinander existieren. |
|||
Vollständige Beispiele sollten die notwendigen Importe und die vorangestellten Funktionen beinhalten. |
|||
Full examples should include the necessary imports and the prefixed functions. |
|||
{{Code|code= |
{{Code|code= |
||
import FreeCAD |
import FreeCAD as App |
||
import Draft |
|||
p1 = |
p1 = App.Vector(0, 0, 0) |
||
p2 = |
p2 = App.Vector(1, 1, 0) |
||
p3 = |
p3 = App.Vector(2, 0, 0) |
||
Wire = Draft. |
Wire = Draft.make_wire([p1, p2, p3], closed=True) |
||
}} |
}} |
||
{{Code|code= |
{{Code|code= |
||
import FreeCAD |
import FreeCAD as App |
||
import Draft |
|||
import Arch |
|||
p1 = |
p1 = App.Vector(0, 0, 0) |
||
p2 = |
p2 = App.Vector(1, 0, 0) |
||
p3 = |
p3 = App.Vector(1, 1, 0) |
||
p4 = |
p4 = App.Vector(0, 2, 0) |
||
pointslist = [p1, p2, p3, p4] |
pointslist = [p1, p2, p3, p4] |
||
Wire = Draft. |
Wire = Draft.make_wire(pointslist, closed=True, face=True) |
||
Structure = Arch. |
Structure = Arch.make_structure(Wire, name="Big pillar") |
||
}} |
}} |
||
{{Powerdocnavi{{#translation:}}}} |
|||
[[Category:API Documentation]] |
|||
[[Category:Developer Documentation]] |
[[Category:Developer Documentation{{#translation:}}]] |
||
[[Category: |
[[Category:API{{#translation:}}]] |
||
[[Category: |
[[Category:Python Code{{#translation:}}]] |
||
[[Category:Glossary{{#translation:}}]] |
Latest revision as of 10:13, 17 October 2021
Beschreibung
Python ist eine allgemeine, hochrangige Programmiersprache, die in großen Anwendungen sehr häufig verwendet wird, um einige Aufgaben zu automatisieren, indem man Skripte erstellt oder Makros.
In FreeCAD kann Python Code verwendet werden, um verschiedene Elemente programmgesteuert zu erstellen, ohne auf die grafische Benutzeroberfläche klicken zu müssen. Darüber hinaus sind viele Werkzeuge und Arbeitsbereiche von FreeCAD in Python programmiert.
Siehe |Einführung in Python, um mehr über die Programmiersprache Python zu erfahren, und dann Python Skript Tutorien und FreeCAD Skriptgrundlagen, um das Skripting in FreeCAD zu starten.
Lesbarkeit
Die Lesbarkeit von Python Code ist einer der wichtigsten Aspekte dieser Sprache. Die Verwendung eines klaren und konsistenten Stils innerhalb der Python Gemeinschaft erleichtert Beiträge von verschiedenen Entwicklern, da die meisten erfahrenen Python Programmierer erwarten, dass der Code auf eine bestimmte Art und Weise formatiert ist und bestimmten Regeln folgt. Beim Schreiben von Python Code ist es ratsam, PEP8: Style Guide for Python Code und PEP257: Docstring Conventions zu befolgen.
Diese Dokumente bieten Erklärungen in einer benutzerfreundlicheren Form:
- Wie man schönen Python Code mit PEP 8 schreibt
- Python Code dokumentieren: Ein vollständiger Leitfaden.
Konventionen
In dieser Dokumentation sollten einige Konventionen für Python Beispiele eingehalten werden.
Dies ist eine typische Funktionssignatur
Wire = make_wire(pointslist, closed=False, placement=None, face=None, support=None)
- Argumente mit Schlüsselwert Paaren sind optional, wobei der Standardwert in der Signatur angegeben ist. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:
Wire = make_wire(pointslist, False, None, None, None)
Wire = make_wire(pointslist, False, None, None)
Wire = make_wire(pointslist, False, None)
Wire = make_wire(pointslist, False)
Wire = make_wire(pointslist)
- In diesem Beispiel hat das erste Argument keinen Standardwert, daher sollte es immer einbezogen werden.
- Wenn die Argumente mit dem expliziten Schlüssel angegeben werden, können die optionalen Argumente in beliebiger Reihenfolge angegeben werden. Das bedeutet, dass die folgenden Aufrufe gleichwertig sind:
Wire = make_wire(pointslist, closed=False, placement=None, face=None)
Wire = make_wire(pointslist, closed=False, face=None, placement=None)
Wire = make_wire(pointslist, placement=None, closed=False, face=None)
Wire = make_wire(pointslist, support=None, closed=False, placement=None, face=None)
- Pythons Richtlinien betonen die Lesbarkeit von Code; insbesondere sollten Klammern unmittelbar auf den Funktionsnamen folgen, und ein Leerzeichen sollte einem Komma folgen.
p1 = Vector(0, 0, 0)
p2 = Vector(1, 1, 0)
p3 = Vector(2, 0, 0)
Wire = make_wire([p1, p2, p3], closed=True)
- Wenn Code über mehrere Zeilen gebrochen werden muss, sollte dies mit einem Komma in Klammern oder Klammern erfolgen; die zweite Zeile sollte mit der vorherigen übereinstimmen.
a_list = [1, 2, 3,
2, 4, 5]
Wire = make_wire(pointslist,
False, None,
None, None)
- Funktionen können ein Objekt zurückgeben, das als Basis für eine andere Zeichenfunktion verwendet werden kann.
Wire = make_wire(pointslist, closed=True, face=True)
Window = make_window(Wire, name="Big window")
Importe
Python Funktionen werden in Dateien gespeichert, die Module genannt werden. Bevor eine Funktion in diesem Modul verwendet wird, muss das Modul mit dem Befehl import
in das Dokument aufgenommen werden.
Dies erzeugt vorangestellte Funktionen, d.h. module.function()
. Dieses System verhindert Namenskonflikte mit Funktionen, die zwar den gleichen Namen tragen, aber aus verschiedenen Modulen stammen.
Beispielsweise können die beiden Funktionen Arch.make_window()
und myModule.make_window()
problemlos nebeneinander existieren.
Vollständige Beispiele sollten die notwendigen Importe und die vorangestellten Funktionen beinhalten.
import FreeCAD as App
import Draft
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 1, 0)
p3 = App.Vector(2, 0, 0)
Wire = Draft.make_wire([p1, p2, p3], closed=True)
import FreeCAD as App
import Draft
import Arch
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1, 0, 0)
p3 = App.Vector(1, 1, 0)
p4 = App.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]
Wire = Draft.make_wire(pointslist, closed=True, face=True)
Structure = Arch.make_structure(Wire, name="Big pillar")
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub