Part scripting/de: Difference between revisions

From FreeCAD Documentation
(Created page with "Aktualisiert das Dokument. Damit auch die visuelle Darstellung des neuen Part-Objekts.")
No edit summary
 
(36 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{Docnav/de
|[[FreeCAD_Scripting_Basics /de |FreeCAD Grundlagen Skripten]]
|[[Topological_data_scripting /de |Topologische Daten skripten]]
}}


{{TOCright}}
{{TOCright}}


<span id="Introduction"></span>
==Einführung==
==Einführung==


Die im Modul Part verwendete Hauptdatenstruktur ist der Datentyp [http://en.wikipedia.org/wiki/Boundary_representation BRep] von OpenCascade.
Die im Modul Part verwendete Hauptdatenstruktur ist der Datentyp [http://en.wikipedia.org/wiki/Boundary_representation BRep] von [[OpenCASCADE/de|OpenCASCADE]].
Fast alle Inhalte und Objekttypen des Part Moduls sind per [[Python/de|Python]] Skripten verfügbar. Dazu gehören geometrische Primitive wie Linie und Kreis (oder Bogen) und die gesamte Palette der TopoFormen, wie Knoten, Kanten, Drähte, Flächen, Festkörper und Verbünde. Für jedes dieser Objekte gibt es mehrere Erstellungsmethoden, und für einige von ihnen, insbesondere die TopoFormen, sind auch fortgeschrittene Operationen wie Bool'sche Vereinigung/Differenz/Überschneidung verfügbar. Entdecke den Inhalt des Part Moduls, wie auf der Seite [[FreeCAD Scripting Basics/de|FreeCAD Grundlagen SKripten]] beschrieben, um mehr zu erfahren.
Fast alle Inhalte und Objekttypen des Part Moduls stehen dem [[Python/de|Python]]-Skripten zur Verfügung. Dazu gehören geometrische Primitive wie Linien, Kreise, Bögen und die gesamte Palette der TopoFormen, wie Knoten, Kanten, Drähte, Flächen, Volumenkörper und Verbünde. Für jedes dieser Objekte gibt es mehrere Erstellungsmethoden, und für einige von ihnen, insbesondere die TopoFormen, sind auch fortgeschrittene Operationen wie Boolesche Vereinigung/Differenz/Überschneidung verfügbar. Entdecke den Inhalt des Moduls Part, wie auf der Seite [[FreeCAD_Scripting_Basics/de|FreeCAD Grundlagen Skripten]] beschrieben, um mehr zu erfahren.


Das grundlegendste Objekt, das erstellt werden kann, ist ein [[Part Feature/de|Part Formelement]], das eine einfache {{PropertyData/de|Platzierungs}} Eigenschaft und Grundeigenschaften hat, um seine Farbe und sein Aussehen zu definieren.
Das grundlegendste Objekt, das erstellt werden kann, ist ein [[Part_Feature/de|Part Formelement]], das eine einfache {{PropertyData/de|Placement}} und Grundeigenschaften hat, um seine Farbe und sein Aussehen zu definieren.


Ein weiteres einfaches Objekt, das in geometrischen 2D Objekten verwendet wird, ist [[Part Part2DObject/de|Part Part2DObjekt]], das die Basis von [[Sketcher_SketchObject/de|Skizzierer SkizzeObjekt]] ist. ([[Sketcher Workbench/de|Skizzierer]]), und die meisten [[Draft Workbench/de|Entwurfselemente]].
Ein weiteres einfaches Objekt, das in geometrischen 2D-Objekten verwendet wird, ist das [[Part_Part2DObject/de|Part Part2DObjekt]], das die Basis des [[Sketcher_SketchObject/de|Sketcher SketchObject]]s und der meisten [[Draft Workbench/de|Draft]]-Elemente ist.


<span id="See_also"></span>
===Siehe auch===
===Siehe auch===


Line 17: Line 24:
* [[OpenCASCADE/de|OpenCASCADE]]
* [[OpenCASCADE/de|OpenCASCADE]]


<span id="Test_script"></span>
==Testskript==
==Testskript==


Teste die Erstellung von [[Part_Primitives/de|Part Grundelementen]] mit einem Skript. {{Version|0.19}}
Teste die Erstellung von [[Part_Primitives/de|Part Grundelementen]] mit einem Skript.


{{Code|code=
{{Code|code=
Line 27: Line 35:


Dieses Skript befindet sich im Installationsverzeichnis des Programms und kann untersucht werden, um zu sehen, wie die Basisgrundelemente aufgebaut sind.
Dieses Skript befindet sich im Installationsverzeichnis des Programms und kann untersucht werden, um zu sehen, wie die Basisgrundelemente aufgebaut sind.

{{Code|code=
{{Code|code=
$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py
$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py
}}
}}


<span id="Examples"></span>
==Beispiele==
==Beispiele==


<span id="Line"></span>
Zum erstellen eines Linienelements schalte um zur Python Konsole und gib ein:
===Linie===

Zum erstellen eines Linienelements schalte um zur [[Python_console/de|Python-Konsole]] und gib ein:


{{Code|code=
{{Code|code=
import Part,PartGui
import FreeCAD as App
import Part
doc=App.newDocument()

l=Part.LineSegment()
doc = App.newDocument()
l.StartPoint=(0.0,0.0,0.0)

l.EndPoint=(1.0,1.0,1.0)
line = Part.LineSegment()
doc.addObject("Part::Feature","Line").Shape=l.toShape()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

doc.recompute()
doc.recompute()
}}
}}


Lass uns das obige Python Beispiel Schritt für Schritt betrachten:
Das obige Python-Beispiel Schritt für Schritt betrachtet:


{{Code|code=
{{Code|code=
import Part,PartGui
import FreeCAD as App
import Part
doc=App.newDocument()
doc = App.newDocument()
}}
}}


lädt die Part Modul und erstellt ein neues Dokument
Dies lädt die Module FreeCAD und Part und erstellt ein neues Dokument.


{{Code|code=
{{Code|code=
l=Part.LineSegment()
line = Part.LineSegment()
l.StartPoint=(0.0,0.0,0.0)
line.StartPoint = (0.0, 0.0, 0.0)
l.EndPoint=(1.0,1.0,1.0)
line.EndPoint = (1.0, 1.0, 1.0)
}}
}}


Line 63: Line 82:


{{Code|code=
{{Code|code=
doc.addObject("Part::Feature","Line").Shape=l.toShape()
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()
}}
}}


Dadurch wird dem Dokument ein Part Objekttyp hinzugefügt und weist die Formdarstellung des Liniensegments der 'Form' Eigenschaft des hinzugefügten Objekts zu. Es ist wichtig, hier zu verstehen, dass wir ein geometrisches Grundelement (das Part.LineSegment) verwendet haben, um daraus eine TopoForm zu erstellen (die toShape() Methode). Nur Formen können dem Dokument hinzugefügt werden. In FreeCAD werden Geometrie Grundelemente als "Baustrukturen" für Formen verwendet.
Dies fügt dem Dokument ein Part-Objekt hinzu und weist die Formdarstellung des Liniensegments der Eigenschaft {{Incode|Form}} des hinzugefügten Objekts zu. Es ist hier wichtig zu verstehen, dass wir ein geometrisches Grundelement (das {{Incode|Part.LineSegment}}) verwenden, um daraus eine TopoForm zu erstellen (mit der Methode {{Incode|toShape()}}). Nur Formen können dem Dokument hinzugefügt werden. In FreeCAD werden geometrische Grundelemente als "Bauelemente" für Formen verwendet.


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


Aktualisiert das Dokument. Damit auch die visuelle Darstellung des neuen Part-Objekts.
Aktualisiert das Dokument. Dies bereitet auch die visuelle Darstellung des neuen Part-Objekts auf.


Note that a Line Segment can be created by specifying its start and endpoint directly in the constructor, for example Part.LineSegment(point1,point2), or we can create a default line and set its properties afterwards, as we did here.
Beachte, dass ein Linienabschnitt auch durch Angabe von Anfangs- und Endpunkt direkt im Konstruktor erstellt werden kann, z.B. {{Incode|Part.LineSegment(point1, point2)}}, oder wir können eine Standardlinie erstellen und ihre Eigenschaften im Nachhinein festlegen, wie wir es hier gemacht haben.


Eine Linie kann auch erstellt werden mit:
A Line can be created also using:


{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD as App
import Part
import Part
DOC = FreeCAD.newDocument()


def mycreateLine(pt1, pt2, objName):
def my_create_line(pt1, pt2, obj_name):
obj = DOC.addObject("Part::Line", objName)
obj = App.ActiveDocument.addObject("Part::Line", obj_name)
obj.X1 = pt1[0]
obj.X1 = pt1[0]
obj.Y1 = pt1[2]
obj.Y1 = pt1[1]
obj.Z1 = pt1[2]
obj.Z1 = pt1[2]


Line 93: Line 112:
obj.Z2 = pt2[2]
obj.Z2 = pt2[2]


DOC.recompute()
App.ActiveDocument.recompute()
return obj
return obj


line = mycreateLine((0,0,0), (0,10,0), "LineName")
line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")
}}
}}


<span id="Circle"></span>
A circle can be created in a similar way:
===Kreis===

Ein Kreis kann auf ähnliche Weise erstellt werden:


{{Code|code=
{{Code|code=
import FreeCAD as App
import Part
import Part

doc = App.activeDocument()
doc = App.activeDocument()

c = Part.Circle()
circle = Part.Circle()
c.Radius=10.0
circle.Radius = 10.0
f = doc.addObject("Part::Feature", "Circle")
obj = doc.addObject("Part::Feature", "Circle")
f.Shape = c.toShape()
obj.Shape = circle.toShape()

doc.recompute()
doc.recompute()
}}
}}


Oder mit:
or using:


{{Code|code=
{{Code|code=
import FreeCAD
import FreeCAD as App
import Part
import Part
DOC = FreeCAD.newDocument()


def mycreateCircle(rad, objName):
def my_create_circle(rad, obj_name):
obj = DOC.addObject("Part::Circle", objName)
obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
obj.Radius = rad
obj.Radius = rad


DOC.recompute()
App.ActiveDocument.recompute()
return obj
return obj


circle = mycreateCircle(5.0, "CircleName")
circle = my_create_circle(5.0, "CircleName")
}}
}}


Alternativ kann ein Kreis durch das Festlegen von Mittelpunkt, Achse und Radius:
Note again, we used the circle (geometry primitive) to construct a shape out of it. We can of course still access our construction geometry afterwards, by doing:


{{Code|code=
{{Code|code=
import FreeCAD as App
s = f.Shape
import Part
e = s.Edges[0]

c = e.Curve
doc = App.activeDocument()

center = App.Vector(1, 2, 3)
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()
}}
}}


Oder durch das Festlegen dreier Punkte auf seinem Umfang:
Here we take the shape of our object f, then we take its list of edges. In this case there will be only one because we made the whole shape out of a single circle, so we take only the first item of the Edges list, and we takes its curve. Every Edge has a Curve, which is the geometry primitive it is based on.


{{Code|code=
Head to the [[Topological data scripting|Topological data scripting]] page if you would like to know more.
import FreeCAD as App
import Part


doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()
}}

Beachte wieder, wir verwendeten den Kreis (geometrisches Grundelement), um eine Form zu erstellen. Wir können natürlich weiterhin im Nachhinein auf unsere Konstruktionsgeometrie zugreifen, und zwar so:

{{Code|code=
shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve
}}

Hier nehmen wir die Form {{Incode|Shape}} unseres Objekts {{Incode|obj}} und dann seine Liste der Kanten {{Incode|Edges}}. In diesem Fall wird es nur eine Kante geben, weil wir die ganze Form aus einem einzelnen Kreis erstellt haben. So nehmen wir nur das erste Element der Liste der Kanten {{Incode|Edges}} und danach seine Kurve. Jede Kante hat eine Kurve {{Incode|Curve}}, die das geometrische Grundelement ist, auf dem die Kante basiert.

<span id="Arc"></span>
===Bogen===

Ein Bogen kann auch so erstellt werden:

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()
}}

Dies zeichnet einen Halbkreis. Der Mittelpunkt liegt bei (0, 0, 0). Der Radius ist 10. P1 ist der Startpunkt auf der positiven X-Achse. P2 ist der Mittelpunktauf der positiven Y-Achse und P3 ist der Endpunkt auf der negativen X-Achse.

Ein Bogen kann auch aus einem Kreis erstellt werden:

{{Code|code=
import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()
}}

Er benötigt einen Kreis sowie Start- und Endwinkel im Bogenmaß.


{{Docnav/de
|[[FreeCAD_Scripting_Basics /de |FreeCAD Grundlagen Skripten]]
|[[Topological_data_scripting /de |Topologische Daten skripten]]
}}


{{Powerdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}
Line 145: Line 253:
[[Category:Python Code{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
{{Part Tools navi{{#translation:}}}}
{{Part Tools navi{{#translation:}}}}
{{clear}}

Latest revision as of 21:55, 22 May 2023

Einführung

Die im Modul Part verwendete Hauptdatenstruktur ist der Datentyp BRep von OpenCASCADE. Fast alle Inhalte und Objekttypen des Part Moduls stehen dem Python-Skripten zur Verfügung. Dazu gehören geometrische Primitive wie Linien, Kreise, Bögen und die gesamte Palette der TopoFormen, wie Knoten, Kanten, Drähte, Flächen, Volumenkörper und Verbünde. Für jedes dieser Objekte gibt es mehrere Erstellungsmethoden, und für einige von ihnen, insbesondere die TopoFormen, sind auch fortgeschrittene Operationen wie Boolesche Vereinigung/Differenz/Überschneidung verfügbar. Entdecke den Inhalt des Moduls Part, wie auf der Seite FreeCAD Grundlagen Skripten beschrieben, um mehr zu erfahren.

Das grundlegendste Objekt, das erstellt werden kann, ist ein Part Formelement, das eine einfache Daten-EigenschaftPlacement und Grundeigenschaften hat, um seine Farbe und sein Aussehen zu definieren.

Ein weiteres einfaches Objekt, das in geometrischen 2D-Objekten verwendet wird, ist das Part Part2DObjekt, das die Basis des Sketcher SketchObjects und der meisten Draft-Elemente ist.

Siehe auch

Testskript

Teste die Erstellung von Part Grundelementen mit einem Skript.

import parttests.part_test_objects as pto
pto.create_test_file("example_file")

Dieses Skript befindet sich im Installationsverzeichnis des Programms und kann untersucht werden, um zu sehen, wie die Basisgrundelemente aufgebaut sind.

$INSTALL_DIR/Mod/Part/parttests/part_test_objects.py

Beispiele

Linie

Zum erstellen eines Linienelements schalte um zur Python-Konsole und gib ein:

import FreeCAD as App
import Part

doc = App.newDocument()

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)
obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

doc.recompute()

Das obige Python-Beispiel Schritt für Schritt betrachtet:

import FreeCAD as App
import Part
doc = App.newDocument()

Dies lädt die Module FreeCAD und Part und erstellt ein neues Dokument.

line = Part.LineSegment()
line.StartPoint = (0.0, 0.0, 0.0)
line.EndPoint = (1.0, 1.0, 1.0)

Line ist eigentlich eine Linienabschnitt, folglich der Anfangs- und Endpunkt.

obj = doc.addObject("Part::Feature", "Line")
obj.Shape= line.toShape()

Dies fügt dem Dokument ein Part-Objekt hinzu und weist die Formdarstellung des Liniensegments der Eigenschaft Form des hinzugefügten Objekts zu. Es ist hier wichtig zu verstehen, dass wir ein geometrisches Grundelement (das Part.LineSegment) verwenden, um daraus eine TopoForm zu erstellen (mit der Methode toShape()). Nur Formen können dem Dokument hinzugefügt werden. In FreeCAD werden geometrische Grundelemente als "Bauelemente" für Formen verwendet.

doc.recompute()

Aktualisiert das Dokument. Dies bereitet auch die visuelle Darstellung des neuen Part-Objekts auf.

Beachte, dass ein Linienabschnitt auch durch Angabe von Anfangs- und Endpunkt direkt im Konstruktor erstellt werden kann, z.B. Part.LineSegment(point1, point2), oder wir können eine Standardlinie erstellen und ihre Eigenschaften im Nachhinein festlegen, wie wir es hier gemacht haben.

Eine Linie kann auch erstellt werden mit:

import FreeCAD as App
import Part

def my_create_line(pt1, pt2, obj_name):
    obj = App.ActiveDocument.addObject("Part::Line", obj_name)
    obj.X1 = pt1[0]
    obj.Y1 = pt1[1]
    obj.Z1 = pt1[2]

    obj.X2 = pt2[0]
    obj.Y2 = pt2[1]
    obj.Z2 = pt2[2]

    App.ActiveDocument.recompute()
    return obj

line = my_create_line((0, 0, 0), (0, 10, 0), "LineName")

Kreis

Ein Kreis kann auf ähnliche Weise erstellt werden:

import FreeCAD as App
import Part

doc = App.activeDocument()

circle = Part.Circle() 
circle.Radius = 10.0  
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Oder mit:

import FreeCAD as App
import Part

def my_create_circle(rad, obj_name):
    obj = App.ActiveDocument.addObject("Part::Circle", obj_name)
    obj.Radius = rad

    App.ActiveDocument.recompute()
    return obj

circle = my_create_circle(5.0, "CircleName")

Alternativ kann ein Kreis durch das Festlegen von Mittelpunkt, Achse und Radius:

import FreeCAD as App
import Part

doc = App.activeDocument()

center = App.Vector(1, 2, 3)
axis = App.Vector(1, 1, 1)
radius = 10
circle = Part.Circle(center, axis, radius)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Oder durch das Festlegen dreier Punkte auf seinem Umfang:

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(0, 0, 10)
circle = Part.Circle(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Circle")
obj.Shape = circle.toShape()

doc.recompute()

Beachte wieder, wir verwendeten den Kreis (geometrisches Grundelement), um eine Form zu erstellen. Wir können natürlich weiterhin im Nachhinein auf unsere Konstruktionsgeometrie zugreifen, und zwar so:

shape = obj.Shape
edge = shape.Edges[0]
curve = edge.Curve

Hier nehmen wir die Form Shape unseres Objekts obj und dann seine Liste der Kanten Edges. In diesem Fall wird es nur eine Kante geben, weil wir die ganze Form aus einem einzelnen Kreis erstellt haben. So nehmen wir nur das erste Element der Liste der Kanten Edges und danach seine Kurve. Jede Kante hat eine Kurve Curve, die das geometrische Grundelement ist, auf dem die Kante basiert.

Bogen

Ein Bogen kann auch so erstellt werden:

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
arc = Part.Arc(p1, p2, p3)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Dies zeichnet einen Halbkreis. Der Mittelpunkt liegt bei (0, 0, 0). Der Radius ist 10. P1 ist der Startpunkt auf der positiven X-Achse. P2 ist der Mittelpunktauf der positiven Y-Achse und P3 ist der Endpunkt auf der negativen X-Achse.

Ein Bogen kann auch aus einem Kreis erstellt werden:

import FreeCAD as App
import Part

doc = App.activeDocument()

p1 = App.Vector(10, 0, 0)
p2 = App.Vector(0, 10, 0)
p3 = App.Vector(-10, 0, 0)
circle = Part.Circle(p1, p2, p3)
arc = Part.ArcOfCircle(circle, 0.0, 0.7854)
obj = doc.addObject("Part::Feature", "Arc")
obj.Shape = arc.toShape()

doc.recompute()

Er benötigt einen Kreis sowie Start- und Endwinkel im Bogenmaß.