Einleitung
Alle Objekte im Programm haben einen Objektnamen, der sie in einem bestimmten Dokument eindeutig identifiziert.
Diese Informationen gelten für alle Objekte, die von einem Dokumentobjekt (App DocumentObject, d.h. der Klasse App::DocumentObject)abgeleitet sind, die im Wesentlichen alle Objekte umfasst, die in einem Dokument erstellt werden können.
Namen
Namen besitzen verschiedene Eigenschaften:
- Der
Namedarf nur einfache alphanumerische Zeichen, und den Unterstrich enthalten,[_0-9a-zA-Z]. - Der
Namedarf nicht mit einer Zahl beginnen; er muss mit mit einem Buchstaben oder Unterstrich beginnen,[_a-zA-Z]. - Der
Namewird zum Zeitpunkt der Erstellung des Objekts vergeben und kann danach nicht mehr verändert werden. Der Name kann nie geändert werden. - Der
Namedarf im gesamten Dokument nur ein einziges Mal vorkommen. Dabei ist es egal, ob zwei Objekte komplett unterschiedlich sind wie z.B. eine PartDesign Tasche und eine Arch Wand; sie müssen unterschiedliche Namen besitzen. - Werden Objekte der gleichen Art erstellt, wird der Name mit einer fortlaufenden Zahl ergänzt; ds ergibt
Box,Box001,Box002usw. Das verhindert doppelte Namen. - Sobald ein Objekt gelöscht wurde, kann sein
Namewieder für ein neu erstelltes Objekt verwendet werden. Das heißt, wenn die ObjekteBox,Box001undBox002vorhanden sind und das erste gelöscht wird, bekommt das nächste Objekt Part Box nicht den NamenBox003, sondern wiederBox, da diese Zeichenkette erneut verwendet werden kann. Es ist zu beachten, dass die NamenBox001oderBox002nicht inBoxgeändert werden können, da sie unveränderlich sind.
Zusammengefasst stellt der Name einen eindeutigen Identifikator (unique identifier, UID) eines Objekts dar. Da ein eindeutiger Name sehr eingeschränkt ist, besitzen Objekte auch noch die Eigenschaft Label, die ermöglicht, das Objekt "umzubenennen", also eine besser beschreibende Benennung hinzuzufügen. Der interne Name bleibt tatsächlich unverändert, aber die vom Benutzer editierbare Benennung Label kann in den meisten Fällen an Stelle des Namens verwendet werden. In der üblichen Verwendung im Programm bezieht sich "umbenennen" auf das Label (Benennung) und nicht auf den wirklichen Namen des Objekts.
Benennungen
Es gibt verschiedene Eigenschaften für Labels:
- Das
Labelkann jede UTF8-Zeichenkette akzeptieren, einschließlich Akzente und Leerzeichen. - Die Baumansicht zeigt tatsächlich das
Labeldes Objekts an, nicht denName. Daher empfiehlt es sich, bei der Erstellung eines neuen Objekts dasLabelin eine aussagekräftigere Zeichenfolge zu ändern. Um das Objekt umzubenennen (neu zu beschriften), wählt man es in der Baumansicht aus und drückt F2 (oder Return unter macOS) oder öffnt das Kontextmenü (Rechtsklick) und wählt Umbenennen. - Auch nach der Umbenennung (Neubeschriftung) eines Objekts wird der interne
Namean vielen Stellen weiterhin angezeigt, beispielsweise in der Statusleiste oder in der Auswahlansicht, wenn das Objekt ausgewählt ist. - Da die internen Funktionen des Programms die Objekte mit
Namereferenzieren, wird in vielen Dialogen zuerst derNameangezeigt, gefolgt von der vom Benutzer editierbarenBezeichnungin Klammern, zum BeispielBox (Extrudiertes Teil). - Standardmäßig ist das
Labeleindeutig, genau wie dasName. Dieses Verhalten kann jedoch im Voreinstellungseditor geändert werden, Edit → Preferences → General → Document → Allow duplicate object labels in one document. Das bedeutet, dassLabelim Dokument im Allgemeinen nicht eindeutig ist und tatsächlich wiederholt vorkommen kann. Es wird jedoch empfohlen, dieLabeleindeutig zu halten, da dies wahrscheinlich am nützlichsten ist, um verschiedene Objekte zu identifizieren. Beim Schreiben von benutzerdefinierten Funktionen, die Objekte manipulieren, sollten die Methoden denNamedes Objekts anstelle seinerLabelverwenden, um sicherzustellen, dass das richtige Objekt verwendet wird. - Bei der Verwendung von Ausdrücken, beispielsweise in der Eigenschaften-Ansicht oder in einer Tabelle, kann die Bezeichnung mithilfe von doppelten Klammern aus den Symbolen kleiner als und größer als referenziert werden.
<<Custom Label With Spaces>>.Height
<<Label may use UTF8 characters>>.Width
Label2
Es handelt sich um eine einfache Zeichenfolge, die beliebigen Text enthalten kann und daher zur Dokumentation (detaillierten Beschreibung) des erstellten Objekts verwendet werden kann.
- In der Baumansicht, das Feld neben dem Symbol unter "Beschreibung" bearbeiten, indem man darauf klickt und F2 (bzw. Return unter macOS) drückt.
- Man kann diese Eigenschaft auch ändern, indem man das Attribut
Label2in der Python-Konsole modifiziert. - Das Attribut Daten-EigenschaftLabel2 ist normalerweise im Eigenschaften-Ansicht ausgeblendet, kann aber durch Öffnen des Kontextmenüs (Rechtsklick) und Auswahl von Show hidden sichtbar gemacht werden.
Skripten
Siehe auch: Grundlagen der Skripterstellung in FreeCAD und Skriptgenerierte Objekte.
Jedes Objekt in der Software wird intern mit der Methode addObject() des Dokuments erstellt. Die meisten 2D- und 3D-Objekte, die der Benutzer in der 3D-Ansicht sieht, stammen von einem Part Formelement ab. Im folgenden Beispiel wird ein Part Quader-Objekt erstellt.
import FreeCAD as App
doc = App.newDocument()
obj = doc.addObject("Part::Box", "Name")
obj.Label = "Custom label"
Name
Die addObject-Methode hat zwei Basis-String-Argumente.
- Das erste Argument gibt den Objekttyp an, in diesem Fall,
"Part::Box". - Das zweite Argument ist eine Zeichenfolge, die das Attribut
Namedefiniert. Wenn es nicht angegeben wird, wird standardmäßig derselbe Name wie die Klasse des Objekts verwendet, d. h."Part__Box", wobei die beiden ungültigen Symbole, die Doppelpunkte::, durch zwei Unterstriche__ersetzt werden.- Der
Namedarf 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. - Der
Namedarf nicht mit einer Zahl beginnen, sondern muss mit einem Buchstaben oder einem Unterstrich beginnen,[_a-zA-Z]. Beispielsweise wird"123ABC"in"_23ABC"umgewandelt. - Der
Namewird bei der Erstellung festgelegt und kann anschließend nicht mehr geändert werden. - Der
Namemuss im gesamten Dokument eindeutig sein. Wenn derselbe"Name"verwendet wird, wird automatisch eine fortlaufende Nummer angehängt, damit die resultierenden Namen eindeutig sind. Wenn beispielsweise"Name"bereits vorhanden ist, werden neue Objekte"Name001","Name002","Name003"usw. genannt.
- Der
Benennung
Das Label ist eine Eigenschaft des erstellten Objekts und kann in einen aussagekräftigeren Text geändert werden.
- Bei der Erstellung des Objekts entspricht das
LabeldemName. - Im Gegensatz zum
Namekann dasLabeljedoch jede UTF8-Zeichenkette akzeptieren, einschließlich Akzenten und Leerzeichen. - Die
Labelkann jederzeit geändert werden, indem einfach die gewünschte Zeichenfolge zugewiesen wird:obj.Label = "New label"
Ein Objekt mit Namen oder Benennung aufrufen
Alle Objekte in einem Dokument sind Datenattribute des entsprechenden Dokument-Objekts. Der Name des Attributs entspricht dem internen Name des Objekts.
import FreeCAD as App
obj1 = App.ActiveDocument.Box
obj2 = App.ActiveDocument.Box001
obj3 = App.ActiveDocument.Box002
Dies entspricht der Verwendung der Methode getObject des Dokuments.
import FreeCAD as App
obj1 = App.ActiveDocument.getObject('Box')
obj2 = App.ActiveDocument.getObject('Box001')
obj3 = App.ActiveDocument.getObject('Box002')
Es ist jedoch auch möglich, das Objekt über die aussagekräftigere Bezeichnung Label abzurufen.
import FreeCAD as App
obj1 = App.ActiveDocument.getObjectsByLabel("Concrete wall")[0]
obj2 = App.ActiveDocument.getObjectsByLabel("Custom parallelepiped")[0]
obj3 = App.ActiveDocument.getObjectsByLabel("Some special name for this cube__002")[0]
Da das Label im Allgemeinen nicht eindeutig ist, gibt die Methode getObjectsByLabel eine Liste mit allen Objekten zurück, die mit diesem Label gefunden wurden. Ist das Label jedoch im Dokument eindeutig, sollte das erste Element in dieser Liste das gewünschte Objekt sein.
Diese Seite wird abgerufen von https://wiki.freecad.org/Object_name