LinkSub/pl: Difference between revisions

From FreeCAD Documentation
(Created page with "Przed użyciem elementów podrzędnych obiektów jako danych wejściowych dla innych obiektów ważne jest, aby ponownie obliczyć obiekty, w przeciwnym razie może wystąpić błąd, ponieważ geometria może nie zawierać prawidłowgo kształtu.")
(Created page with "Element podrzędny można następnie wyodrębnić z przypisanej właściwości i można nim manipulować, aby coś zrobić.")
 
Line 54: Line 54:
}}
}}


Element podrzędny można następnie wyodrębnić z przypisanej właściwości i można nim manipulować, aby coś zrobić.
The subelement can then be extracted from the assigned property, and can be manipulated to do something.
{{Code|code=
{{Code|code=
>>> new_obj.Geometry
>>> new_obj.Geometry

Latest revision as of 12:35, 19 March 2024

Other languages:

Opis

A LinkSub jest strukturą danych, która jest używana jako wejście do różnych funkcji i obiektów. Jej celem jest przekazanie obiektu podrzędnego lub elementu podrzędnego (wierzchołka, krawędzi lub ściany) z obiektu do innego obiektu, który będzie używał lub transformował tę geometrię.

LinkSub składa się z listy dwóch argumentów.

sub = [argument1, argument2]

Pierwszym argumentem jest odwołanie do obiektu dokumentu, a drugim argumentem jest tekstowy ciąg znaków wskazujący wewnętrzną nazwę obiektu podrzędnego. Ta nazwa ma numer począwszy od jednego, aż do całkowitej liczby tych obiektów podrzędnych.

sub = [obj1, "Vertex1"]
sub = [obj2, "Face1"]
sub = [obj3, "Edge1"]

Drugi argument może być listą ciągów znaków, wskazujących różne podelementy tego samego obiektu dokumentu.

sub1 = [obj1, ["Vertex1", "Vertex2"]]
sub2 = [obj2, ["Face1", "Face3", "Face5"]]
sub3 = [obj3, ["Vertex1", "Face5", "Edge1", "Edge2"]]

Można zauważyć, że LinkSubList to lista struktur LinkSub.

Tworzenie skryptów

Zapoznaj się z treścią: Podstawy tworzenia skryptów FreeCAD, LinkSubList.

Nowy obiekt utworzony skryptem może przyjąć LinkSub, dodając odpowiednią właściwość.

Przed użyciem elementów podrzędnych obiektów jako danych wejściowych dla innych obiektów ważne jest, aby ponownie obliczyć obiekty, w przeciwnym razie może wystąpić błąd, ponieważ geometria może nie zawierać prawidłowgo kształtu.

doc = App.newDocument()

cube = doc.addObject("Part::Box", "Cube")
cyl = doc.addObject("Part::Cylinder", "Cylinder")
doc.recompute()

new_obj = doc.addObject("App::FeaturePython", "New")
new_obj.addProperty("App::PropertyLinkSub", "Geometry")
new_obj.Geometry = [cube, ["Vertex1", "Vertex2"]]

new_obj2 = doc.addObject("App::FeaturePython", "New")
new_obj2.addProperty("App::PropertyLinkSub", "Geometry")
new_obj2.Geometry = [cyl, "Edge1"]

doc.recompute()

Element podrzędny można następnie wyodrębnić z przypisanej właściwości i można nim manipulować, aby coś zrobić.

>>> new_obj.Geometry
(<Part::PartFeature>, ['Vertex1', 'Vertex2'])

>>> new_obj.Geometry[1]
['Vertex1', 'Vertex2']

>>> new_obj.Geometry[1][1]
'Vertex2'

>>> new_obj.Geometry[1][1].strip("Vertex")
'2'

>>> int(new_obj.Geometry[1][1].strip("Vertex"))
2