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 besitzen verschiedene Eigenschaften:
Name darf nur einfache alphanumerische Zeichen, und den Unterstrich enthalten, [_0-9a-zA-Z].Name darf nicht mit einer Zahl beginnen; er muss mit mit einem Buchstaben oder Unterstrich beginnen, [_a-zA-Z].Name wird zum Zeitpunkt der Erstellung des Objekts vergeben und kann danach nicht mehr verändert werden. Der Name kann nie geändert werden.Name darf 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.Box, Box001, Box002 usw. Das verhindert doppelte Namen.Name wieder für ein neu erstelltes Objekt verwendet werden. Das heißt, wenn die Objekte Box, Box001 und Box002 vorhanden sind und das erste gelöscht wird, bekommt das nächste Objekt Part Box nicht den Namen Box003, sondern wieder Box, da diese Zeichenkette erneut verwendet werden kann. Es ist zu beachten, dass die Namen Box001 oder Box002 nicht in Box geä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.
There are various properties for Labels:
Label can accept any UTF8 string, including accents and spaces.Label of the object, not the Name. Therefore, whenever a new object is created, it is a good practice to change the Label to a more descriptive string. To rename (relabel) the object, select it in the tree view and press F2 (or rather Return on macOS), or open the context menu (right-click) and choose Rename.Name will still be reported in many places, for example, in the status bar or in the selection view, when the object is selected.Name, many dialogs will display the Name first, followed by the user editable Label in parentheses, for example, Box (Extruded piece).Label is unique, just like the Name. However, this behavior can be changed in the preferences editor, Edit → Preferences → General → Document → Allow duplicate object labels in one document. This means that in general the Label is not unique in the document, and may actually be repeated. However, the recommendation is to keep the Label unique, as this is probably what is most useful to identify different objects. When writing custom functions that manipulate objects, the methods should use the Name of the object rather than its Label to guarantee that the correct object is used.<<Custom Label With Spaces>>.Height
<<Label may use UTF8 characters>>.Width
Es handelt sich um eine einfache Zeichenfolge, die beliebigen Text enthalten kann und daher zur Dokumentation (detaillierten Beschreibung) des erstellten Objekts verwendet werden kann.
Label2 in der Python-Konsole modifiziert.
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"
Die addObject-Methode hat zwei Basis-String-Argumente.
"Part::Box".Name attribute. If it is not provided, it defaults to the same name as the class of the object, that is, "Part__Box", where the two invalid symbols, the colons ::, are replaced by two underscores __.
Name can only include simple alphanumeric characters, and the underscore, [_0-9a-zA-Z]. If other symbols are given, these will be converted to underscores; for example, "A+B:C*" is converted to "A_B_C_".Name cannot start with a number; it must start with a letter or the underscore, [_a-zA-Z]. For example, "123ABC" is converted to "_23ABC".Name is fixed at creation time; it cannot be modified afterwards.Name must be unique in the entire document. If the same "Name" is used, a sequential number will be appended automatically so that the resulting names are unique; for example, if "Name" already exists, then new objects will be called "Name001", "Name002", "Name003", etc.
Das Label ist eine Eigenschaft des erstellten Objekts und kann in einen aussagekräftigeren Text geändert werden.
Label dem Name.Name kann das Label jedoch jede UTF8-Zeichenkette akzeptieren, einschließlich Akzenten und Leerzeichen.Label kann jederzeit geändert werden, indem einfach die gewünschte Zeichenfolge zugewiesen wird: obj.Label = "New label"
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.