A framework to define finding, sorting the sensitive primitives in a view. Services are also provided to define the return of the owners of those primitives selected. The primitives are sorted by criteria such as priority of the primitive or its depth in the view relative to that of other primitives. Note that in 3D, the inheriting framework StdSelect_ViewerSelector3d is only to be used if you do not want to use the services provided by AIS. Two tools are available to find and select objects found at a given position in the view. If you want to select the owners of all the objects detected at point x,y,z you use the Init - More - Next - Picked loop. If, on the other hand, you want to select only one object detected at that point, you use the Init - More - OnePicked loop. In this iteration, More is used to see if an object was picked and OnePicked, to get the object closest to the pick position. Viewer selectors are driven by SelectMgr_SelectionManager, and manipulate the SelectMgr_Selection objects given to them by the selection manager.
More...
|
| SelectMgr_ViewerSelector () |
| Constructs an empty selector object.
|
|
Standard_Integer | CustomPixelTolerance () const |
| Returns custom pixel tolerance value.
|
|
void | SetPixelTolerance (const Standard_Integer theTolerance) |
| Sets the pixel tolerance <theTolerance>.
|
|
Standard_Real | Sensitivity () const |
| Returns the largest sensitivity of picking.
|
|
Standard_Integer | PixelTolerance () const |
| Returns the largest pixel tolerance.
|
|
virtual void | SortResult () const |
| Sorts the detected entities by priority and distance.
|
|
Handle< SelectMgr_EntityOwner > | OnePicked () const |
| Returns the picked element with the highest priority, and which is the closest to the last successful mouse position.
|
|
bool | ToPickClosest () const |
| Return the flag determining precedence of picked depth (distance from eye to entity) over entity priority in sorted results; TRUE by default. When flag is TRUE, priority will be considered only if entities have the same depth within the tolerance. When flag is FALSE, entities with higher priority will be in front regardless of their depth (like x-ray).
|
|
void | SetPickClosest (bool theToPreferClosest) |
| Set flag determining precedence of picked depth over entity priority in sorted results.
|
|
SelectMgr_TypeOfDepthTolerance | DepthToleranceType () const |
| Return the type of tolerance for considering two entities having a similar depth (distance from eye to entity); SelectMgr_TypeOfDepthTolerance_SensitivityFactor by default.
|
|
Standard_Real | DepthTolerance () const |
| Return the tolerance for considering two entities having a similar depth (distance from eye to entity).
|
|
void | SetDepthTolerance (SelectMgr_TypeOfDepthTolerance theType, Standard_Real theTolerance) |
| Set the tolerance for considering two entities having a similar depth (distance from eye to entity).
|
|
Standard_Integer | NbPicked () const |
| Returns the number of detected owners.
|
|
void | ClearPicked () |
| Clears picking results.
|
|
void | Clear () |
| Empties all the tables, removes all selections...
|
|
Handle< SelectMgr_EntityOwner > | Picked (const Standard_Integer theRank) const |
| Returns the entity Owner for the object picked at specified position.
|
|
const SelectMgr_SortCriterion & | PickedData (const Standard_Integer theRank) const |
| Returns the Entity for the object picked at specified position.
|
|
const Handle< Select3D_SensitiveEntity > & | PickedEntity (const Standard_Integer theRank) const |
| Returns the Entity for the object picked at specified position.
|
|
gp_Pnt | PickedPoint (const Standard_Integer theRank) const |
| Returns the 3D point (intersection of picking axis with the object nearest to eye) for the object picked at specified position.
|
|
Standard_Boolean | RemovePicked (const Handle< SelectMgr_SelectableObject > &theObject) |
| Remove picked entities associated with specified object.
|
|
Standard_Boolean | Contains (const Handle< SelectMgr_SelectableObject > &theObject) const |
|
const Handle< Select3D_BVHBuilder3d > | EntitySetBuilder () |
| Returns the default builder used to construct BVH of entity set.
|
|
void | SetEntitySetBuilder (const Handle< Select3D_BVHBuilder3d > &theBuilder) |
| Sets the default builder used to construct BVH of entity set. The new builder will be also assigned for already defined objects, but computed BVH trees will not be invalidated.
|
|
Standard_Boolean | Modes (const Handle< SelectMgr_SelectableObject > &theSelectableObject, TColStd_ListOfInteger &theModeList, const SelectMgr_StateOfSelection theWantedState=SelectMgr_SOS_Any) const |
| Returns the list of selection modes ModeList found in this selector for the selectable object aSelectableObject. Returns true if aSelectableObject is referenced inside this selector; returns false if the object is not present in this selector.
|
|
Standard_Boolean | IsActive (const Handle< SelectMgr_SelectableObject > &theSelectableObject, const Standard_Integer theMode) const |
| Returns true if the selectable object aSelectableObject having the selection mode aMode is active in this selector.
|
|
Standard_Boolean | IsInside (const Handle< SelectMgr_SelectableObject > &theSelectableObject, const Standard_Integer theMode) const |
| Returns true if the selectable object aSelectableObject having the selection mode aMode is in this selector.
|
|
SelectMgr_StateOfSelection | Status (const Handle< SelectMgr_Selection > &theSelection) const |
| Returns the selection status Status of the selection aSelection.
|
|
TCollection_AsciiString | Status (const Handle< SelectMgr_SelectableObject > &theSelectableObject) const |
|
void | ActiveOwners (NCollection_List< Handle< SelectMgr_EntityOwner > > &theOwners) const |
| Returns the list of active entity owners.
|
|
void | AddSelectableObject (const Handle< SelectMgr_SelectableObject > &theObject) |
| Adds new object to the map of selectable objects.
|
|
void | AddSelectionToObject (const Handle< SelectMgr_SelectableObject > &theObject, const Handle< SelectMgr_Selection > &theSelection) |
| Adds new selection to the object and builds its BVH tree.
|
|
void | MoveSelectableObject (const Handle< SelectMgr_SelectableObject > &theObject) |
| Moves existing object from set of not transform persistence objects to set of transform persistence objects (or vice versa).
|
|
void | RemoveSelectableObject (const Handle< SelectMgr_SelectableObject > &theObject) |
| Removes selectable object from map of selectable ones.
|
|
void | RemoveSelectionOfObject (const Handle< SelectMgr_SelectableObject > &theObject, const Handle< SelectMgr_Selection > &theSelection) |
| Removes selection of the object and marks its BVH tree for rebuild.
|
|
void | RebuildObjectsTree (const Standard_Boolean theIsForce=Standard_False) |
| Marks BVH of selectable objects for rebuild. Parameter theIsForce set as true guarantees that 1st level BVH for the viewer selector will be rebuilt during this call.
|
|
void | RebuildSensitivesTree (const Handle< SelectMgr_SelectableObject > &theObject, const Standard_Boolean theIsForce=Standard_False) |
| Marks BVH of sensitive entities of particular selectable object for rebuild. Parameter theIsForce set as true guarantees that 2nd level BVH for the object given will be rebuilt during this call.
|
|
SelectMgr_SelectingVolumeManager & | GetManager () |
| Returns instance of selecting volume manager of the viewer selector.
|
|
const SelectMgr_SelectableObjectSet & | SelectableObjects () const |
| Return map of selectable objects.
|
|
void | ResetSelectionActivationStatus () |
| Marks all added sensitive entities of all objects as non-selectable.
|
|
void | AllowOverlapDetection (const Standard_Boolean theIsToAllow) |
| Is used for rectangular selection only If theIsToAllow is false, only fully included sensitives will be detected, otherwise the algorithm will mark both included and overlapped entities as matched.
|
|
void | Pick (const Standard_Integer theXPix, const Standard_Integer theYPix, const Handle< V3d_View > &theView) |
| Picks the sensitive entity at the pixel coordinates of the mouse <theXPix> and <theYPix>. The selector looks for touched areas and owners.
|
|
void | Pick (const Standard_Integer theXPMin, const Standard_Integer theYPMin, const Standard_Integer theXPMax, const Standard_Integer theYPMax, const Handle< V3d_View > &theView) |
| Picks the sensitive entity according to the minimum and maximum pixel values <theXPMin>, <theYPMin>, <theXPMax> and <theYPMax> defining a 2D area for selection in the 3D view aView.
|
|
void | Pick (const TColgp_Array1OfPnt2d &thePolyline, const Handle< V3d_View > &theView) |
| pick action - input pixel values for polyline selection for selection.
|
|
void | Pick (const gp_Ax1 &theAxis, const Handle< V3d_View > &theView) |
| Picks the sensitive entity according to the input axis. This is geometric intersection 3D objects by axis (camera parameters are ignored and objects with transform persistence are skipped).
|
|
Standard_Boolean | ToPixMap (Image_PixMap &theImage, const Handle< V3d_View > &theView, const StdSelect_TypeOfSelectionImage theType, const Standard_Integer thePickedIndex=1) |
| Dump of detection results into image. This method performs axis picking for each pixel in the image and generates a color depending on picking results and selection image type.
|
|
void | DisplaySensitive (const Handle< V3d_View > &theView) |
| Displays sensitives in view <theView>.
|
|
void | ClearSensitive (const Handle< V3d_View > &theView) |
|
void | DisplaySensitive (const Handle< SelectMgr_Selection > &theSel, const gp_Trsf &theTrsf, const Handle< V3d_View > &theView, const Standard_Boolean theToClearOthers=Standard_True) |
|
void | DumpJson (Standard_OStream &theOStream, Standard_Integer theDepth=-1) const |
| Dumps the content of me into the stream.
|
|
void | SetToPrebuildBVH (Standard_Boolean theToPrebuild, Standard_Integer theThreadsNum=-1) |
| Enables/disables building BVH for sensitives in separate threads.
|
|
void | QueueBVHBuild (const Handle< Select3D_SensitiveEntity > &theEntity) |
| Queues a sensitive entity to build its BVH.
|
|
void | WaitForBVHBuild () |
| Waits BVH threads finished building.
|
|
Standard_Boolean | ToPrebuildBVH () const |
| Returns TRUE if building BVH for sensitives in separate threads is enabled.
|
|
Public Member Functions inherited from Standard_Transient |
| Standard_Transient () |
| Empty constructor.
|
|
| Standard_Transient (const Standard_Transient &) |
| Copy constructor – does nothing.
|
|
Standard_Transient & | operator= (const Standard_Transient &) |
| Assignment operator, needed to avoid copying reference counter.
|
|
virtual | ~Standard_Transient () |
| Destructor must be virtual.
|
|
virtual const opencascade::handle< Standard_Type > & | DynamicType () const |
| Returns a type descriptor about this object.
|
|
Standard_Boolean | IsInstance (const opencascade::handle< Standard_Type > &theType) const |
| Returns a true value if this is an instance of Type.
|
|
Standard_Boolean | IsInstance (const Standard_CString theTypeName) const |
| Returns a true value if this is an instance of TypeName.
|
|
Standard_Boolean | IsKind (const opencascade::handle< Standard_Type > &theType) const |
| Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
|
Standard_Boolean | IsKind (const Standard_CString theTypeName) const |
| Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
|
|
Standard_Transient * | This () const |
| Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
|
|
Standard_Integer | GetRefCount () const noexcept |
| Get the reference counter of this object.
|
|
void | IncrementRefCounter () noexcept |
| Increments the reference counter of this object.
|
|
Standard_Integer | DecrementRefCounter () noexcept |
| Decrements the reference counter of this object; returns the decremented value.
|
|
virtual void | Delete () const |
| Memory deallocator for transient classes.
|
|
A framework to define finding, sorting the sensitive primitives in a view. Services are also provided to define the return of the owners of those primitives selected. The primitives are sorted by criteria such as priority of the primitive or its depth in the view relative to that of other primitives. Note that in 3D, the inheriting framework StdSelect_ViewerSelector3d is only to be used if you do not want to use the services provided by AIS. Two tools are available to find and select objects found at a given position in the view. If you want to select the owners of all the objects detected at point x,y,z you use the Init - More - Next - Picked loop. If, on the other hand, you want to select only one object detected at that point, you use the Init - More - OnePicked loop. In this iteration, More is used to see if an object was picked and OnePicked, to get the object closest to the pick position. Viewer selectors are driven by SelectMgr_SelectionManager, and manipulate the SelectMgr_Selection objects given to them by the selection manager.
Tolerances are applied to the entities in the following way:
- tolerance value stored in mytolerance will be used to calculate initial selecting frustum, which will be applied for intersection testing during BVH traverse;
- if tolerance of sensitive entity is less than mytolerance, the frustum for intersection detection will be resized according to its sensitivity.