Python

From FreeCAD Documentation
Jump to: navigation, search
This page is a translated version of the page Python and the translation is 95% complete.

Other languages:
Deutsch • ‎English • ‎français • ‎italiano • ‎română • ‎русский • ‎Türkçe
(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, wird die zukünftige Entwicklung von FreeCAD ausschließlich mit Python 3 durchgeführt, und die Abwärtskompatibilität wird nicht unterstützt.


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.

Beim Schreiben von Python-Code ist es ratsam,PEP8: Style Guide for Python Code zu beachten.

Konventionen

In dieser Dokumentation sollten einige Konventionen für Python-Beispiele eingehalten werden.

Dies ist eine typische Funktionssignatur

Wire = makeWire(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 = makeWire(pointslist, False, None, None, None)
Wire = makeWire(pointslist, False, None, None)
Wire = makeWire(pointslist, False, None)
Wire = makeWire(pointslist, False)
Wire = makeWire(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 = makeWire(pointslist, closed=False, placement=None, face=None)
Wire = makeWire(pointslist, closed=False, face=None, placement=None)
Wire = makeWire(pointslist, placement=None, closed=False, face=None)
Wire = makeWire(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 = makeWire([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 = makeWire(pointslist,
                False, None,
                None, None)
  • Funktionen können ein Objekt zurückgeben, das als Basis für eine andere Zeichenfunktion verwendet werden kann.
Wire = makeWire(pointslist, closed=True, face=True)
Window = makeWindow(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.

Dadurch werden vorangestellte Funktionen erzeugt, d.h. module.function(). Dieses System verhindert Namenskonflikte mit Funktionen, die gleich benannt sind, aber aus verschiedenen Modulen stammen. So können beispielsweise die beiden Funktionen Arch.makeWindow() und myModule.makeWindow() problemlos nebeneinander existieren.

Vollständige Beispiele sollten die notwendigen Importe und die vorangestellten Funktionen beinhalten.

import FreeCAD, Draft

p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 1, 0)
p3 = FreeCAD.Vector(2, 0, 0)
Wire = Draft.makeWire([p1, p2, p3], closed=True)
import FreeCAD, Draft, Arch

p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(1, 0, 0)
p3 = FreeCAD.Vector(1, 1, 0)
p4 = FreeCAD.Vector(0, 2, 0)
pointslist = [p1, p2, p3, p4]

Wire = Draft.makeWire(pointslist, closed=True, face=True)
Structure = Arch.makeStructure(Wire, name="Big pillar")