0024242: Hang-up during classification a 3D point relative to a solid
[occt.git] / src / BRepClass3d / BRepClass3d_SolidExplorer.cdl
1 -- Created on: 1994-03-10
2 -- Created by: Laurent BUCHARD
3 -- Copyright (c) 1994-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 -- Modified by skv - Thu Sep  4 12:19:22 2003 OCC578 
23 -- Add the method GetFaceSegmentIndex() which is used to obtain the index of 
24 -- the face for which last segment is calculated.
25
26 class SolidExplorer from BRepClass3d 
27
28         ---Purpose: Provide an   exploration of a  BRep Shape   for the
29         --          classification.
30
31 uses
32     Orientation  from TopAbs,
33     Pnt          from gp,
34     Pnt2d        from gp,    
35     Lin          from gp,
36     Vec          from gp,
37     Face         from TopoDS,
38     Shell        from TopoDS,
39     Shape        from TopoDS,
40     Explorer     from TopExp,
41     Edge         from BRepClass,
42     Box          from Bnd,
43     State        from TopAbs,
44     Intersector  from IntCurvesFace,
45     MapOfInter   from BRepClass3d,
46     HSurface     from BRepAdaptor
47 is
48
49     Create returns SolidExplorer from BRepClass3d;
50
51     Create (Oth: SolidExplorer from BRepClass3d) 
52         ---Purpose: Raise if called. 
53     returns SolidExplorer from BRepClass3d;
54
55     Create (S : Shape  from TopoDS) returns SolidExplorer from BRepClass3d;
56
57     Delete(me:out) is virtual;
58     ---C++: alias "Standard_EXPORT virtual ~BRepClass3d_SolidExplorer(){Destroy() ; }"
59     
60     InitShape(me : in out; S : Shape from TopoDS) is static ;
61         
62     Reject(me;  P : Pnt from gp) returns Boolean is virtual ;
63     ---Purpose: Should return True if P outside of bounding vol. of the shape
64     
65     FindAPointInTheFace(myclass; F: Face from TopoDS; 
66                                  P: out Pnt from gp;
67                                  Param: out Real from Standard) 
68     ---Purpose : compute a point P in the face  F. Param is a Real in
69     --         ]0,1[ and   is  used to  initialise  the algorithm. For
70     --         different values , different points are returned. 
71     returns Boolean from Standard;
72
73     FindAPointInTheFace(myclass; F: Face from TopoDS; 
74                                  P: out Pnt from gp;
75                                  u,v: out Real from Standard;
76                                  Param: out Real from Standard) 
77     returns Boolean from Standard;
78
79     FindAPointInTheFace(myclass; F: Face from TopoDS; 
80                                  P: out Pnt from gp;
81                                  u,v: out Real from Standard;
82                                  Param: out Real from Standard;
83                                  theVecD1U, theVecD1V: out Vec from gp)
84     returns Boolean from Standard;
85
86     FindAPointInTheFace(myclass; F: Face from TopoDS; 
87                                  P: out Pnt from gp;
88                                  u,v: out Real from Standard)
89     returns Boolean from Standard;
90
91     FindAPointInTheFace(myclass; F: Face from TopoDS; 
92                                  P: out Pnt from gp)
93     returns Boolean from Standard;
94
95     FindAPointInTheFace(myclass; F: Face from TopoDS; 
96                                  u,v: out Real from Standard) 
97     returns Boolean from Standard;
98                                                                          
99     -----------------------------------------------------------------------
100
101     PointInTheFace(me;      F: Face from TopoDS; 
102                             P: out Pnt from gp;
103                             u,v: out Real from Standard;
104                             Param: out Real from Standard;
105                             Index: out Integer from Standard) 
106     returns Boolean from Standard is static ;
107
108     PointInTheFace(me;      F: Face from TopoDS; 
109                             P: out Pnt from gp;
110                             u,v: out Real from Standard;
111                             Param: out Real from Standard;
112                             Index: out Integer from Standard;
113                             surf: HSurface  from BRepAdaptor;
114                             u1,v1,u2,v2: Real from Standard)
115     returns Boolean from Standard is static;
116
117     PointInTheFace(me;      F: Face from TopoDS; 
118                             P: out Pnt from gp;
119                             u,v: out Real from Standard;
120                             Param: out Real from Standard;
121                             Index: out Integer from Standard;
122                             surf: HSurface  from BRepAdaptor;
123                             u1,v1,u2,v2: Real from Standard;
124                             theVecD1U, theVecD1V: out Vec from gp)
125     returns Boolean from Standard is static ;
126     ---Purpose: <Index> gives point index  to  search from and returns
127     --          point index of succeseful search
128
129
130
131     InitShell(me: in out) is static ;
132     ---Purpose: Starts an exploration of the shells.
133     MoreShell(me) returns Boolean from Standard is static ;
134     ---Purpose: Returns True if there is a current shell. 
135     NextShell(me: in out) is static ;
136     ---Purpose: Sets the explorer to the next shell.
137     CurrentShell(me) returns Shell from TopoDS is static ;
138     ---Purpose: Returns the current shell.
139     
140     RejectShell(me; L: Lin from gp) returns Boolean from Standard is virtual;
141     ---Purpose: Returns True if the Shell is rejected.
142     
143     InitFace(me: in out) is static ;
144     ---Purpose: Starts an exploration of the faces of the current shell.
145     MoreFace(me) returns Boolean from Standard is static ;
146     ---Purpose: Returns True if current face in current shell. 
147     NextFace(me: in out) is static ;
148     ---Purpose: Sets the explorer to the next Face of the current shell.
149     CurrentFace(me) returns Face from TopoDS is static ;
150     ---Purpose: Returns the current face.
151     
152     RejectFace(me; L: Lin from gp) returns Boolean from Standard is virtual;
153     ---Purpose: returns True if the face is rejected.
154     
155     ----------------------------------------------------------------------
156
157     Segment(me: in out;  P :  Pnt from gp;
158                          L : out Lin from gp; Par : out  Real)
159          ---Purpose: Returns  in <L>, <Par>  a segment having at least
160          --          one  intersection  with  the  shape  boundary  to
161          --          compute  intersections. 
162          --    
163  --modified by NIZNHY-PKV Thu Nov 14 12:20:17 2002  f 
164     returns  Integer from Standard  
165 --modified by NIZNHY-PKV Thu Nov 14 12:20:21 2002  t 
166     is static;
167
168     OtherSegment(me: in out;  P :  Pnt from gp;
169                               L : out Lin from gp; Par : out  Real)
170          ---Purpose: Returns  in <L>, <Par>  a segment having at least
171          --          one  intersection  with  the  shape  boundary  to
172          --          compute  intersections. 
173          --          
174          --          The First Call to this method returns a line which
175          --          point to a point of the first face of the shape.
176          --          The Second Call provide a line to the second face
177          --          and so on. 
178          --          
179 --modified by NIZNHY-PKV Thu Nov 14 12:20:17 2002  f 
180     returns  Integer from Standard  
181 --modified by NIZNHY-PKV Thu Nov 14 12:20:21 2002  t    
182     is static;
183     
184 -- Modified by skv - Thu Sep  4 12:19:22 2003 OCC578 Begin
185     GetFaceSegmentIndex(me) 
186         ---Purpose: Returns the index of face for which 
187         --          last segment is calculated.
188     returns Integer from Standard 
189     is static;
190 -- Modified by skv - Thu Sep  4 12:19:23 2003 OCC578 End
191     --------------------------------------------------------------------
192
193     --- Dump method
194
195     DumpSegment(me; P : Pnt from gp; L : Lin from gp; 
196                     Par : Real from Standard; S : State from TopAbs) is  virtual;
197
198     
199     Box(me) 
200         ---C++: return  const &
201         returns Box from Bnd
202         is static;
203     
204     Intersector(me; F : Face from TopoDS) 
205         ---C++: return  &
206         returns Intersector from IntCurvesFace is static;
207
208     Destroy(me: in out)
209         --C++: alias ~
210     is static;
211     
212 fields
213
214     myBox           : Box      from Bnd;
215     myShape         : Shape    from TopoDS;
216     myReject        : Boolean  from Standard;
217     myFirstFace     : Integer  from Standard;
218     myParamOnEdge   : Real     from Standard;
219     myShellExplorer : Explorer from TopExp;
220     myFaceExplorer  : Explorer from TopExp;
221
222     myMapOfInter    : MapOfInter from BRepClass3d;
223
224 end SolidExplorer;