Ein Part Formelement-Objekt, oder formal ein Part:: Feature, ist ein einfaches Element mit einer topologischen Form, das in der 3D-Ansicht angezeigt werden kann.
Das Part-Formelement ist die Elternklasse der meisten 2D-(Draft-, Sketcher-) und 3D- (Part-, PartDesign-) Objekte, mit Ausnahme von Polygonnetzen, die normalerweise auf demMesh Formelement oder dem FEM Polygonnetz-Objekt für FEM-Objekte basieren.
Vereinfachtes Diagramm der Beziehungen zwischen den Kernobjekten in FreeCAD
Das Part-Formelement ist ein internes Objekt, kann also nicht von der grafischen Oberfläche aus erstellt werden, sondern nur von der Python-Konsole aus, wie im Abschnitt Skripten beschrieben.
Das Part::Feature wird im Arbeitsbereich Part definiert, kann aber als Basisklasse für skriptgenerierte Objekte in allen Arbeitsbereichen verwendet werden, die 2D- und 3D-Geometrieformen erstellen. Im Wesentlichen sind alle im Arbeitsbereich Part erstellten Objekte Instanzen eines Part::Features.
Das Part::Feature ist auch die Elternklasse des PartDesign Körpers, der PartDesign Formelemente und der Part Part2DObjekte, die auf 2D-(planare) Formen spezialisiert ist.
Arbeitsbereiche können diesem Grundelement weitere Eigenschaften hinzufügen, um ein Objekt mit komplexem Verhalten zu erzeugen.
Siehe Eigenschaft für alle Eigenschaftstypen, die geskriptete Objekte haben können.
Das Part-Formelement (Klasse Part::Feature) wird von dem Grundelement App GeoFeature (Klasse App::GeoFeature) abgeleitet, und erbt alle seine Eigenschaften. Es besitzt auch einige zusätzliche Eigenschaften. Hervorzuheben ist eine Daten-EigenschaftShape, die die Part TopoForm des Objekts speichert. Dies ist die Geometrie, die in der 3D-Ansicht gezeigt wird. Andere Eigenschaften die dieses Objekt besitzt, sind solche die die Darstellung der TopoForm beeinflussen.
Diese sind die im Eigenschafteneditor vorhandenen Eigenschaften. Ausgeblendete Eigenschaften können mit dem Befehl Ausgeblendete anzeigen im Kontextmenü des Eigenschafteneditors angezeigt werden.
Base
PythonObject): a custom class associated with this object. This only exists for the Python version. See Scripting.PartShape): a Part TopoShape associated with this object.Material): the material of the object.Placement): the position of the object. The placement is defined by a Base point (vector), and a Rotation (axis and angle). See Placement.
0° (zero degrees).0 and 1. If any value is above 1, the vector is normalized so that the magnitude of the vector is 1. By default, it is the positive Z axis, (0, 0, 1).(0, 0, 0).String): TBD. introduced in 1.1String): the user editable name of this object, it is an arbitrary UTF8 string.String): a longer, user editable description of this object, it is an arbitrary UTF8 string that may include newlines. By default, it is an empty string "".ExpressionEngine): a list of expressions. By default, it is empty [].Bool): whether to display the object or not.
Die meisten Objekte in FreeCAD verfügen über einen sogenannten Viewprovider, eine Klasse, die das visuelle Erscheinungsbild des Objekts in der 3D-Ansicht und in der Baumansicht definiert. Der Standard-Viewprovider von Part Formelement-Objekten definiert die folgenden Eigenschaften. Skriptbasierte Objekte, die von Part Formelement abgeleitet sind, haben ebenfalls Zugriff auf diese Eigenschaften.
Base
PythonObject): Eine benutzerdefinierte Viewprovider-Klasse, die mit diesem Objekt verknüpft ist. Diese existiert nur für die Python-Version. Siehe Skripten.Placement): Speichert den von Std Bewegen verwendeten Ursprung. eingeführt in 1.1Anzeigeoptionen
Bool): if true the object will show the bounding box in the 3D view.Enumeration): Flat Lines (regular visualization), Shaded (no edges), Wireframe (no faces), Points (only vertices).Bool): if true the object will appear in the Tree view; otherwise, the object will be hidden in the Tree view. Once an object in the tree is invisible, you can see it again by opening the context menu over the name of the document (right-click), and selecting true.Bool): if true a coordinate system indicating the DatenPlacement of the object is shown. introduced in 1.1Bool): if true the object appears in the 3D view; otherwise it is invisible. By default this property can be toggled on and off by pressing the Space bar.Objektstil
Angle): it is a companion to AnsichtDeviation. It is another way to specify how finely to generate the mesh for rendering on screen or when exporting. The default value is 28.5 degrees, or 0.5 radians. This is the maximum value, the smaller the value the smoother the appearance will be, and the finer the mesh that will be exported.FloatConstraint): it is a companion to AnsichtAngular Deflection. It is another way to specify how finely to generate the mesh for rendering on screen or when exporting. The default value is 0.5%. This is the maximum value, the smaller the value the smoother the appearance will be, and the finer the mesh that will be exported.Enumeration): Solid (default), Dashed, Dotted, Dashdot; defines the style of the edges.Enumeration): Two side (default), One side; the illumination comes from two sides or one side in the 3D view.Color): a tuple of four floating point RGBA values to define the color of the edges.ColorList): it is a list of RGBA tuples defining colors, similar to AnsichtLine Color.Material): an App Material associated with the edges in this object. By default it is empty.FloatConstraint): a float that determines the width in pixels of the edges.Color): similar to AnsichtLine Color, defines the color of the vertices.ColorList): it is a list of RGBA tuples defining colors, similar to AnsichtPoint Color.Material): an App Material associated with the vertices in this object. By default it is empty.FloatConstraint): similar to AnsichtLine Width, defines the size of the vertices.MaterialList): a list of App Materials defining the appearance of the object. By default the list contains a single item which is then used for all faces of the object. Alternatively it can contain a separate App Material for each face. See Part ColorPerFace. Only the first App Material is shown in the property editor. Editing it will result in a list with a single item. An App Material has the following properties:
Percent): an integer from 0 to 100 that determines the level of transparency of the faces. A value of 100 indicates completely invisible faces; the faces are invisible but they can still be picked as long as AnsichtSelectable is true. Changing this property will also change the AnsichtShape Appearance list of the object. The resulting list will contain a single item.Selection
Enumeration): Steuert die Art und Weise, wie die Auswahl in der 3D-Ansicht erfolgt, wenn das Objekt eine Form hat und viele Objekte teilweise von anderen verdeckt sind. Die Standardeinstellung ist Disabled, was bedeutet, dass keine besondere Hervorhebung erfolgt; Enabled bedeutet, dass das Objekt bei Auswahl über allen anderen Objekten angezeigt wird; Object bedeutet, dass das Objekt nur dann oben angezeigt wird, wenn das gesamte Objekt in der Baumansicht ausgewählt ist; Element bedeutet, dass das Objekt nur dann oben angezeigt wird, wenn ein Unterelement (Eckpunkt, Kante, Fläche) in der 3D-Ansicht ausgewählt ist.Bool): Wenn true, kann das Objekt mit dem Zeiger in der 3D-Ansicht ausgewählt werden. Andernfalls kann das Objekt nur in der Baumansicht ausgewählt werden.Enumeration): Steuert die Art und Weise, wie das Objekt hervorgehoben wird. Wenn es Shape ist, wird die gesamte Form (Eckpunkte, Kanten und Flächen) in der 3D-Ansicht hervorgehoben; wenn es BoundBox ist, erscheint ein Begrenzungsrahmen um das Objekt herum, der hervorgehoben wird.
Parameter für Verdrehwinkel und Winkelabweichung: d < lineare Abweichung, α < Winkelabweichung.
Die Abweichung ist ein Wert in Prozent, der mit den Abmaßen in mm der Bounding-Box des Objekts zusammenhängt. Die Abweichung in mm kann wie folgt berechnet werden:
deviation_in_mm = (w + h + d)/3 * deviation/100
wobei w, h, d die Begrenzungsrahmen Abmessungen sind.
Siehe auch: Grundlagen der Skripterstellung in FreeCAD und Skriptgenerierte Objekte.
Ein Part Formelement wird mit der addObject() Methode des Dokuments erstellt.
import FreeCAD as App
doc = App.newDocument()
obj = App.ActiveDocument.addObject("Part::Feature", "Name")
obj.Label = "Custom label"
Für Python-Subclassing sollte ein Part::FeaturePython-Objekt erstellt werden.
import FreeCAD as App
doc = App.newDocument()
obj = App.ActiveDocument.addObject("Part::FeaturePython", "Name")
obj.Label = "Custom label"
Siehe auch: Objektname für weitere Informationen zu den Eigenschaften von Name.
Die addObject-Methode hat zwei Basis-String-Argumente.
"Part::FeaturePython".Name definiert. Wenn es nicht angegeben wird, wird standardmäßig derselbe Name wie die Klasse verwendet, also "Part__FeaturePython". Der Name darf nur einfache alphanumerische Zeichen und den Unterstrich [_0-9a-zA-Z] enthalten. Wenn andere Symbole angegeben werden, werden diese in Unterstriche umgewandelt; beispielsweise wird "A+B:C*" in "A_B_C_" umgewandelt.
Falls gewünscht, kann das Attribut Label in einen aussagekräftigeren Text geändert werden.
Label kann jede UTF8-Zeichenkette akzeptieren, einschließlich Akzente und Leerzeichen. Da die Baumansicht das Label anzeigt, empfiehlt es sich, das Label in eine aussagekräftigere Zeichenkette zu ändern.Label genau wie Name eindeutig. Dieses Verhalten kann jedoch im Einstellungseditor geändert werden: Bearbeiten → Einstellungen → Allgemein → Dokument → Doppelte Objektbezeichnungen in einem Dokument zulassen. Das bedeutet, dass Label im Allgemeinen innerhalb desselben Dokuments wiederholt vorkommen kann. Beim Testen eines bestimmten Elements sollte sich der Benutzer daher eher auf Name als auf Label verlassen.