0026390: IntTools_Context should provide possibility to set tolerance used by PointOn...
[occt.git] / src / IntTools / IntTools_Context.cdl
CommitLineData
4e57c75e 1-- Created by: Peter KURNEV
973c2be1 2-- Copyright (c) 1999-2014 OPEN CASCADE SAS
4e57c75e 3--
973c2be1 4-- This file is part of Open CASCADE Technology software library.
4e57c75e 5--
d5f74e42 6-- This library is free software; you can redistribute it and/or modify it under
7-- the terms of the GNU Lesser General Public License version 2.1 as published
973c2be1 8-- by the Free Software Foundation, with special exception defined in the file
9-- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
10-- distribution for complete text of the license and disclaimer of any warranty.
4e57c75e 11--
973c2be1 12-- Alternatively, this file may be used under the terms of Open CASCADE
13-- commercial license or contractual agreement.
14
1e143abb 15
16class Context from IntTools
4e57c75e 17 inherits TShared from MMgt
18
19
20---Purpose:
21 -- The intersection Context contains geometrical
22 -- and topological toolkit (classifiers, projectors, etc).
23 -- The intersection Context is for caching the tools
24 -- to increase the performance.
25
26
27uses
f47b8d2b 28
29 Box from Bnd,
4e57c75e 30 Pnt2d from gp,
31 Pnt from gp,
32 State from TopAbs,
33 Curve from Geom,
34 ProjectPointOnCurve from GeomAPI,
35 ProjectPointOnSurf from GeomAPI,
f47b8d2b 36 Shape from TopoDS,
4e57c75e 37 Vertex from TopoDS,
38 Face from TopoDS,
39 Edge from TopoDS,
40 Solid from TopoDS,
41 SolidClassifier from BRepClass3d,
42 FClass2d from IntTools,
43 Curve from IntTools,
44 BaseAllocator from BOPCol,
45 DataMapOfShapeAddress from BOPCol,
46 DataMapOfTransientAddress from BOPCol,
47 Hatcher from Geom2dHatch,
48 SurfaceRangeLocalizeData from IntTools
49
50--raises
51
52is
53 Create
1e143abb 54
55 returns Context from IntTools;
56 ---C++: alias "Standard_EXPORT virtual ~IntTools_Context();"
4e57c75e 57 Create (theAllocator: BaseAllocator from BOPCol)
1e143abb 58
59 returns Context from IntTools;
4e57c75e 60
61 FClass2d(me:mutable;
62 aF: Face from TopoDS)
63 returns FClass2d from IntTools;
64 ---C++: return &
65 ---Purpose:
66 --- Returns a reference to point classifier
67 --- for given face
68 ---
69
70 ProjPS (me:mutable;
71 aF: Face from TopoDS)
72 returns ProjectPointOnSurf from GeomAPI;
73 ---C++: return &
74 ---Purpose:
75 --- Returns a reference to point projector
76 --- for given face
77 ---
78
79 ProjPC (me:mutable;
80 aE: Edge from TopoDS)
81 returns ProjectPointOnCurve from GeomAPI;
82 ---C++: return &
83 ---Purpose:
84 --- Returns a reference to point projector
85 --- for given edge
86 ---
87
88 ProjPT (me:mutable;
89 aC: Curve from Geom)
90 returns ProjectPointOnCurve from GeomAPI;
91 ---C++: return &
92 ---Purpose:
93 --- Returns a reference to point projector
94 --- for given curve
95 ---
96
97 SurfaceData(me: mutable;
98 aF: Face from TopoDS)
99 returns SurfaceRangeLocalizeData from IntTools;
100 ---C++: return &
101 ---Purpose:
102 --- Returns a reference to surface localization data
103 --- for given face
104
105 SolidClassifier(me:mutable;
106 aSolid: Solid from TopoDS)
107 returns SolidClassifier from BRepClass3d;
108 ---C++: return &
109 ---Purpose:
110 --- Returns a reference to solid classifier
111 --- for given solid
112 ---
113
114 Hatcher(me: mutable;
115 aF: Face from TopoDS)
116 returns Hatcher from Geom2dHatch;
117 ---C++: return &
118 ---Purpose:
119 --- Returns a reference to 2D hatcher
120 --- for given face
121 ---
122
123 ComputePE (me:mutable;
124 theP : Pnt from gp;
125 theTolP: Real from Standard;
126 theE : Edge from TopoDS;
127 theT :out Real from Standard)
128 returns Integer from Standard;
129 ---Purpose:
130 --- Computes parameter of the Point theP on
131 --- the edge aE.
132 --- Returns zero if the distance between point
133 --- and edge is less than sum of tolerance value of edge and theTopP,
134 --- otherwise and for following conditions returns
135 --- negative value
136 --- 1. the edge is degenerated (-1)
137 --- 2. the edge does not contain 3d curve and pcurves (-2)
138 --- 3. projection algorithm failed (-3)
139 ---
140
141 ComputeVE (me:mutable;
142 aV : Vertex from TopoDS;
143 aE : Edge from TopoDS;
144 aT :out Real from Standard)
145 returns Integer from Standard;
146 ---Purpose:
147 --- Computes parameter of the vertex aV on
148 --- the edge aE.
149 --- Returns zero if the distance between vertex
150 --- and edge is less than sum of tolerances,
151 --- otherwise and for following conditions returns
152 --- negative value
153 --- 1. the edge is degenerated (-1)
154 --- 2. the edge does not contain 3d curve and pcurves (-2)
155 --- 3. projection algorithm failed (-3)
156 ---
4e57c75e 157
158 ComputeVF (me:mutable;
159 aV : Vertex from TopoDS;
160 aF : Face from TopoDS;
161 U : out Real from Standard;
162 V : out Real from Standard)
163 returns Integer from Standard;
164 ---Purpose:
165 --- Computes UV parameters of the vertex aV on face aF
166 --- Returns zero if the distance between vertex and face is
167 --- less than or equal the sum of tolerances and the projection
168 --- point lays inside boundaries of the face.
169 --- For following conditions returns negative value
170 --- 1. projection algorithm failed (-1)
171 --- 2. distance is more than sum of tolerances (-2)
172 --- 3. projection point out or on the boundaries of face (-3)
173 ---
174
175 StatePointFace(me:mutable;
176 aF : Face from TopoDS;
177 aP2D : Pnt2d from gp)
178 returns State from TopAbs;
179 ---Purpose:
180 --- Returns the state of the point aP2D
181 --- relative to face aF
182 ---
183
184 IsPointInFace(me:mutable;
185 aF : Face from TopoDS;
186 aP2D : Pnt2d from gp)
187 returns Boolean from Standard;
188 ---Purpose:
189 --- Returns true if the point aP2D is
190 --- inside the boundaries of the face aF,
191 --- otherwise returns false
192 ---
bd28b2af 193
194 IsPointInFace(me:mutable;
195 aP3D : Pnt from gp;
196 aF : Face from TopoDS;
197 aTol : Real from Standard)
198 returns Boolean from Standard;
199 ---Purpose:
200 --- Returns true if the point aP2D is
201 --- inside the boundaries of the face aF,
202 --- otherwise returns false
203 ---
4e57c75e 204
205 IsPointInOnFace(me:mutable;
206 aF : Face from TopoDS;
207 aP2D : Pnt2d from gp)
208 returns Boolean from Standard;
209 ---Purpose:
210 --- Returns true if the point aP2D is
211 --- inside or on the boundaries of aF
212 ---
213
214 IsValidPointForFace(me:mutable;
215 aP3D : Pnt from gp;
216 aF : Face from TopoDS;
217 aTol : Real from Standard)
218 returns Boolean from Standard;
219 ---Purpose:
220 --- Returns true if the distance between point aP3D
221 --- and face aF is less or equal to tolerance aTol
222 --- and projection point is inside or on the boundaries
223 --- of the face aF
224 ---
225
226 IsValidPointForFaces(me:mutable;
227 aP3D : Pnt from gp;
228 aF1 : Face from TopoDS;
229 aF2 : Face from TopoDS;
230 aTol : Real from Standard)
231 returns Boolean from Standard;
232 ---Purpose:
233 --- Returns true if IsValidPointForFace returns true
234 --- for both face aF1 and aF2
235 ---
236
237 IsValidBlockForFace (me:mutable;
238 aT1 : Real from Standard;
239 aT2 : Real from Standard;
240 aIC : Curve from IntTools;
241 aF : Face from TopoDS;
242 aTol : Real from Standard)
243 returns Boolean from Standard;
244 ---Purpose:
245 --- Returns true if IsValidPointForFace returns true
246 --- for some 3d point that lay on the curve aIC bounded by
247 --- parameters aT1 and aT2
248 ---
249
250 IsValidBlockForFaces (me:mutable;
251 aT1 : Real from Standard;
252 aT2 : Real from Standard;
253 aIC : Curve from IntTools;
254 aF1 : Face from TopoDS;
255 aF2 : Face from TopoDS;
256 aTol : Real from Standard)
257 returns Boolean from Standard;
258 ---Purpose:
259 --- Returns true if IsValidBlockForFace returns true
260 --- for both faces aF1 and aF2
261 ---
262
263 IsVertexOnLine(me:mutable;
264 aV : Vertex from TopoDS;
265 aIC : Curve from IntTools;
266 aTolC: Real from Standard;
267 aT :out Real from Standard)
268 returns Boolean from Standard;
269 ---Purpose:
270 --- Computes parameter of the vertex aV on
271 --- the curve aIC.
272 --- Returns true if the distance between vertex and
273 --- curve is less than sum of tolerance of aV and aTolC,
274 --- otherwise or if projection algorithm failed
275 --- returns false (in this case aT isn't significant)
276 ---
277
278 IsVertexOnLine(me:mutable;
279 aV : Vertex from TopoDS;
280 aTolV: Real from Standard;
281 aIC : Curve from IntTools;
282 aTolC: Real from Standard;
283 aT :out Real from Standard)
284 returns Boolean from Standard;
285 ---Purpose:
286 --- Computes parameter of the vertex aV on
287 --- the curve aIC.
288 --- Returns true if the distance between vertex and
289 --- curve is less than sum of tolerance of aV and aTolC,
290 --- otherwise or if projection algorithm failed
291 --- returns false (in this case aT isn't significant)
292 ---
293
294 ProjectPointOnEdge (me:mutable;
295 aP : Pnt from gp;
296 aE : Edge from TopoDS;
297 aT :out Real from Standard)
298 returns Boolean from Standard;
299 ---Purpose:
300 --- Computes parameter of the point aP on
301 --- the edge aE.
302 --- Returns false if projection algorithm failed
303 --- other wiese returns true.
304 ---
f47b8d2b 305 BndBox(me:mutable;
306 theS:Shape from TopoDS)
307 returns Box from Bnd;
308 ---C++: return &
309 --- Returns a reference to boundong box
310 --- for given shape <theS>
311 ---
312 IsInfiniteFace(me:mutable;
313 theFace:Face from TopoDS)
314 returns Boolean from Standard;
315 ---Purpose: Returns true if the solid <theFace> has
316 -- infinite bounds
b285c9fe 317
318 SetPOnSProjectionTolerance(me:mutable; theValue: Real from Standard);
319 ---Purpose: Sets tolerance to be used for projection of point on surface.
320 -- Clears map of already cached projectors in order to maintain
321 -- correct value for all projectors
322
323 clearCachedPOnSProjectors(me: mutable)
324 is private;
325 ---Purpose: Clears map of already cached projectors.
f47b8d2b 326
4e57c75e 327fields
328 myAllocator : BaseAllocator from BOPCol is protected;
329 myFClass2dMap:DataMapOfShapeAddress from BOPCol is protected;
330 myProjPSMap :DataMapOfShapeAddress from BOPCol is protected;
331 myProjPCMap :DataMapOfShapeAddress from BOPCol is protected;
332 mySClassMap :DataMapOfShapeAddress from BOPCol is protected;
333 myProjPTMap :DataMapOfTransientAddress from BOPCol is protected;
334 myHatcherMap :DataMapOfShapeAddress from BOPCol is protected;
f47b8d2b 335 myProjSDataMap:DataMapOfShapeAddress from BOPCol is protected;
336 myBndBoxDataMap:DataMapOfShapeAddress from BOPCol is protected;
4e57c75e 337 myCreateFlag :Integer from Standard is protected;
b285c9fe 338 myPOnSTolerance :Real from Standard is protected;
4e57c75e 339
340end Context;
341