Object name/pl: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Created page with "Biorąc pod uwagę, że obiekt {{incode|Label}} nie jest unikalny, metoda {{incode|getObjectsByLabel}} zwraca listę wszystkich obiektów znalezionych z tym obiektem {{incode|Label}}. Jeśli jednak {{incode|Label}} jest unikalny w dokumencie, to pierwszym elementem tej listy powinien być żądany obiekt.")
 
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>


== Introduction ==
<span id="Introduction"></span>
==Wprowadzenie==


{{TOCright}}
{{TOCright}}


All objects in the program have an [[Object_name|object name]] that uniquely identifies them in a given document.
Wszystkie obiekty w programie mają [[Object_name/pl|nazwę obiektu]], która jednoznacznie identyfikuje je w obrębie danego dokumentu.


This information applies to all objects derived from [[App_DocumentObject|App DocumentObject]] ({{incode|App::DocumentObject}} class), which essentially comprises all objects that are possible to create in a document.
Informacje te dotyczą wszystkich obiektów pochodnych od [[App_DocumentObject/pl|App: Obiektu dokumentu]] ''(klasa {{incode|App::DocumentObject}})'', która zasadniczo obejmuje wszystkie obiekty, które można utworzyć w dokumencie.


== Names ==
<span id="Names"></span>
==Nazwy==


Nazwy mają różne właściwości:
There are various properties for Names:
* The {{incode|Name}} can only include simple alphanumeric characters, and the underscore, {{incode|[_0-9a-zA-Z]}}.
* {{Incode|Nazwa}} może zawierać tylko proste znaki alfanumeryczne i znak podkreślenia, {{Incode|[_0-9a-zA-Z]}}.
* The {{incode|Name}} cannot start with a number; it must start with a letter or the underscore, {{incode|[_a-zA-Z]}}.
* {{Incode|Nazwa}} nie może zaczynać się od cyfry, musi zaczynać się od litery lub podkreślenia, {{Incode|[_a-zA-Z]}}.
* {{Incode|Nazwa}} jest przypisywana w czasie tworzenia obiektu, później nie można jej już edytować. Nigdy nie można zmienić nazwy obiektu.
* The {{incode|Name}} is assigned at the creation time of the object; afterwards it is no longer editable. The object can never be renamed.
* The {{incode|Name}} must be unique in the entire document. It doesn't matter if two objects are of completely different types, for example, one is a [[PartDesign_Pocket|PartDesign Pocket]] and the other is an [[Arch_Wall|Arch Wall]]. They must have different names.
* {{Incode|Nazwa}} musi być unikalna w całym dokumencie. Nie ma znaczenia, czy dwa obiekty zupełnie różnych typów, na przykład jeden to [[PartDesign_Pocket/pl|kieszeń]] środowiska Projekt Części, a drugi to [[Arch_Wall/pl|ściana]] środowiska Architektura. Muszą one mieć różne nazwy.
* When creating an object of the same type, normally the name is increased with a sequential number, thus {{incode|Box}}, {{incode|Box001}}, {{incode|Box002}}, etc. This prevents naming collision.
* Podczas tworzenia obiektu tego samego typu, zwykle nazwa jest zwiększana o kolejny numer, a więc {{incode|Sześcian}}, {{incode|Sześcian001}}, {{incode|Sześcian002}} itd. Zapobiega to kolizji nazw.
* Once the object is deleted, its {{incode|Name}} becomes available to be used by a newly created object. This means that if {{incode|Box}}, {{incode|Box001}}, and {{incode|Box002}} exist, and we delete the first item, the next box created with [[Part_Box|Part Box]] will not be {{incode|Box003}}, it will be {{incode|Box}} again, because this string is available to be used once more. Notice that it is not possible to rename {{incode|Box001}} or {{incode|Box002}} to {{incode|Box}} since their names are fixed.
* Po usunięciu obiektu, jego {{incode|Nazwa}} staje się dostępna do użycia przez nowo utworzony obiekt. Oznacza to, że jeśli istnieją obiekty {{incode|Sześcian}}, {{incode|Sześcian001}} i {{incode|Sześcian002}}, a my usuniemy pierwszy z nich, to następnym obiektem utworzonym za pomocą [[Part_Box|Part Box]] nie będzie {{incode|Sześcian003}}, lecz {{incode|Sześcian}}, ponieważ ciąg ten jest dostępny do ponownego użycia. Zauważ, że nie jest możliwa zmiana nazwy obiektu {{incode|Sześcian001}} lub {{incode|Sześcian002}} na {{incode|Sześcian}}, ponieważ ich nazwy niezmienne.


