0022967: Boolean operations between two cylinders with orthogonal axis generate a...
[occt.git] / src / IntTools / IntTools_Context.cdl
1 -- File:        IntTools_Context.cdl
2 -- Created:     Wed Apr  3 16:44:34 2002
3 -- Author:      Peter KURNEV
4 --              <pkv@irinox>
5 ---Copyright:    Matra Datavision 2002
6
7
8 class Context from IntTools  
9     inherits TShared from MMgt
10
11         ---Purpose:  
12         --- The class is to provide direct access 
13         --- to the frequently using objects like 
14         --- IntTools_FClass2d,    
15         --- GeomAPI_ProjectPointOnSurf,  etc. 
16         --- The instance of the class allows to avoid repeated  
17         --- computations by mapping internal objects in the  
18         --  instance. 
19         
20 uses     
21     State from TopAbs,
22     Pnt2d from  gp,
23     Pnt   from  gp, 
24     Curve from Geom, 
25     ProjectPointOnCurve from GeomAPI, 
26     ProjectPointOnSurf  from GeomAPI, 
27     Vertex from  TopoDS, 
28     Face   from  TopoDS,
29     Edge   from  TopoDS, 
30     Solid  from  TopoDS, 
31     SolidClassifier from BRepClass3d,
32     IndexedDataMapOfShapeAddress from TopTools, 
33     IndexedDataMapOfTransientAddress from IntTools, 
34     FClass2d from IntTools, 
35     SurfaceRangeLocalizeData from IntTools,
36     Curve from IntTools 
37     
38 --raises
39
40 is 
41     Create   
42         returns mutable Context from IntTools; 
43     ---C++: alias "Standard_EXPORT virtual ~IntTools_Context();"
44         ---Purpose:
45         --- Empty constructor
46         
47     FClass2d(me: mutable; 
48             aF: Face from TopoDS) 
49         returns FClass2d from IntTools; 
50         ---C++: return & 
51         ---Purpose:
52         --- Returns a reference to point classifier
53         --- for given face
54         ---
55      
56     ProjPS (me: mutable; 
57             aF: Face from TopoDS) 
58         returns ProjectPointOnSurf from GeomAPI;
59         ---C++: return &  
60         ---Purpose:
61         --- Returns a reference to point projector
62         --- for given face
63         ---
64      
65     ProjPC (me: mutable; 
66             aE: Edge from TopoDS) 
67         returns ProjectPointOnCurve from GeomAPI;
68         ---C++: return &
69         ---Purpose:
70         --- Returns a reference to point projector
71         --- for given edge
72         ---
73
74     ProjPT (me: mutable; 
75             aC: Curve from Geom) 
76         returns ProjectPointOnCurve from GeomAPI;
77         ---C++: return &
78         ---Purpose:
79         --- Returns a reference to point projector
80         --- for given curve
81         ---
82
83     SurfaceData(me: mutable; 
84                 aF: Face from TopoDS)
85         returns SurfaceRangeLocalizeData from IntTools;
86         ---C++: return &
87         ---Purpose:
88         --- Returns a reference to surface localization data
89         --- for given face
90
91
92     SolidClassifier(me: mutable;  
93                     aSolid: Solid from TopoDS) 
94         returns SolidClassifier from BRepClass3d; 
95         ---C++: return &   
96         ---Purpose:
97         --- Returns a reference to solid classifier
98         --- for given solid
99         ---
100
101     ---         API  Block
102     ---
103     ComputeVE  (me:mutable;  
104                 aV   : Vertex from  TopoDS; 
105                 aE   : Edge   from  TopoDS; 
106                 aT   :out Real from Standard) 
107         returns Integer from Standard;
108         ---Purpose:
109         --- Computes parameter of the vertex aV on
110         --- the edge aE.
111         --- Returns zero if the distance between vertex
112         --- and edge is less than sum of tolerances,
113         --- otherwise and for following conditions returns
114         --- negative value
115         --- 1. the edge is degenerated (-1)
116         --- 2. the edge does not contain 3d curve and pcurves (-2)
117         --- 3. projection algorithm failed (-3)
118         ---
119         
120     ComputeVE  (me:mutable;  
121                 aV   : Vertex from  TopoDS; 
122                 aE   : Edge   from  TopoDS; 
123                 aT   :out Real from Standard; 
124                 bToUpdateVertex:out Boolean from Standard; 
125                 aDist          :out Real from Standard)  
126         returns Integer from Standard;
127         ---Purpose:
128         --- Computes parameter aT of the vertex aV on
129         --- the edge aE.
130         --- Returns zero if the distance between vertex
131         --- and edge is less than sum of tolerances,
132         --- otherwise and for following conditions returns
133         --- negative value
134         --- 1. the edge is degenerated (-1)
135         --- 2. the edge does not contain 3d curve and pcurves (-2)
136         --- 3. projection algorithm failed (-3)
137         ---  
138         --- Output parameters 
139         ---      
140         --- bToUpdateVertex - the flag that indicates whether the  
141         ---      vertex tolerance should be modified or not 
142         --- aDist - the value of the distance between the vertex  
143         ---      and the edge  
144     
145     ComputeVS  (me:mutable;  
146                 aV  :     Vertex from  TopoDS; 
147                 aF  :     Face   from  TopoDS; 
148                 U   : out Real from Standard; 
149                 V   : out Real from Standard) 
150         returns Integer from Standard;
151         ---Purpose:
152         --- Computes UV parameters of the vertex aV on face aF
153         --- Returns zero if the distance between vertex and face is
154         --- less than or equal the sum of tolerances and the projection 
155         --- point lays inside boundaries of the face.
156         --- For following conditions returns negative value
157         --- 1. projection algorithm failed (-1)
158         --- 2. distance is more than sum of tolerances (-2)
159         --- 3. projection point out or on the boundaries of face (-3)
160         --- 
161          
162     StatePointFace(me:mutable;    
163                    aF   :  Face   from  TopoDS;
164                    aP2D :  Pnt2d  from  gp) 
165         returns State from TopAbs; 
166         ---Purpose:
167         --- Returns the state of the point aP2D
168         --- relative to face aF
169         ---
170          
171     IsPointInFace(me:mutable;    
172                   aF   :  Face   from  TopoDS;
173                   aP2D :  Pnt2d  from  gp) 
174         returns Boolean from Standard;
175         ---Purpose:
176         --- Returns true if the point aP2D is
177         --- inside the boundaries of the face aF,
178         --- otherwise returns false
179         ---
180     
181     IsPointInOnFace(me:mutable;     
182                     aF   :  Face   from  TopoDS;
183                     aP2D :  Pnt2d  from  gp) 
184         returns Boolean from Standard;
185         ---Purpose:
186         --- Returns true if the point aP2D is
187         --- inside or on the boundaries of aF
188         ---
189          
190     IsValidPointForFace(me:mutable                            ;
191                         aP3D :  Pnt   from  gp; 
192                         aF   :  Face  from TopoDS; 
193                         aTol :  Real from Standard) 
194         returns Boolean from Standard;
195         ---Purpose:
196         --- Returns true if the distance between point aP3D
197         --- and face aF is less or equal to tolerance aTol
198         --- and projection point is inside or on the boundaries
199         --- of the face aF
200         ---
201
202     IsValidPointForFaces(me:mutable;
203                          aP3D :  Pnt   from  gp; 
204                          aF1  :  Face  from TopoDS; 
205                          aF2  :  Face  from TopoDS;
206                          aTol :  Real from Standard)   
207         returns Boolean from Standard;
208         ---Purpose:
209         --- Returns true if IsValidPointForFace returns true
210         --- for both face aF1 and aF2
211         ---
212          
213     IsValidBlockForFace (me:mutable;  
214                          aT1  :  Real  from Standard;      
215                          aT2  :  Real  from Standard;      
216                          aIC  :  Curve from IntTools; 
217                          aF   :  Face  from TopoDS; 
218                          aTol :  Real from Standard) 
219         returns Boolean from Standard;
220         ---Purpose:
221         --- Returns true if IsValidPointForFace returns true
222         --- for some 3d point that lay on the curve aIC bounded by
223         --- parameters aT1 and aT2
224         ---
225
226     IsValidBlockForFaces (me:mutable;  
227                           aT1  :  Real  from Standard;      
228                           aT2  :  Real  from Standard;      
229                           aIC  :  Curve from IntTools; 
230                           aF1  :  Face  from TopoDS; 
231                           aF2  :  Face  from TopoDS; 
232                           aTol :  Real from Standard) 
233         returns Boolean from Standard;
234         ---Purpose:
235         --- Returns true if IsValidBlockForFace returns true
236         --- for both faces aF1 and aF2
237         ---
238          
239     IsVertexOnLine(me:mutable;  
240                    aV   :  Vertex from  TopoDS;  
241                    aIC  :  Curve from IntTools;  
242                    aTolC:  Real  from Standard; 
243                    aT   :out  Real  from Standard)   
244         returns Boolean from Standard;
245         ---Purpose:
246         --- Computes parameter of the vertex aV on
247         --- the curve aIC.
248         --- Returns true if the distance between vertex and
249         --- curve is less than sum of tolerance of aV and aTolC,
250         --- otherwise or if projection algorithm failed
251         --- returns false (in this case aT isn't significant)
252         --- 
253         
254      IsVertexOnLine(me:mutable;  
255                    aV   :  Vertex from  TopoDS; 
256                    aTolV:  Real  from Standard;  
257                    aIC  :  Curve from IntTools;  
258                    aTolC:  Real  from Standard; 
259                    aT   :out  Real  from Standard)   
260         returns Boolean from Standard;
261         ---Purpose:
262         --- Computes parameter of the vertex aV on
263         --- the curve aIC.
264         --- Returns true if the distance between vertex and
265         --- curve is less than sum of tolerance of aV and aTolC,
266         --- otherwise or if projection algorithm failed
267         --- returns false (in this case aT isn't significant)
268         --- 
269
270      ProjectPointOnEdge (me:mutable;  
271                          aP   : Pnt  from  gp;       
272                          aE   : Edge from  TopoDS;                 
273                          aT   :out Real from  Standard) 
274         returns Boolean from Standard;
275         ---Purpose:
276         --- Computes parameter of the point aP on
277         --- the edge aE.
278         --- Returns false if projection algorithm failed
279         --- other wiese returns true.
280         ---
281
282 fields 
283     myFClass2dMap :  IndexedDataMapOfShapeAddress     from TopTools; 
284     myProjPSMap   :  IndexedDataMapOfShapeAddress     from TopTools; 
285     myProjPCMap   :  IndexedDataMapOfShapeAddress     from TopTools;    
286     myProjPTMap   :  IndexedDataMapOfTransientAddress from IntTools;    
287     mySClassMap   :  IndexedDataMapOfShapeAddress     from TopTools;
288     myProjSDataMap:  IndexedDataMapOfShapeAddress     from TopTools;
289      
290 end Context;
291