summaryrefslogtreecommitdiff
path: root/inc/Select3D_SensitiveGroup.hxx
blob: d76bf31802fc17000b9cf8035f17f5b8a41d7f5f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
// This file is generated by WOK (CPPExt).
// Please do not edit this file; modify original file instead.
// The copyright and license terms as defined for the original file apply to 
// this header file considered to be the "object code" form of the original source.

#ifndef _Select3D_SensitiveGroup_HeaderFile
#define _Select3D_SensitiveGroup_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Select3D_SensitiveGroup_HeaderFile
#include <Handle_Select3D_SensitiveGroup.hxx>
#endif

#ifndef _Select3D_ListOfSensitive_HeaderFile
#include <Select3D_ListOfSensitive.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Standard_ShortReal_HeaderFile
#include <Standard_ShortReal.hxx>
#endif
#ifndef _Select3D_SensitiveEntity_HeaderFile
#include <Select3D_SensitiveEntity.hxx>
#endif
#ifndef _Handle_SelectBasics_EntityOwner_HeaderFile
#include <Handle_SelectBasics_EntityOwner.hxx>
#endif
#ifndef _Handle_Select3D_SensitiveEntity_HeaderFile
#include <Handle_Select3D_SensitiveEntity.hxx>
#endif
#ifndef _Handle_Select3D_Projector_HeaderFile
#include <Handle_Select3D_Projector.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
class SelectBasics_EntityOwner;
class Select3D_ListOfSensitive;
class Select3D_SensitiveEntity;
class Select3D_Projector;
class SelectBasics_ListOfBox2d;
class TopLoc_Location;
class TColgp_Array1OfPnt2d;
class Bnd_Box2d;
class gp_Lin;


//! A framework to define selection of a sensitive group <br>
//!          by a sensitive entity which is a set of 3D sensitive entities. <br>
//!          Remark: 2 modes are possible for rectangle selection <br>
//!          the group is considered selected <br>
//!          1) when all the entities inside are selected in the rectangle <br>
//!          2) only one entity inside is selected by the rectangle <br>
//!          By default the "Match All entities" mode is set. <br>
class Select3D_SensitiveGroup : public Select3D_SensitiveEntity {

public:

  //! Constructs an empty sensitive group object. <br>
//! This is a set of sensitive 3D entities. The sensitive <br>
//! entities will be defined using the function Add to fill <br>
//! the entity owner OwnerId. If MatchAll is false, nothing can be added. <br>
  Standard_EXPORT   Select3D_SensitiveGroup(const Handle(SelectBasics_EntityOwner)& OwnerId,const Standard_Boolean MatchAll = Standard_True);
  //! Constructs a sensitive group object defined by the list <br>
//! TheList and the entity owner OwnerId. If MatchAll is false, nothing is done. <br>
  Standard_EXPORT   Select3D_SensitiveGroup(const Handle(SelectBasics_EntityOwner)& OwnerId,Select3D_ListOfSensitive& TheList,const Standard_Boolean MatchAll = Standard_True);
  //! Adds the list of sensitive entities LL to the empty <br>
//! sensitive group object created at construction time. <br>
  Standard_EXPORT     void Add(Select3D_ListOfSensitive& LL) ;
  //! Adds the sensitive entity aSensitive to the non-empty <br>
//! sensitive group object created at construction time. <br>
  Standard_EXPORT     void Add(const Handle(Select3D_SensitiveEntity)& aSensitive) ;
  
  Standard_EXPORT     void Remove(const Handle(Select3D_SensitiveEntity)& aSensitive) ;
  //! Removes all sensitive entities from the list used at the <br>
//! time of construction, or added using the function Add. <br>
  Standard_EXPORT     void Clear() ;
  //! Returns true if the sensitive entity aSensitive is in <br>
//! the list used at the time of construction, or added using the function Add. <br>
  Standard_EXPORT     Standard_Boolean IsIn(const Handle(Select3D_SensitiveEntity)& aSensitive) const;
  //! Sets the requirement that all sensitive entities in the <br>
//! list used at the time of construction, or added using <br>
//! the function Add must be matched. <br>
        void Set(const Standard_Boolean MustMatchAllEntities) ;
  //! Returns true if all sensitive entities in the list used <br>
//! at the time of construction, or added using the function Add must be matched. <br>
        Standard_Boolean MustMatchAll() const;
  //! projection of the sensitive primitive in order to <br>
//!          get 2D boxes for the Sort Algorithm <br>
  Standard_EXPORT     void Project(const Handle(Select3D_Projector)& aProjector) ;
  //! gives the 2D boxes which represent the segment in the <br>
//!          selection process... <br>
  Standard_EXPORT     void Areas(SelectBasics_ListOfBox2d& boxes) ;
  
  Standard_EXPORT     Standard_Integer MaxBoxes() const;
  
  Standard_EXPORT     Handle_Select3D_SensitiveEntity GetConnected(const TopLoc_Location& aLocation) ;
  //!  propagation of location on all the sensitive inside... <br>
  Standard_EXPORT     void SetLocation(const TopLoc_Location& aLoc) ;
  //!  propagation of location on all the sensitive inside... <br>
  Standard_EXPORT     void ResetLocation() ;
  //! projection of the sensitive primitive in order to <br>
//!          get 2D boxes for the Sort Algorithm <br>
  Standard_EXPORT     Standard_Boolean Matches(const Standard_Real X,const Standard_Real Y,const Standard_Real aTol,Standard_Real& DMin) ;
  
  Standard_EXPORT     Standard_Boolean Matches(const Standard_Real XMin,const Standard_Real YMin,const Standard_Real XMax,const Standard_Real YMax,const Standard_Real aTol) ;
  
  Standard_EXPORT   virtual  Standard_Boolean Matches(const TColgp_Array1OfPnt2d& Polyline,const Bnd_Box2d& aBox,const Standard_Real aTol) ;
  //! returns the depth of the touched entity <br>
  Standard_EXPORT     Standard_Real ComputeDepth(const gp_Lin& EyeLine) const;
  
  Standard_EXPORT   virtual  void SetLastPrj(const Handle(Select3D_Projector)& aPrj) ;
  //! Gets group content <br>
       const Select3D_ListOfSensitive& GetEntities() const;




  DEFINE_STANDARD_RTTI(Select3D_SensitiveGroup)

protected:




private: 


Select3D_ListOfSensitive myList;
Standard_Boolean myMustMatchAll;
Standard_Integer myLastRank;
Standard_ShortReal myLastTol;
Standard_ShortReal myX;
Standard_ShortReal myY;


};


#include <Select3D_SensitiveGroup.lxx>



// other Inline functions and methods (like "C++: function call" methods)


#endif