0023442: Provide the access to the functionality of Geom2dHatch_Hacher via IntTools_C...
[occt.git] / src / IntTools / IntTools_Context.cdl
1 -- Created on: 2002-04-03
2 -- Created by: Peter KURNEV
3 -- Copyright (c) 2002-2012 OPEN CASCADE SAS
4 --
5 -- The content of this file is subject to the Open CASCADE Technology Public
6 -- License Version 6.5 (the "License"). You may not use the content of this file
7 -- except in compliance with the License. Please obtain a copy of the License
8 -- at http://www.opencascade.org and read it completely before using this file.
9 --
10 -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11 -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 --
13 -- The Original Code and all software distributed under the License is
14 -- distributed on an "AS IS" basis, without warranty of any kind, and the
15 -- Initial Developer hereby disclaims all such warranties, including without
16 -- limitation, any warranties of merchantability, fitness for a particular
17 -- purpose or non-infringement. Please see the License for the specific terms
18 -- and conditions governing the rights and limitations under the License.
19
20
21
22 class Context from IntTools  
23     inherits TShared from MMgt
24
25         ---Purpose:  
26         --- The class is to provide direct access 
27         --- to the frequently using objects like 
28         --- IntTools_FClass2d,    
29         --- GeomAPI_ProjectPointOnSurf,  etc. 
30         --- The instance of the class allows to avoid repeated  
31         --- computations by mapping internal objects in the  
32         --  instance. 
33         
34 uses     
35     State from TopAbs,
36     Pnt2d from  gp,
37     Pnt   from  gp, 
38     Curve from Geom, 
39     ProjectPointOnCurve from GeomAPI, 
40     ProjectPointOnSurf  from GeomAPI, 
41     Vertex from  TopoDS, 
42     Face   from  TopoDS,
43     Edge   from  TopoDS, 
44     Solid  from  TopoDS, 
45     SolidClassifier from BRepClass3d,
46     IndexedDataMapOfShapeAddress from TopTools, 
47     IndexedDataMapOfTransientAddress from IntTools, 
48     FClass2d from IntTools, 
49     SurfaceRangeLocalizeData from IntTools,
50     Curve from IntTools, 
51     Hatcher from Geom2dHatch 
52     
53 --raises
54
55 is 
56     Create   
57         returns mutable Context from IntTools; 
58     ---C++: alias "Standard_EXPORT virtual ~IntTools_Context();"
59         ---Purpose:
60         --- Empty constructor
61         
62     FClass2d(me: mutable; 
63             aF: Face from TopoDS) 
64         returns FClass2d from IntTools; 
65         ---C++: return & 
66         ---Purpose:
67         --- Returns a reference to point classifier
68         --- for given face
69         ---
70      
71     ProjPS (me: mutable; 
72             aF: Face from TopoDS) 
73         returns ProjectPointOnSurf from GeomAPI;
74         ---C++: return &  
75         ---Purpose:
76         --- Returns a reference to point projector
77         --- for given face
78         ---
79      
80     ProjPC (me: mutable; 
81             aE: Edge from TopoDS) 
82         returns ProjectPointOnCurve from GeomAPI;
83         ---C++: return &
84         ---Purpose:
85         --- Returns a reference to point projector
86         --- for given edge
87         ---
88
89     ProjPT (me: mutable; 
90             aC: Curve from Geom) 
91         returns ProjectPointOnCurve from GeomAPI;
92         ---C++: return &
93         ---Purpose:
94         --- Returns a reference to point projector
95         --- for given curve
96         ---
97     
98     SurfaceData(me: mutable; 
99                 aF: Face from TopoDS)
100         returns SurfaceRangeLocalizeData from IntTools;
101         ---C++: return &
102         ---Purpose:
103         --- Returns a reference to surface localization data
104         --- for given face
105
106
107     SolidClassifier(me: mutable;  
108                     aSolid: Solid from TopoDS) 
109         returns SolidClassifier from BRepClass3d; 
110         ---C++: return &   
111         ---Purpose:
112         --- Returns a reference to solid classifier
113         --- for given solid
114         ---
115     --modified by NIZNHY-PKV Mon Sep 24 07:52:54 2012f 
116     Hatcher(me: mutable;  
117         aF: Face from TopoDS) 
118         returns Hatcher from Geom2dHatch;
119         ---C++: return &  
120         ---Purpose:
121         --- Returns a reference to 2D hatcher
122         --- for given face
123         --- 
124     --modified by NIZNHY-PKV Mon Sep 24 07:52:54 2012t 
125  
126  
127
128     ---         API  Block
129     ---
130     ComputeVE  (me:mutable;  
131                 aV   : Vertex from  TopoDS; 
132                 aE   : Edge   from  TopoDS; 
133                 aT   :out Real from Standard) 
134         returns Integer from Standard;
135         ---Purpose:
136         --- Computes parameter of the vertex aV on
137         --- the edge aE.
138         --- Returns zero if the distance between vertex
139         --- and edge is less than sum of tolerances,
140         --- otherwise and for following conditions returns
141         --- negative value
142         --- 1. the edge is degenerated (-1)
143         --- 2. the edge does not contain 3d curve and pcurves (-2)
144         --- 3. projection algorithm failed (-3)
145         ---
146         
147     ComputeVE  (me:mutable;  
148                 aV   : Vertex from  TopoDS; 
149                 aE   : Edge   from  TopoDS; 
150                 aT   :out Real from Standard; 
151                 bToUpdateVertex:out Boolean from Standard; 
152                 aDist          :out Real from Standard)  
153         returns Integer from Standard;
154         ---Purpose:
155         --- Computes parameter aT of the vertex aV on
156         --- the edge aE.
157         --- Returns zero if the distance between vertex
158         --- and edge is less than sum of tolerances,
159         --- otherwise and for following conditions returns
160         --- negative value
161         --- 1. the edge is degenerated (-1)
162         --- 2. the edge does not contain 3d curve and pcurves (-2)
163         --- 3. projection algorithm failed (-3)
164         ---  
165         --- Output parameters 
166         ---      
167         --- bToUpdateVertex - the flag that indicates whether the  
168         ---      vertex tolerance should be modified or not 
169         --- aDist - the value of the distance between the vertex  
170         ---      and the edge  
171     
172     ComputeVS  (me:mutable;  
173                 aV  :     Vertex from  TopoDS; 
174                 aF  :     Face   from  TopoDS; 
175                 U   : out Real from Standard; 
176                 V   : out Real from Standard) 
177         returns Integer from Standard;
178         ---Purpose:
179         --- Computes UV parameters of the vertex aV on face aF
180         --- Returns zero if the distance between vertex and face is
181         --- less than or equal the sum of tolerances and the projection 
182         --- point lays inside boundaries of the face.
183         --- For following conditions returns negative value
184         --- 1. projection algorithm failed (-1)
185         --- 2. distance is more than sum of tolerances (-2)
186         --- 3. projection point out or on the boundaries of face (-3)
187         --- 
188          
189     StatePointFace(me:mutable;    
190                    aF   :  Face   from  TopoDS;
191                    aP2D :  Pnt2d  from  gp) 
192         returns State from TopAbs; 
193         ---Purpose:
194         --- Returns the state of the point aP2D
195         --- relative to face aF
196         ---
197          
198     IsPointInFace(me:mutable;    
199                   aF   :  Face   from  TopoDS;
200                   aP2D :  Pnt2d  from  gp) 
201         returns Boolean from Standard;
202         ---Purpose:
203         --- Returns true if the point aP2D is
204         --- inside the boundaries of the face aF,
205         --- otherwise returns false
206         ---
207     
208     IsPointInOnFace(me:mutable;     
209                     aF   :  Face   from  TopoDS;
210                     aP2D :  Pnt2d  from  gp) 
211         returns Boolean from Standard;
212         ---Purpose:
213         --- Returns true if the point aP2D is
214         --- inside or on the boundaries of aF
215         ---
216          
217     IsValidPointForFace(me:mutable                            ;
218                         aP3D :  Pnt   from  gp; 
219                         aF   :  Face  from TopoDS; 
220                         aTol :  Real from Standard) 
221         returns Boolean from Standard;
222         ---Purpose:
223         --- Returns true if the distance between point aP3D
224         --- and face aF is less or equal to tolerance aTol
225         --- and projection point is inside or on the boundaries
226         --- of the face aF
227         ---
228
229     IsValidPointForFaces(me:mutable;
230                          aP3D :  Pnt   from  gp; 
231                          aF1  :  Face  from TopoDS; 
232                          aF2  :  Face  from TopoDS;
233                          aTol :  Real from Standard)   
234         returns Boolean from Standard;
235         ---Purpose:
236         --- Returns true if IsValidPointForFace returns true
237         --- for both face aF1 and aF2
238         ---
239          
240     IsValidBlockForFace (me:mutable;  
241                          aT1  :  Real  from Standard;      
242                          aT2  :  Real  from Standard;      
243                          aIC  :  Curve from IntTools; 
244                          aF   :  Face  from TopoDS; 
245                          aTol :  Real from Standard) 
246         returns Boolean from Standard;
247         ---Purpose:
248         --- Returns true if IsValidPointForFace returns true
249         --- for some 3d point that lay on the curve aIC bounded by
250         --- parameters aT1 and aT2
251         ---
252
253     IsValidBlockForFaces (me:mutable;  
254                           aT1  :  Real  from Standard;      
255                           aT2  :  Real  from Standard;      
256                           aIC  :  Curve from IntTools; 
257                           aF1  :  Face  from TopoDS; 
258                           aF2  :  Face  from TopoDS; 
259                           aTol :  Real from Standard) 
260         returns Boolean from Standard;
261         ---Purpose:
262         --- Returns true if IsValidBlockForFace returns true
263         --- for both faces aF1 and aF2
264         ---
265          
266     IsVertexOnLine(me:mutable;  
267                    aV   :  Vertex from  TopoDS;  
268                    aIC  :  Curve from IntTools;  
269                    aTolC:  Real  from Standard; 
270                    aT   :out  Real  from Standard)   
271         returns Boolean from Standard;
272         ---Purpose:
273         --- Computes parameter of the vertex aV on
274         --- the curve aIC.
275         --- Returns true if the distance between vertex and
276         --- curve is less than sum of tolerance of aV and aTolC,
277         --- otherwise or if projection algorithm failed
278         --- returns false (in this case aT isn't significant)
279         --- 
280         
281      IsVertexOnLine(me:mutable;  
282                    aV   :  Vertex from  TopoDS; 
283                    aTolV:  Real  from Standard;  
284                    aIC  :  Curve from IntTools;  
285                    aTolC:  Real  from Standard; 
286                    aT   :out  Real  from Standard)   
287         returns Boolean from Standard;
288         ---Purpose:
289         --- Computes parameter of the vertex aV on
290         --- the curve aIC.
291         --- Returns true if the distance between vertex and
292         --- curve is less than sum of tolerance of aV and aTolC,
293         --- otherwise or if projection algorithm failed
294         --- returns false (in this case aT isn't significant)
295         --- 
296
297      ProjectPointOnEdge (me:mutable;  
298                          aP   : Pnt  from  gp;       
299                          aE   : Edge from  TopoDS;                 
300                          aT   :out Real from  Standard) 
301         returns Boolean from Standard;
302         ---Purpose:
303         --- Computes parameter of the point aP on
304         --- the edge aE.
305         --- Returns false if projection algorithm failed
306         --- other wiese returns true.
307         ---
308
309 fields 
310     myFClass2dMap :  IndexedDataMapOfShapeAddress     from TopTools is protected; 
311     myProjPSMap   :  IndexedDataMapOfShapeAddress     from TopTools is protected; 
312     myProjPCMap   :  IndexedDataMapOfShapeAddress     from TopTools is protected;    
313     myProjPTMap   :  IndexedDataMapOfTransientAddress from IntTools is protected;    
314     mySClassMap   :  IndexedDataMapOfShapeAddress     from TopTools is protected;
315     myProjSDataMap:  IndexedDataMapOfShapeAddress     from TopTools is protected;
316     myHatcherMap   :  IndexedDataMapOfShapeAddress     from TopTools is protected;
317      
318 end Context;
319