PropertyLink: InList and OutList/pl: Difference between revisions
(Created page with "Oprócz skalarnych Properties cech, same cechy zawierają wskaźniki do siebie nawzajem. Wskaźniki te definiują [https://en.wikipedia.org/wiki/Directed_acyclic_graph skierowany graf acykliczny], który określa zbiór i kolejność obiektów, które są ponownie obliczane w odpowiedzi na zmianę w jednym obiekcie. Ponownie obliczane są tylko te funkcje, które zależą od zmienionej funkcji.") |
(Created page with "Zauważ, że {{incode|InList}} i {{incode|OutList}} nie mają nic wspólnego z widokiem drzewa modelu dokumentu, który jest prezentowany w GUI. W dowolnym momencie rodzic w tym widoku drzewa może zawierać dzieci, które są częścią {{incode|InList}}, {{incode|OutList}} lub żadnego z nich.") |
||
(9 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
<span id="PropertyLink"></span> |
<span id="PropertyLink"></span> |
||
=PropertyLink= |
|||
=LinkWłaściwości= |
|||
Oprócz skalarnych [[Property/pl|Properties]] cech, same cechy zawierają wskaźniki do siebie nawzajem. |
Oprócz skalarnych [[Property/pl|Properties]] cech, same cechy zawierają wskaźniki do siebie nawzajem. |
||
Wskaźniki te definiują [https://en.wikipedia.org/wiki/Directed_acyclic_graph skierowany graf acykliczny], który określa zbiór i kolejność obiektów, które są ponownie obliczane w odpowiedzi na zmianę w jednym obiekcie. Ponownie obliczane są tylko te funkcje, które zależą od zmienionej funkcji. |
Wskaźniki te definiują [https://en.wikipedia.org/wiki/Directed_acyclic_graph skierowany graf acykliczny], który określa zbiór i kolejność obiektów, które są ponownie obliczane w odpowiedzi na zmianę w jednym obiekcie. Ponownie obliczane są tylko te funkcje, które zależą od zmienionej funkcji. |
||
Zależności są wyrażane za pomocą specjalnej klasy typów właściwości, a mianowicie PropertyLink: |
|||
The dependencies are expressed via a special class of Property types, namely the PropertyLink: |
|||
* PropertyLink: |
* PropertyLink: umożliwia powiązanie elementu z innym pojedynczym elementem w tym samym dokumencie. |
||
* PropertyLinkList: |
* PropertyLinkList: pozwala elementowi na powiązanie kilku elementów |
||
* PropertyLinkSub: pozwala elementowi łączyć pojedynczy element i dodatkowo odwoływać się do elementów podrzędnych. Przykład: Jeśli chcesz zamodelować kieszeń na potrzeby szkicu, ważne jest, aby wiedzieć, do którego elementu podrzędnego (np. Face6) powiązanego elementu należy ją zmapować. |
|||
* PropertyLinkSub: this allows a feature to link a single feature and additionally reference sub-elements. Example: If you want to model a pocket for the needed sketch, then it's important to know on which sub-element (e.g. Face6) of the linked feature it must be mapped to. |
|||
* PropertyLinkSubList: |
* PropertyLinkSubList: umożliwia powiązanie elementu z kilkoma elementami podrzędnymi kilku elementów. |
||
Poniżej znajdują się podobne właściwości do łączenia cech różnych dokumentów. Jest to podstawowa część dla złożeń. |
|||
The following are similar properties for linking features of different documents. This is the core part for assemblies. |
|||
* PropertyXLink |
* PropertyXLink |
||
* PropertyXLinkSub |
* PropertyXLinkSub |
||
Line 25: | Line 25: | ||
==Przykład== |
==Przykład== |
||
Rozważmy klasę {{incode|BoxDimension}}, która zapewnia podstawowe wymiary dla innej klasy {{incode|Box}}. Chcielibyśmy, aby obiekt {{incode|Box}} był ponownie obliczany za każdym razem, gdy zmieni się powiązany z nim {{incode|BoxDimension}}: |
|||
{{Code|code= |
{{Code|code= |
||
Line 51: | Line 51: | ||
}} |
}} |
||
Należy pamiętać, że jest to obiekt {{incode|Box}}, który zawiera PropertyLink do obiektu {{incode|BoxDimension}}. |
|||
Użycie jest następujące: |
|||
Usage is as follows: |
|||
{{Code|code= |
{{Code|code= |
||
Line 69: | Line 69: | ||
}} |
}} |
||
Ponieważ nasz {{incode|box}} zależy od obiektu {{incode|dim}}, zostanie on ponownie obliczony. |
|||
<span id="InList_and_OutList"></span> |
|||
= InList and OutList = |
|||
=Lista wejściowa i lista wyjściowa= |
|||
{{incode|PropertyLink}} |
Dostęp do obiektów {{incode|PropertyLink}} można uzyskać za pomocą właściwości Python przy użyciu nazwy, pod którą są zarejestrowane za pomocą {{incode|.addObject()}}. Istnieje jednak inny sposób. Każda funkcja ma parę leniwie generowanych list o nazwach {{incode|InList}} i {{incode|OutList}}, które opisują odpowiednio wychodzące i przychodzące krawędzie DAG: |
||
* |
* {{incode|InList}} jest listą wszystkich funkcji, które "zależą" od bieżącego obiektu. Tak więc {{incode|dim.InList}} będzie listą zawierającą nasz obiekt {{incode|box}}. |
||
* |
* Podobnie, {{incode|OutList}} jest listą wszystkich funkcji, które "zależą" od bieżącego obiektu. Oznacza to, że {{incode|box.OutList}} będzie listą zawierającą nasz obiekt {{incode|dim}}. |
||
Zauważ, że {{incode|InList}} i {{incode|OutList}} nie mają nic wspólnego z widokiem drzewa modelu dokumentu, który jest prezentowany w GUI. W dowolnym momencie rodzic w tym widoku drzewa może zawierać dzieci, które są częścią {{incode|InList}}, {{incode|OutList}} lub żadnego z nich. |
Latest revision as of 14:30, 30 October 2023
Zobacz artykuł Właściwości przed tą sekcją.
PropertyLink
Oprócz skalarnych Properties cech, same cechy zawierają wskaźniki do siebie nawzajem. Wskaźniki te definiują skierowany graf acykliczny, który określa zbiór i kolejność obiektów, które są ponownie obliczane w odpowiedzi na zmianę w jednym obiekcie. Ponownie obliczane są tylko te funkcje, które zależą od zmienionej funkcji.
Zależności są wyrażane za pomocą specjalnej klasy typów właściwości, a mianowicie PropertyLink:
- PropertyLink: umożliwia powiązanie elementu z innym pojedynczym elementem w tym samym dokumencie.
- PropertyLinkList: pozwala elementowi na powiązanie kilku elementów
- PropertyLinkSub: pozwala elementowi łączyć pojedynczy element i dodatkowo odwoływać się do elementów podrzędnych. Przykład: Jeśli chcesz zamodelować kieszeń na potrzeby szkicu, ważne jest, aby wiedzieć, do którego elementu podrzędnego (np. Face6) powiązanego elementu należy ją zmapować.
- PropertyLinkSubList: umożliwia powiązanie elementu z kilkoma elementami podrzędnymi kilku elementów.
Poniżej znajdują się podobne właściwości do łączenia cech różnych dokumentów. Jest to podstawowa część dla złożeń.
- PropertyXLink
- PropertyXLinkSub
- PropertyXLinkSubList
- PropertyXLinkList
- PropertyXLinkContainer
Przykład
Rozważmy klasę BoxDimension
, która zapewnia podstawowe wymiary dla innej klasy Box
. Chcielibyśmy, aby obiekt Box
był ponownie obliczany za każdym razem, gdy zmieni się powiązany z nim BoxDimension
:
import FreeCAD
import Part
class BoxDimension:
def __init__(self, obj):
obj.addProperty("App::PropertyLength", "Length").Length = 1
obj.addProperty("App::PropertyLength", "Width").Width = 1
obj.addProperty("App::PropertyLength", "Height").Height = 1
obj.Proxy = self
class Box:
def __init__(self, obj):
obj.addProperty("App::PropertyLink", "Dimensions").Dimensions = None
obj.Proxy = self
def execute(self, obj):
if obj.Dimensions is None:
return
l = obj.Dimensions.Length
w = obj.Dimensions.Width
h = obj.Dimensions.Height
obj.Shape = Part.makeBox(l, w, h)
Należy pamiętać, że jest to obiekt Box
, który zawiera PropertyLink do obiektu BoxDimension
.
Użycie jest następujące:
doc = App.newDocument()
dim = doc.addObject("App::FeaturePython", "BoxDimension")
box = doc.addObject("Part::FeaturePython", "Box")
dim_proxy = BoxDimension(dim)
box_proxy = Box(box)
box.ViewObject.Proxy = None
box.Dimensions = dim
dim.Length = 5
dim.Width = 3
dim.Height = 7
doc.recompute()
Ponieważ nasz box
zależy od obiektu dim
, zostanie on ponownie obliczony.
Lista wejściowa i lista wyjściowa
Dostęp do obiektów PropertyLink
można uzyskać za pomocą właściwości Python przy użyciu nazwy, pod którą są zarejestrowane za pomocą .addObject()
. Istnieje jednak inny sposób. Każda funkcja ma parę leniwie generowanych list o nazwach InList
i OutList
, które opisują odpowiednio wychodzące i przychodzące krawędzie DAG:
InList
jest listą wszystkich funkcji, które "zależą" od bieżącego obiektu. Tak więcdim.InList
będzie listą zawierającą nasz obiektbox
.- Podobnie,
OutList
jest listą wszystkich funkcji, które "zależą" od bieżącego obiektu. Oznacza to, żebox.OutList
będzie listą zawierającą nasz obiektdim
.
Zauważ, że InList
i OutList
nie mają nic wspólnego z widokiem drzewa modelu dokumentu, który jest prezentowany w GUI. W dowolnym momencie rodzic w tym widoku drzewa może zawierać dzieci, które są częścią InList
, OutList
lub żadnego z nich.