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): Eine benutzerdefinierte Klasse, die mit diesem Objekt verknüpft ist. Diese existiert nur für die Python-Version. Siehe Scripting.PartShape): Ein mit diesem Objekt verbundene Part TopoForm.Material): das Material des Objekts.Placement): die Position des Objekts. Die Platzierung wird durch einen Basis-Punkt (Vektor) und eine Rotation (Achse und Winkel) definiert. Siehe Positionierung.
0° (null Grad).0 und 1. Liegt ein Wert über 1, wird der Vektor so normalisiert, dass seine Größe 1 beträgt. Standardmäßig ist dies die positive Z-Achse (0, 0, 1).(0, 0, 0).String): In Arbeit. eingeführt in 1.1String): Der vom Benutzer editierbare Name dieses Objekts, es handelt sich um eine beliebige UTF8-Zeichenkette.String): Eine längere, vom Benutzer bearbeitbare Beschreibung dieses Objekts. Es handelt sich um eine beliebige UTF8-Zeichenkette, die Zeilenumbrüche enthalten kann. Standardmäßig ist es eine leere Zeichenkette "".ExpressionEngine): Eine Liste von Ausdrücken. Standardmäßig ist sie leer [].Bool): ob das Objekt angezeigt werden soll oder nicht.
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): Wenn dies zutrifft, wird das Objekt die Begrenzungsbox in der 3D-Ansicht anzeigen.Enumeration): Flat Lines (reguläre Visualisierung), Shaded (keine Kanten), Wireframe (keine Flächen), Points (nur Knoten).Bool): Wenn true (wahr), wird das Objekt in der Baumansicht angezeigt, andernfalls wird es in der Baumansicht ausgeblendet. Sobald ein Objekt in der Baumansicht unsichtbar ist, kann man es wieder anzeigen, indem das Kontextmenü über dem Namen des Dokuments geöffnet wird (Rechtsklick) und true gesetzt werden.Bool): Wenn true (wahr), wird ein Koordinatensystem angezeigt, das die Daten-EigenschaftPlacement des Objekts angibt. eingeführt in 1.1Bool): Wenn true (wahr), erscheint das Objekt in der 3D-Ansicht; andernfalls ist es unsichtbar. Standardmäßig kann diese Eigenschaft durch Drücken der Leertaste ein- und ausgeschaltet werden.Objektstil
Angle): Dies ist eine Ergänzung zu AnsichtDeviation. Es handelt sich um eine weitere Möglichkeit, die Feinheit der Netzgenerierung für die Darstellung auf dem Bildschirm oder beim Export festzulegen. Der Standardwert ist 28,5 Grad oder 0,5 Radiant. Dies ist der Maximalwert. Je kleiner der Wert, desto glatter ist das Erscheinungsbild und desto feiner ist das exportierte Netz.FloatConstraint): Dies ist eine Ergänzung zu AnsichtAngular Deflection. Es handelt sich um eine weitere Möglichkeit, die Feinheit der Netzgenerierung für die Darstellung auf dem Bildschirm oder beim Export festzulegen. Der Standardwert ist 0,5 %. Dies ist der Maximalwert. Je kleiner der Wert, desto glatter ist das Erscheinungsbild und desto feiner ist das exportierte Netz.Enumeration): Solid (Standard), Dashed, Dotted, Dashdot; definiert den Stil der Kanten.Enumeration): Two side (Standard), One side; die Beleuchtung kommt aus zwei Seiten oder einer Seite in der 3D-Ansicht.Color): ein Tupel aus vier RGBA-Werten mit Gleitkomma, um die Farbe der Kanten zu definieren.ColorList): Eine Liste von RGBA-Tupeln, die Farben definieren, ähnlich wie AnsichtLine Color.Material): Ein App-Material, das mit den Kanten in diesem Objekt verknüpft ist. Standardmäßig ist es leer.FloatConstraint): Eine Fließkommazahl, die die Breite der Kanten in Pixeln bestimmt.Color): Ähnlich zu AnsichtLine Color, legt die Farbe der Eckpunkte fest.ColorList): Es handelt sich um eine Liste von RGBA-Tupeln, die Farben definieren, ähnlich wie AnsichtPoint Color.Material): Ein App-Material die mit den Eckpunkten in diesem Objekt verbunden sind. Standardmäßig ist es leer.FloatConstraint): Ähnlich zu AnsichtLine Width, legt die Größe der Eckpunkte fest.MaterialList): Eine Liste von App-Materialien Festlegen des Aussehens des Objekts. Standardmäßig enthält die Liste ein einzelnes Element, das dann für alle Flächen des Objekts verwendet wird. Alternativ kann sie für jede Fläche ein separates App-Material enthalten. Siehe Part FarbeProFläche. Im Eigenschafteneditor wird nur das erste App-Material angezeigt. Wenn es bearbeitet wird, erhält man eine Liste mit einem einzigen Element. Ein App-Material hat die folgenden Eigenschaften:
Percent): Eine ganze Zahl zwischen 0 und 100, die den Grad der Transparenz der Flächen bestimmt. Der Wert 100 bedeutet, dass die Flächen vollständig unsichtbar sind. Die Flächen sind zwar unsichtbar, können aber dennoch ausgewählt werden, solange AnsichtSelectable auf true gesetzt ist. Durch Ändern dieser Eigenschaft wird auch die Liste AnsichtShape Appearance des Objekts geändert. Die resultierende Liste enthält dann nur noch einen einzigen Eintrag.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.