b53e2c2453129ee8af683139f2809d952e357f2c
[occt.git] / src / Select3D / Select3D_SensitiveTriangulation.cdl
1 -- Created on: 1997-05-15
2 -- Created by: Robert COUBLANC
3 -- Copyright (c) 1997-1999 Matra Datavision
4 -- Copyright (c) 1999-2012 OPEN CASCADE SAS
5 --
6 -- The content of this file is subject to the Open CASCADE Technology Public
7 -- License Version 6.5 (the "License"). You may not use the content of this file
8 -- except in compliance with the License. Please obtain a copy of the License
9 -- at http://www.opencascade.org and read it completely before using this file.
10 --
11 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
12 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
13 --
14 -- The Original Code and all software distributed under the License is
15 -- distributed on an "AS IS" basis, without warranty of any kind, and the
16 -- Initial Developer hereby disclaims all such warranties, including without
17 -- limitation, any warranties of merchantability, fitness for a particular
18 -- purpose or non-infringement. Please see the License for the specific terms
19 -- and conditions governing the rights and limitations under the License.
20
21
22
23 class SensitiveTriangulation from Select3D 
24 inherits SensitiveEntity from Select3D
25
26         ---Purpose: A framework to define selection of a sensitive entity made of a set of triangles.
27
28 uses
29     EntityOwner      from SelectBasics,
30     Projector        from Select3D,
31     Lin              from gp,
32     Trsf             from gp,
33     ListOfBox2d      from SelectBasics,
34     Array1OfPnt      from TColgp,
35     Array1OfPnt2d    from TColgp,
36     HArray1OfInteger from TColStd,
37     Box2d            from Bnd,
38     SensitiveTriangle from Select3D,
39     ListOfSensitiveTriangle from Select3D,
40     XYZ              from gp,
41     XY               from gp,
42     Pnt              from gp,
43     Pnt2d            from gp,
44     Triangulation    from Poly,
45     Location from TopLoc
46 is
47
48     Create(OwnerId       : EntityOwner from SelectBasics;
49            aTriangulation: Triangulation from Poly;
50            aLoc          : Location from TopLoc;
51            InteriorFlag  : Boolean from Standard = Standard_True)
52     returns mutable SensitiveTriangulation from Select3D;
53
54         ---Purpose: Constructs a sensitive triangulation object defined by
55         -- the owner OwnerId, the triangulation aTriangulation,
56         -- the location aLoc, and the flag InteriorFlag.
57
58     Create(OwnerId       : EntityOwner from SelectBasics;
59            aTriangulation: Triangulation from Poly;
60            aLoc          : Location from TopLoc;
61            thefreeedges  : HArray1OfInteger from TColStd;
62            theCDG        : Pnt from gp;
63            InteriorFlag  : Boolean from Standard)
64     returns mutable SensitiveTriangulation from Select3D;
65         ---Purpose: Constructs a sensitive triangulation object defined by
66         -- the owner OwnerId, the triangulation aTriangulation,
67         -- the location aLoc, the array of free edges
68         -- thefreeedges, the center of gravity theCDG, and the flag InteriorFlag.
69         -- As free edges and the center of gravity do not have
70         -- to be computed later, this syntax reduces computation time. 
71
72
73     Project (me:mutable;aProjector : Projector from Select3D) is redefined static;
74         ---Level: Public 
75         ---Purpose: projection of the sensitive primitive in order to
76         --          get 2D boxes for the Sort Algorithm
77     
78     Areas   (me:mutable ; boxes : in out ListOfBox2d from SelectBasics) is redefined static;
79         ---Level: Public 
80         ---Purpose: stores in <boxes> the 2D Boxes which represent the sensitive face
81         --          in the selection algorithm.
82
83     GetConnected(me:mutable;aLocation: Location from TopLoc)
84     returns SensitiveEntity from Select3D is redefined static;
85
86     Matches(me  :mutable; 
87             X,Y : Real from Standard;
88             aTol: Real from Standard;
89             DMin: out Real from Standard) 
90     returns Boolean
91     is redefined virtual;
92
93     Matches (me  :mutable; 
94              XMin,YMin,XMax,YMax : Real from Standard;
95              aTol: Real from Standard) 
96     returns Boolean
97     is redefined virtual;
98         ---Level: Public 
99      
100     Matches (me  :mutable; 
101              Polyline:Array1OfPnt2d from TColgp;
102              aBox:Box2d from Bnd;
103              aTol: Real from Standard) 
104     returns Boolean
105     is redefined virtual;
106         ---Level: Public 
107     
108     
109     ComputeDepth(me;EyeLine: Lin from gp) 
110     returns Real from Standard is redefined static;
111         ---Purpose: give the depht of the last detected triangle
112         --          (center of gravity)
113
114     DetectedTriangle(me) returns Integer from Standard;
115         ---Purpose: Returns the detected three nodes P1, P2, P3 constituting a triangle.
116         -- This triangle is a component of the overall sensitive
117         -- triangulation created at construction time.
118         ---C++: inline
119
120     Triangulation(me) returns any Triangulation from Poly;
121         ---Purpose: Returns the triangulation used at the time of construction.
122         ---C++: inline
123         ---C++: return const &
124
125     CDG3D(me) returns Pnt from gp;
126         ---Purpose: Returns the 3D center of gravity used at the time of construction.
127         ---C++: inline
128         ---C++: return const &
129     
130     CDG2D(me) returns Pnt2d from gp;
131         ---Purpose: Returns the 2D center of gravity used at the time of construction.
132         ---C++: inline
133         ---C++: return const &
134    
135
136     IsFree(me;
137            IndexOfTriangle : Integer from Standard;
138            IndexinFree     : out Integer from Standard) 
139     returns Boolean is static private;
140
141     Status (me;
142              p0,p1,p2: XY from gp ;
143              aPoint  : XY from gp ;
144              aTol    : Real from Standard;
145              Dmin    : out Real from Standard) returns Integer from  Standard;
146         ---Purpose: Dmin gives the distance between the cdg and aPoint
147
148
149     ---Category: TheLocations....
150
151     HasInitLocation(me) returns Boolean from Standard;
152         ---C++: inline
153
154     GetInitLocation(me) returns Location from TopLoc;
155         ---C++: inline
156         ---C++: return const &
157
158     
159     ResetLocation(me:mutable) is redefined virtual;
160
161     SetLocation(me:mutable;aLoc :Location from TopLoc) is redefined virtual;
162
163
164
165     Dump(me; S: in out OStream;FullDump : Boolean from Standard = Standard_True) is redefined virtual;
166
167
168     DetectedTriangle(me;P1,P2,P3 : out Pnt from gp) 
169     returns Boolean from Standard;
170         ---Purpose: gives the vertices of detected triangle...
171
172  
173     DetectedTriangle2d(me;P1,P2,P3 : out Pnt2d from gp) 
174     returns Boolean from Standard;
175         ---Purpose: Gets 2D nodes computed by entity using 3D nodes and viewer
176         --          parameters (see Project() method)
177     
178     ComputeTotalTrsf(me:mutable) is static private;
179
180
181 fields
182
183     
184     myTriangul : Triangulation from Poly;
185     myiniloc   : Location      from TopLoc;
186     myTrsf     : Trsf          from gp;
187
188     myCDG3D    : Pnt from gp;
189     myFreeEdges: HArray1OfInteger from TColStd;
190     myIntFlag  : Boolean from Standard;
191
192     myNodes2d  : Array1OfPnt2d from TColgp;
193     myCDG2D    : Pnt2d from gp;
194     mybox2d    : Box2d from Bnd;
195
196     
197     myDetectedTr: Integer from Standard;
198         
199 end SensitiveTriangulation;