summaryrefslogtreecommitdiff
path: root/inc/Select3D_SensitiveSegment.hxx
blob: 3cb0d5a5e59cb25c48ffca4a88382ea684f9b109 (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
// 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_SensitiveSegment_HeaderFile
#define _Select3D_SensitiveSegment_HeaderFile

#ifndef _Standard_HeaderFile
#include <Standard.hxx>
#endif
#ifndef _Standard_DefineHandle_HeaderFile
#include <Standard_DefineHandle.hxx>
#endif
#ifndef _Handle_Select3D_SensitiveSegment_HeaderFile
#include <Handle_Select3D_SensitiveSegment.hxx>
#endif

#ifndef _Standard_Integer_HeaderFile
#include <Standard_Integer.hxx>
#endif
#ifndef _Select3D_Pnt_HeaderFile
#include <Select3D_Pnt.hxx>
#endif
#ifndef _Select3D_Pnt2d_HeaderFile
#include <Select3D_Pnt2d.hxx>
#endif
#ifndef _Select3D_SensitiveEntity_HeaderFile
#include <Select3D_SensitiveEntity.hxx>
#endif
#ifndef _Handle_SelectBasics_EntityOwner_HeaderFile
#include <Handle_SelectBasics_EntityOwner.hxx>
#endif
#ifndef _gp_Pnt_HeaderFile
#include <gp_Pnt.hxx>
#endif
#ifndef _gp_Pnt2d_HeaderFile
#include <gp_Pnt2d.hxx>
#endif
#ifndef _Handle_Select3D_Projector_HeaderFile
#include <Handle_Select3D_Projector.hxx>
#endif
#ifndef _Handle_Select3D_SensitiveEntity_HeaderFile
#include <Handle_Select3D_SensitiveEntity.hxx>
#endif
#ifndef _Standard_Boolean_HeaderFile
#include <Standard_Boolean.hxx>
#endif
#ifndef _Standard_Real_HeaderFile
#include <Standard_Real.hxx>
#endif
#ifndef _Standard_OStream_HeaderFile
#include <Standard_OStream.hxx>
#endif
class SelectBasics_EntityOwner;
class gp_Pnt;
class Select3D_Projector;
class SelectBasics_ListOfBox2d;
class Select3D_SensitiveEntity;
class TopLoc_Location;
class TColgp_Array1OfPnt2d;
class Bnd_Box2d;
class gp_Lin;


//! A framework to define sensitive zones along a segment <br>
//!          One gives the 3D start and end point; <br>
//!          the maximum number of 2D boxes given <br>
//!          by this entity may be set by the user <br>
//!          if the projected segment is <br>
//!          vertical or horizontal, one needs only 1 box. <br>
//!          for a pi/4 angle -> MaxNumber 2D boxes <br>
class Select3D_SensitiveSegment : public Select3D_SensitiveEntity {

public:

  //! Constructs the sensitive segment object defined by <br>
//! the owner OwnerId, the points FirstP, LastP and the <br>
//! maximum number of sensitive bounding boxes MaxRect. <br>
  Standard_EXPORT   Select3D_SensitiveSegment(const Handle(SelectBasics_EntityOwner)& OwnerId,const gp_Pnt& FirstP,const gp_Pnt& LastP,const Standard_Integer MaxRect = 1);
  //!  Sets the maximum number of sensitive rectangles MaxRect. <br>
        void Set(const Standard_Integer MaxRect) ;
  //! changes the start Point of the Segment; <br>
        void StartPoint(const gp_Pnt& aPt) ;
  //! changes the end point of the segment <br>
        void EndPoint(const gp_Pnt& aPt) ;
  //! gives the 3D start Point of the Segment <br>
        gp_Pnt StartPoint() const;
  //! gives the 3D End Point of the Segment <br>
        gp_Pnt EndPoint() const;
  //! gives the 3D start Point of the Segment <br>
        gp_Pnt2d StartPoint2d() const;
  //! gives the 3D End Point of the Segment <br>
        gp_Pnt2d EndPoint2d() const;
  //! projection of the sensitive primitive in order to <br>
//!          get 2D boxes for the Sort Algorithm <br>
  Standard_EXPORT   virtual  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     Handle_Select3D_SensitiveEntity GetConnected(const TopLoc_Location& aLocation) ;
  //! 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) ;
  
  Standard_EXPORT     Standard_Real ComputeDepth(const gp_Lin& EyeLine) const;
  //!returns <mymaxrect> <br>
        Standard_Integer MaxBoxes() const;
  
  Standard_EXPORT   virtual  void Dump(Standard_OStream& S,const Standard_Boolean FullDump = Standard_True) const;




  DEFINE_STANDARD_RTTI(Select3D_SensitiveSegment)

protected:




private: 


Standard_Integer mymaxrect;
Select3D_Pnt mystart;
Select3D_Pnt myend;
Select3D_Pnt2d myprojstart;
Select3D_Pnt2d myprojend;


};


#include <Select3D_SensitiveSegment.lxx>



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


#endif