PropertyLink: InList and OutList/pl

See Properties before this section.

= PropertyLink =

In addition to the scalar Properties of an feature, the features themselves contain pointers to one another. These pointers define a directed acyclic graph that determines the set and ordering of objects that are recomputed in response to a change in one object. Only those features that depend on a changed feature are recomputed.

The dependencies are expressed via a special class of Property types, namely the PropertyLink:
 * PropertyLink: this allows a feature to link to another single feature within the same document.
 * PropertyLinkList: this allows a feature to link several features
 * 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: this allows a feature to link to several sub-elements of several features.

The following are similar properties for linking features of different documents. This is the core part for assemblies.
 * PropertyXLink
 * PropertyXLinkSub
 * PropertyXLinkSubList
 * PropertyXLinkList
 * PropertyXLinkContainer

Example
Consider a class that provides basic dimensions for another class. We would like a object to be recomputed whenever its associated  is changed:

Note that it is a object that contains the PropertyLink to the  object. Usage is as follows:

Because our depends on the  object, it will be recomputed.

= InList and OutList =

objects can be accessed using a Python property using the name that they are registered with using. However there is another way. Every feature has a pair of lazily-generated lists called and  that describe the outgoing and incoming edges of the DAG, respectively:


 * An is a list of all features that depend upon the current object. So,  will be a list containing our  object.
 * Similarly, an is a list of all features that are depended upon the current object. That is,  will be a list containing our  object.

Note that and  have nothing to do with the tree view of the document model that is presented in the GUI. At any time, a parent in that tree view may contain children that are part of the, the , or neither.