The object is ghosted. If there is an InfiniteEngineInterface, then the object is rendered semi transparent in a light blue color.
The object is hidden.
The object is not impacted by cut planes. Cut plane will not be applied to this object.
The object is selected. If there is an InfiniteEngineInterface, then the object is rendered with an orange pulse. Any object with the S_Selected "flag" is visible, even if S_Hidden is set. Such an object is NOT rendered as ghosted even is S_Ghost is set.
The VisualStates enum tells how the elements of the DMU are rendered.
A DMU is composed of
parts, like a bolt, a rivet, a panel. All thepartsin the API are referenced by a uniquepart id. The majority of thepartsof the DMU may have a graphical representation (model), but it is not required. Somepartdo not have any graphical representation at all. Some differentpartsmay share the same graphical representation (depending on their path of instantiation).A
partwill potentially be instantiated several times (it is rare that a DMU is composed of only 1 bolt !). Each instance has a uniquepart instance id. And each instance of the samepartshares the same graphical representation. All thepart instancesthat share the same graphical representation, at the same position and orientation will share a unique and identicalgeometric instance id. Thus, generally all thepart instancesrepresented by the samegeometric instance idsare the expression of the samepart, but there may be cases when they do not come from the samepart. A singlegeometric instance idmay be the expression of multiplepart instance id, and multiplepart id!The API features multiple converters {@link PartInstanceConverterInterface}, {@link DocumentIdConverterInterface}, {@link GeometricInstanceConverterInterface} that allows the conversion between these ids.
Warning : there is no continuity of these ids whenever a new build is created. Storing such ids in applications is not a reliable way to replay a result !!!. The developer should focus on storing the information of filters (
partname, etc ...) and search (content on search query) rather than storing these ids.Each
geometric Instance idhas a visibility (or visual) state, telling if such an object is hidden, selected, ghosted, or set to ignore cut planes. The VisualStates enumeration tells about the graphical representation of ageometric Instance id. The state is a set of flags (with the "|" (or) operator) to allow the combination of multiple states.Warning : the API uses internally other flags that should not be messed with. The developer should only change flags exposed here.
The flag manipulation is set with the methods InfiniteEngineInterface.updateGeometricState and InfiniteEngineInterface.updateGeometricStateForAll that takes a mask to show the bits that will be modified:
ex: (VisualStates.S_Hidden | VisualStates.S_Ghost) to change the hidden and ghost states at once
and the actual bits to set:
ex : ((~VisualStates.S_Hidden) | VisualStates.S_Ghost) to set the objects visible and ghosted.
VisualStates are used with an InfiniteEngineInterface.
See