In summary, the {{incode|Name}} essentially acts like a unique identifier (UID) for an object. Since a unique {{incode|Name}} is very restrictive, all objects also have a {{incode|Label}} property which allows "renaming" the object to something more descriptive. The internal {{incode|Name}} actually remains fixed, but the user editable {{incode|Label}} can be used in most situations where the {{incode|Name}} would be used. In common usage in the program and the documentation, "renaming" means changing the {{incode|Label}} and not the actual {{incode|Name}} of the object.
Podsumowując, {{incode|Nazwa}} zasadniczo działa jak unikalny identyfikator (UID) dla obiektu. Ponieważ unikalna {{incode|Nazwa}} jest bardzo restrykcyjna, wszystkie obiekty mają również właściwość {{incode|Etykieta}}, która umożliwia "zmianę nazwy" obiektu na coś bardziej opisowego. Wewnętrzna {{Incode|Nazwa}} faktycznie pozostaje stała, ale edytowalna przez użytkownika {{Incode|Etykieta}} może być używana w większości sytuacji, w których użyto by {{Incode|Nazwy}}. W powszechnym użyciu w programie i dokumentacji "zmiana nazwy" oznacza zmianę {{incode|Etykiety}}, a nie rzeczywistej {{incode|Nazwy}} obiektu.


<span id="Labels"></span>
==Etykiety==
==Etykiety==


