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:
Nazwamoże zawierać tylko proste znaki alfanumeryczne i znak podkreślenia,[_0-9a-zA-Z].Nazwanie może zaczynać się od cyfry, musi zaczynać się od litery lub podkreślenia,[_a-zA-Z].Nazwajest przypisywana w czasie tworzenia obiektu, później nie można jej już edytować. Nigdy nie można zmienić nazwy obiektu.Nazwamusi 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ścian002itd. Zapobiega to kolizji nazw. - Po usunięciu obiektu, jego
Nazwastaje się dostępna do użycia przez nowo utworzony obiekt. Oznacza to, że jeśli istnieją obiektySześcian,Sześcian001iSześ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ścian001lubSześcian002naSześ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:
Etykietamoże akceptować dowolny ciąg UTF8, w tym znaki akcentu i spacji.- W oknie widoku drzewa wyświetlana jest
Etykietaobiektu, a nie jegoNazwa. Dlatego za każdym razem, gdy tworzony jest nowy obiekt, dobrą praktyką jest zmianaEtykietyna 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
NamNazwaebę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
Etykietajest 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 generalnieEtykietanie 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ćNazwyobiektu, 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
Etykieta2z 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.
- Pierwszy argument wskazuje typ obiektu, w tym przypadku
"Part::Box". - Drugi argument to ciąg znaków definiujący atrybut
Name. Jeśli nie zostanie on podany, domyślnie przyjmuje taką samą nazwę jak klasa obiektu, czyli"Part__Box", gdzie dwa nieprawidłowe symbole, dwukropki::, są zastąpione dwoma podkreśleniami__.Namemoże zawierać tylko podstawowe znaki alfanumeryczne i znak podkreślenia,[_0-9a-zA-Z]. Jeśli podane zostaną inne symbole, zostaną one przekonwertowane na znak podkreślenia. Na przykład"A+B:C*"zostanie przekonwertowane na"A_B_C_".Namenie może zaczynać się od liczby, musi zaczynać się od litery lub podkreślenia,[_a-zA-Z]. Na przykład"123ABC"jest konwertowany na"_23ABC".- Obiekt
Namejest ustalany w momencie utworzenia, nie można go później zmodyfikować. - Obiekt
Namemusi być unikalny w całym dokumencie. Jeśli użyty zostanie ten sam obiekt"Name", automatycznie dołączony zostanie kolejny numer, tak aby wynikowe nazwy były unikalne; na przykład, jeśli"Name"już istnieje, nowe obiekty zostaną nazwane"Name001","Name002","Name003"itd.
Etykieta
Obiekt Label jest właściwością utworzonego obiektu i może zostać zmieniony na bardziej znaczący tekst.
- Podczas tworzenia obiektu,
Labelma taką samą wartość jakName. - Jednak w przeciwieństwie do
Name,Labelmoże akceptować dowolny ciąg UTF8, łącznie ze znakami akcentówi i spacji. - Obiekt
Labelmożna zmienić w dowolnym momencie, po prostu przypisując żądany ciąg znaków,obj.Label = "New label".
Pobieranie obiektu przez nazwę lub etykietę
Wszystkie obiekty w dokumencie są atrybutami danych odpowiedniego obiektu Dokument. Nazwa atrybutu odpowiada wewnętrznej Nazwie obiektu.
import FreeCAD as App
obj1 = App.ActiveDocument.Box
obj2 = App.ActiveDocument.Box001
obj3 = App.ActiveDocument.Box002
Jest to równoważne użyciu metody getObject dokumentu.
import FreeCAD as App
obj1 = App.ActiveDocument.getObject('Box')
obj2 = App.ActiveDocument.getObject('Box001')
obj3 = App.ActiveDocument.getObject('Box002')
Możliwe jest jednak również pobranie obiektu za pomocą bardziej opisowego identyfikatora 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]
Biorąc pod uwagę, że obiekt Label nie jest unikalny, metoda getObjectsByLabel zwraca listę wszystkich obiektów znalezionych z tym obiektem Label. Jeśli jednak Label jest unikalny w dokumencie, to pierwszym elementem tej listy powinien być żądany obiekt.
- 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