Nazwa obiektu
Wprowadzenie
Wszystkie obiekty w programie mają nazwę obiektu, która jednoznacznie identyfikuje je w obrębie danego dokumentu.
Informacje te dotyczą wszystkich obiektów pochodnych od App: Obiektu dokumentu (klasa App::DocumentObject
), która zasadniczo obejmuje wszystkie obiekty, które można utworzyć w dokumencie.
Nazwy
Nazwy mają różne właściwości:
Nazwa
może zawierać tylko proste znaki alfanumeryczne i znak podkreślenia,[_0-9a-zA-Z]
.Nazwa
nie może zaczynać się od cyfry, musi zaczynać się od litery lub podkreślenia,[_a-zA-Z]
.Nazwa
jest przypisywana w czasie tworzenia obiektu, później nie można jej już edytować. Nigdy nie można zmienić nazwy obiektu.Nazwa
musi być unikalna w całym dokumencie. Nie ma znaczenia, czy dwa obiekty są zupełnie różnych typów, na przykład jeden to kieszeń środowiska Projekt Części, a drugi to ściana środowiska Architektura. Muszą one mieć różne nazwy.- Podczas tworzenia obiektu tego samego typu, zwykle nazwa jest zwiększana o kolejny numer, a więc
Sześcian
,Sześcian001
,Sześcian002
itd. Zapobiega to kolizji nazw. - Po usunięciu obiektu, jego
Nazwa
staje się dostępna do użycia przez nowo utworzony obiekt. Oznacza to, że jeśli istnieją obiektySześcian
,Sześcian001
iSześcian002
, a my usuniemy pierwszy z nich, to następnym obiektem utworzonym za pomocą Part Box nie będzieSześcian003
, leczSześcian
, ponieważ ciąg ten jest dostępny do ponownego użycia. Zauważ, że nie jest możliwa zmiana nazwy obiektuSześcian001
lubSześcian002
naSześcian
, ponieważ ich nazwy są niezmienne.
Podsumowując, Nazwa
zasadniczo działa jak unikalny identyfikator (UID) dla obiektu. Ponieważ unikalna Nazwa
jest bardzo restrykcyjna, wszystkie obiekty mają również właściwość Etykieta
, która umożliwia "zmianę nazwy" obiektu na coś bardziej opisowego. Wewnętrzna Nazwa
faktycznie pozostaje stała, ale edytowalna przez użytkownika Etykieta
może być używana w większości sytuacji, w których użyto by Nazwy
. W powszechnym użyciu w programie i dokumentacji "zmiana nazwy" oznacza zmianę Etykiety
, a nie rzeczywistej Nazwy
obiektu.
Etykiety
Istnieją różne właściwości etykiet:
Etykieta
może akceptować dowolny ciąg UTF8, w tym znaki akcentu i spacji.- W oknie widoku drzewa wyświetlana jest
Etykieta
obiektu, a nie jegoNazwa
. Dlatego za każdym razem, gdy tworzony jest nowy obiekt, dobrą praktyką jest zmianaEtykiety
na bardziej opisowy ciąg znaków. Aby zmienić nazwę (etykietę) obiektu, wybierz ją w widoku drzewa i naciśnij F2 (lub raczej Return na macOS) lub otwórz menu podręczne (kliknij prawym przyciskiem myszy) i wybierz Zmień nazę. - Nawet po zmianie nazwy obiektu, wewnętrzny
NamNazwae
będzie nadal wyświetlana w wielu miejscach, na przykład na pasku pasek stanu lub w oknie widok wyboru, gdy obiekt jest zaznaczony. - Ponieważ wewnętrzne funkcje programu odnoszą się do obiektów za pomocą
Nazwy
, wiele okien dialogowych wyświetli najpierwNazwę
, a następnie edytowalną przez użytkownikaEtykietę
w nawiasach, na przykładSześcian (Element wyciągany)
. - Domyślnie
Etykieta
jest unikalna, podobnie jakNazwa
. Zachowanie to można jednak zmienić w edytorze preferencji, Edycja → Preferencje ... → Ogólne → Dokument → Zezwalaj na umieszczanie duplikatów etykiet obiektów w obrębie jednego dokumentu. Oznacza to, że generalnieEtykieta
nie jest unikalna w dokumencie i może się powtarzać. Zaleca się jednak zachowanie unikalnościEtykiet
, ponieważ jest to prawdopodobnie najbardziej przydatne do identyfikacji różnych obiektów. Podczas pisania niestandardowych funkcji, które manipulują obiektami, metody powinny używaćNazwy
obiektu, a nie jegoEtykiety
, aby zagwarantować, że używany jest właściwy obiekt. - Podczas korzystania z wyrażeń, na przykład w edytorze właściwości lub w arkuszu kalkulacyjnym, Etykieta może być przywoływana za pomocą podwójnych nawiasów utworzonych z symboli "mniej niż" i "więcej niż".
<<Custom Label With Spaces>>.Height
<<Label may use UTF8 characters>>.Width
Etykieta2
Jest to prosty ciąg znaków, który może zawierać dowolny tekst, a zatem może być używany do dokumentowania (opisywania z większą ilością szczegółów) utworzonego obiektu.
- W oknie widoku drzewa edytuj pole obok ikony, w kolumnie "Opis", klikając je i naciskając F2 (lub raczej Entern na macOS).
- Można również zmienić tę właściwość, modyfikując atrybut
Etykieta2
z poziomu Konsoli Python. - Atrybut DANEEtykieta2 jest normalnie ukryty w edytorze właściwości, ale może być uwidoczniony poprzez otwarcie menu podręcznego (kliknięcie prawym przyciskiem myszy) i wybranie Wyświetl wszystko.
Tworzenie skryptów
Zobacz również: Podstawy tworzenia skryptów FreeCAD, oraz Obiekty skryptowe.
Każdy obiekt w oprogramowaniu jest tworzony wewnętrznie za pomocą metody addObject()
dokumentu. Większość obiektów 2D i 3D, które użytkownik zobaczy w oknie widoku 3D pochodzi z Część: Cecha. W poniższym przykładzie utworzony obiekt to Sześcian środowiska pracy Część.
import FreeCAD as App
doc = App.newDocument()
obj = doc.addObject("Part::Box", "Name")
obj.Label = "Custom label"
Nazwa
Funkcja addObject
posiada dwa podstawowe argumenty typu string.
- The first argument indicates the type of object, in this case,
"Part::Box"
. - The second argument is a string that defines the
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__
.- The
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_"
. - The
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"
. - The
Name
is fixed at creation time; it cannot be modified afterwards. - The
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.
- The
Etykieta
The Label
is a property of the created object and can be changed to a more meaningful text.
- Upon creating the object, the
Label
is the same as theName
. - However, unlike the
Name
, theLabel
can accept any UTF8 string, including accents and spaces. - The
Label
can be changed at any point in time just by assigning the desired string,obj.Label = "New label"
Getting an object by Name or Label
All objects in a document are data attributes of the corresponding Document object. The attribute's name correspond to the internal Name
of the object.
import FreeCAD as App
obj1 = App.ActiveDocument.Box
obj2 = App.ActiveDocument.Box001
obj3 = App.ActiveDocument.Box002
This is equivalent to using the getObject
method of the Document.
import FreeCAD as App
obj1 = App.ActiveDocument.getObject('Box')
obj2 = App.ActiveDocument.getObject('Box001')
obj3 = App.ActiveDocument.getObject('Box002')
However, it is also possible to get the object by the more descriptive Label
.
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]
Given that the Label
is in general not unique, the getObjectsByLabel
method returns a list with all objects found with that Label
. However, if the Label
is unique in the document then the first element in that list should be the desired object.
- Jak zacząć
- Instalacja: Pobieranie programu, Windows, Linux, Mac, Dodatkowych komponentów, Docker, AppImage, Ubuntu Snap
- Podstawy: Informacje na temat FreeCAD, Interfejs użytkownika, Profil nawigacji myszką, Metody wyboru, Nazwa obiektu, Edytor ustawień, Środowiska pracy, Struktura dokumentu, Właściwości, Pomóż w rozwoju FreeCAD, Dotacje
- Pomoc: Poradniki, Wideo poradniki
- Środowiska pracy: Strona Startowa, Złożenie, BIM, CAM, Rysunek Roboczy, MES, Inspekcja, Siatka, OpenSCAD, Część, Projekt Części, Punkty, Inżynieria Wsteczna, Robot, Szkicownik, Arkusz Kalkulacyjny, Powierzchnia 3D, Rysunek Techniczny, Test Framework