Istnieją różne właściwości etykiet:
There are various properties for Labels:
* {{Incode|Etykieta}} może akceptować dowolny ciąg UTF8, w tym znaki akcentu i spacji.
* The {{incode|Label}} can accept any UTF8 string, including accents and spaces.
* The [[tree_view|tree view]] actually displays the {{incode|Label}} of the object, not the {{incode|Name}}. Therefore, whenever a new object is created, it is a good practice to change the {{incode|Label}} to a more descriptive string. To rename (relabel) the object, select it in the tree view and press {{KEY|F2}} (or rather {{KEY|Return}} on macOS), or open the context menu (right-click) and choose {{MenuCommand|Rename}}.
* W oknie [[Tree_view/pl|widoku drzewa]] wyświetlana jest {{incode|Etykieta}} obiektu, a nie jego {{incode|Nazwa}}. Dlatego za każdym razem, gdy tworzony jest nowy obiekt, dobrą praktyką jest zmiana {{incode|Etykiety}} na bardziej opisowy ciąg znaków. Aby zmienić nazwę ''(etykietę)'' obiektu, wybierz w widoku drzewa i naciśnij {{KEY|F2}} ''(lub raczej {{KEY|Return}} na macOS)'' lub otwórz menu podręczne ''(kliknij prawym przyciskiem myszy)'' i wybierz {{MenuCommand|Zmień nazę}}.
* Even after an object was renamed (relabelled), the internal {{incode|Name}} will still be reported in many places, for example, in the [[Status_bar|status bar]] or in the [[Selection_view|selection view]], when the object is selected.
* Nawet po zmianie nazwy obiektu, wewnętrzny {{Incode|NamNazwae}} będzie nadal wyświetlana w wielu miejscach, na przykład na pasku [[Status_bar|pasek stanu]] lub w oknie [[Selection_view/pl|widok wyboru]], gdy obiekt jest zaznaczony.
* Ponieważ wewnętrzne funkcje programu odnoszą się do obiektów za pomocą {{Incode|Nazwy}}, wiele okien dialogowych wyświetli najpierw {{Incode|Nazwę}}, a następnie edytowalną przez użytkownika {{Incode|Etykietę}} w nawiasach, na przykład {{Incode|Sześcian ''(Element wyciągany)''}}.
* Since the internal functions of the program refer to the objects by {{incode|Name}}, many dialogs will display the {{incode|Name}} first, followed by the user editable {{incode|Label}} in parentheses, for example, {{incode|Box (Extruded piece)}}.
* By default the {{incode|Label}} is unique, just like the {{incode|Name}}. However, this behavior can be changed in the [[Preferences_Editor|preferences editor]], {{MenuCommand|EditPreferencesGeneralDocumentAllow duplicate object labels in one document}}. This means that in general the {{incode|Label}} is not unique in the document, and may actually be repeated. However, the recommendation is to keep the {{incode|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 {{incode|Name}} of the object rather than its {{incode|Label}} to guarantee that the correct object is used.
* Domyślnie {{Incode|Etykieta}} jest unikalna, podobnie jak {{Incode|Nazwa}}. Zachowanie to można jednak zmienić w [[Preferences_Editor/pl|edytorze preferencji]], {{MenuCommand|EdycjaPreferencje ...OgólneDokumentZezwalaj na umieszczanie duplikatów etykiet obiektów w obrębie jednego dokumentu}}. Oznacza to, że generalnie {{Incode|Etykieta}} nie jest unikalna w dokumencie i może się powtarzać. Zaleca się jednak zachowanie unikalności {{incode|Etykiet}}, ponieważ jest to prawdopodobnie najbardziej przydatne do identyfikacji różnych obiektów. Podczas pisania niestandardowych funkcji, które manipulują obiektami, metody powinny używać {{incode|Nazwy}} obiektu, a nie jego {{incode|Etykiety}}, aby zagwarantować, że używany jest właściwy obiekt.
* When using [[Expressions|expressions]], for example, in the [[Property_editor|property editor]] or in a [[Spreadsheet|spreadsheet]], the Label can be referenced using double brackets made of the less than and greater than symbols.
* Podczas korzystania z [[Expressions/pl|wyrażeń]], na przykład w [[Property_editor/pl|edytorze właściwości]] lub w [[Spreadsheet/pl|arkuszu kalkulacyjnym]], Etykieta może być przywoływana za pomocą podwójnych nawiasów utworzonych z symboli "mniej niż" i "więcej niż".


{{Code|code=
{{Code|code=
Line 36: Line 39:
}}
}}


<span id="Label2"></span>
=== Label2 {{Version|0.19}} ===
===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.
This property was introduced in v0.19. It is a simple string that can contain arbitrary text, and therefore can be used for documenting (describing with more detail) the created object.
* In the [[Tree_view|tree view]] edit the field next to the icon, under "Description", by clicking on it and pressing {{KEY|F2}} (or rather {{KEY|Return}} on macOS).
* W oknie [[Tree_view/pl|widoku drzewa]] edytuj pole obok ikony, w kolumnie "Opis", klikając je i naciskając {{KEY|F2}} ''(lub raczej {{KEY|Entern}} na macOS)''.
* You can also change this property by modifying the {{incode|Label2}} attribute from the [[Python_console|Python console]].
* Można również zmienić właściwość, modyfikując atrybut {{incode|Etykieta2}} z poziomu [[Python_console/pl|Konsoli Python]].
* The {{PropertyData|Label2}} attribute is normally hidden in the [[Property_editor|property editor]] but can be made visible by opening the context menu (right click) and selecting {{MenuCommand|Show all}}.
* Atrybut {{PropertyData|Etykieta2}} jest normalnie ukryty w [[Property_editor/pl|edytorze właściwości]], ale może być uwidoczniony poprzez otwarcie menu podręcznego ''(kliknięcie prawym przyciskiem myszy)'' i wybranie {{MenuCommand|Wyświetl wszystko}}.


== Scripting ==
<span id="Scripting"></span>
==Tworzenie skryptów==


{{Emphasis|See also:}} [[FreeCAD_Scripting_Basics|FreeCAD Scripting Basics]], and [[Scripted_objects|scripted objects]].
{{Emphasis|Zobacz również:}} [[FreeCAD_Scripting_Basics/pl|Podstawy tworzenia skryptów FreeCAD]], oraz [[Scripted_objects/pl|Obiekty skryptowe]].


Any object in the software is internally created with the {{incode|addObject()}} method of the document. The majority of 2D and 3D objects that the user will see in the [[3D_view|3D view]] are derived from a [[Part_Feature|Part Feature]]. In the following example, the object created is a [[Part_Box|Part Box]].
Każdy obiekt w oprogramowaniu jest tworzony wewnętrznie za pomocą metody {{incode|addObject()}} dokumentu. Większość obiektów 2D i 3D, które użytkownik zobaczy w oknie [[3D_view/pl|widoku 3D]] pochodzi z [[Part_Feature/pl|Część: Cecha]]. W poniższym przykładzie utworzony obiekt to [[Part_Box/pl|Sześcian]] środowiska pracy Część.


{{Code|code=
{{Code|code=
Line 57: Line 62:
}}
}}


<span id="Name"></span>
=== Name ===
===Nazwa===


The {{incode|addObject}} function has two basic string arguments.
Funkcja {{incode|addObject}} posiada dwa podstawowe argumenty typu string.


* The first argument indicates the type of object, in this case, {{incode|"Part::Box"}}.
* Pierwszy argument wskazuje typ obiektu, w tym przypadku {{incode|"Part::Box"}}.
* The second argument is a string that defines the {{incode|Name}} attribute. If it is not provided, it defaults to the same name as the class of the object, that is, {{incode|"Part__Box"}}, where the two invalid symbols, the colons {{incode|::}}, are replaced by two underscores {{incode|__}}.
* Drugi argument to ciąg znaków definiujący atrybut {{incode|Name}}. Jeśli nie zostanie on podany, domyślnie przyjmuje taką samą nazwę jak klasa obiektu, czyli {{incode|"Part__Box"}}, gdzie dwa nieprawidłowe symbole, dwukropki {{incode|::}}, zastąpione dwoma podkreśleniami {{incode|__}}.
** The {{incode|Name}} can only include simple alphanumeric characters, and the underscore, {{incode|[_0-9a-zA-Z]}}. If other symbols are given, these will be converted to underscores; for example, {{incode|"A+B:C*"}} is converted to {{incode|"A_B_C_"}}.
** {{incode|Name}} może zawierać tylko podstawowe znaki alfanumeryczne i znak podkreślenia, {{incode|[_0-9a-zA-Z]}}. Jeśli podane zostaną inne symbole, zostaną one przekonwertowane na znak podkreślenia. Na przykład {{incode|"A+B:C*"}} zostanie przekonwertowane na {{incode|"A_B_C_"}}.
** The {{incode|Name}} cannot start with a number; it must start with a letter or the underscore, {{incode|[_a-zA-Z]}}. For example, {{incode|"123ABC"}} is converted to {{incode|"_23ABC"}}.
** {{Incode|Name}} nie może zaczynać się od liczby, musi zaczynać się od litery lub podkreślenia, {{Incode|[_a-zA-Z]}}. Na przykład {{incode|"123ABC"}} jest konwertowany na {{incode|"_23ABC"}}.
** The {{incode|Name}} is fixed at creation time; it cannot be modified afterwards.
** Obiekt {{incode|Name}} jest ustalany w momencie utworzenia, nie można go później zmodyfikować.
** The {{incode|Name}} must be unique in the entire document. If the same {{incode|"Name"}} is used, a sequential number will be appended automatically so that the resulting names are unique; for example, if {{incode|"Name"}} already exists, then new objects will be called {{incode|"Name001"}}, {{incode|"Name002"}}, {{incode|"Name003"}}, etc.
** Obiekt {{incode|Name}} musi być unikalny w całym dokumencie. Jeśli użyty zostanie ten sam obiekt {{Incode|"Name"}}, automatycznie dołączony zostanie kolejny numer, tak aby wynikowe nazwy były unikalne; na przykład, jeśli {{Incode|"Name"}} już istnieje, nowe obiekty zostaną nazwane {{Incode|"Name001"}}, {{Incode|"Name002"}}, {{Incode|"Name003"}} itd.


<span id="Label"></span>
===Etykieta===
===Etykieta===


The {{incode|Label}} is a property of the created object and can be changed to a more meaningful text.
Obiekt {{incode|Label}} jest właściwością utworzonego obiektu i może zostać zmieniony na bardziej znaczący tekst.
* Upon creating the object, the {{incode|Label}} is the same as the {{incode|Name}}.
* Podczas tworzenia obiektu, {{incode|Label}} ma taką samą wartość jak {{incode|Name}}.
* However, unlike the {{incode|Name}}, the {{incode|Label}} can accept any UTF8 string, including accents and spaces.
* Jednak w przeciwieństwie do {{incode|Name}}, {{incode|Label}} może akceptować dowolny ciąg UTF8, łącznie ze znakami akcentówi i spacji.
* The {{incode|Label}} can be changed at any point in time just by assigning the desired string, <code>obj.Label = "New label"</code>
* Obiekt {{incode|Label}} można zmienić w dowolnym momencie, po prostu przypisując żądany ciąg znaków, <code>obj.Label = "New label"</code>.


<span id="Getting_an_object_by_Name_or_Label"></span>
=== Getting an object by Name or Label ===
===Pobieranie obiektu przez nazwę lub etykietę===


All objects in a document are data attributes of the corresponding [[App_DocumentObject|Document]] object. The attribute's name correspond to the internal {{incode|Name}} of the object.
Wszystkie obiekty w dokumencie atrybutami danych odpowiedniego obiektu [[App_DocumentObject/pl|Dokument]]. Nazwa atrybutu odpowiada wewnętrznej {{incode|Nazwie}} obiektu.


{{Code|code=
{{Code|code=
Line 87: Line 95:
}}
}}


This is equivalent to using the {{incode|getObject}} method of the Document.
Jest to równoważne użyciu metody {{incode|getObject}} dokumentu.
{{Code|code=
{{Code|code=
import FreeCAD as App
import FreeCAD as App
Line 96: Line 104:
}}
}}


However, it is also possible to get the object by the more descriptive {{incode|Label}}.
Możliwe jest jednak również pobranie obiektu za pomocą bardziej opisowego identyfikatora {{incode|Label}}.
{{Code|code=
{{Code|code=
import FreeCAD as App
import FreeCAD as App
Line 105: Line 113:
}}
}}


Given that the {{incode|Label}} is in general not unique, the {{incode|getObjectsByLabel}} method returns a list with all objects found with that {{incode|Label}}. However, if the {{incode|Label}} is unique in the document then the first element in that list should be the desired object.
Biorąc pod uwagę, że obiekt {{incode|Label}} nie jest unikalny, metoda {{incode|getObjectsByLabel}} zwraca listę wszystkich obiektów znalezionych z tym obiektem {{incode|Label}}. Jeśli jednak {{incode|Label}} jest unikalny w dokumencie, to pierwszym elementem tej listy powinien być żądany obiekt.


{{Userdocnavi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}

Latest revision as of 16:02, 28 October 2023

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ą obiekty Sześcian, Sześcian001 i Sześcian002, a my usuniemy pierwszy z nich, to następnym obiektem utworzonym za pomocą Part Box nie będzie Sześcian003, lecz Sześcian, ponieważ ciąg ten jest dostępny do ponownego użycia. Zauważ, że nie jest możliwa zmiana nazwy obiektu Sześcian001 lub Sześcian002 na Sześ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 jego Nazwa. Dlatego za każdym razem, gdy tworzony jest nowy obiekt, dobrą praktyką jest zmiana Etykiety 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 najpierw Nazwę, a następnie edytowalną przez użytkownika Etykietę w nawiasach, na przykład Sześcian (Element wyciągany).
  • Domyślnie Etykieta jest unikalna, podobnie jak Nazwa. 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 generalnie Etykieta nie jest unikalna w dokumencie i może się powtarzać. Zaleca się jednak zachowanie unikalności Etykiet, 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 jego Etykiety, 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.

  • 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 __.
    • Name moż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_".
    • Name nie 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 Name jest ustalany w momencie utworzenia, nie można go później zmodyfikować.
    • Obiekt Name musi 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, Label ma taką samą wartość jak Name.
  • Jednak w przeciwieństwie do Name, Label może akceptować dowolny ciąg UTF8, łącznie ze znakami akcentówi i spacji.
  • Obiekt Label moż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.