7fd59977 |
1 | -- File: Builder.cdl |
2 | -- Created: Mon Jul 1 10:04:42 1991 |
3 | -- Author: Remi LEQUETTE |
4 | ---Copyright: Matra Datavision 1991, 1992 |
5 | |
6 | |
7 | class Builder from BRep inherits Builder from TopoDS |
8 | |
9 | ---Purpose: A framework providing advanced tolerance control. |
10 | -- If tolerance control is required, you are advised to: |
11 | -- 1. build a default precision for topology, using the |
12 | -- classes provided in the BRepAPI package |
13 | -- 2. update the tolerance of the resulting shape. |
14 | -- Note that only vertices, edges and faces have |
15 | -- meaningful tolerance control. The tolerance value |
16 | -- must always comply with the condition that face |
17 | -- tolerances are more restrictive than edge tolerances |
18 | -- which are more restrictive than vertex tolerances. In |
19 | -- other words: Tol(Vertex) >= Tol(Edge) >= Tol(Face). |
20 | -- Other rules in setting tolerance include: |
21 | -- - you can open up tolerance but should never restrict it |
22 | -- - an edge cannot be included within the fusion of the |
23 | -- tolerance spheres of two vertices |
24 | |
25 | uses |
26 | Location from TopLoc, |
27 | |
28 | Shape from TopoDS, |
29 | |
30 | Vertex from TopoDS, |
31 | Edge from TopoDS, |
32 | Face from TopoDS, |
33 | |
34 | Shape from GeomAbs, |
35 | Surface from Geom, |
36 | Curve from Geom, |
37 | |
38 | Curve from Geom2d, |
39 | |
40 | Triangulation from Poly, |
41 | Polygon3D from Poly, |
42 | Polygon2D from Poly, |
43 | PolygonOnTriangulation from Poly, |
44 | |
45 | HArray1OfInteger from TColStd, |
46 | HArray1OfReal from TColStd, |
47 | |
48 | Pnt from gp, |
49 | Pnt2d from gp |
50 | |
51 | raises |
52 | NullObject from Standard, |
53 | DomainError from Standard |
54 | |
55 | is |
56 | |
57 | ----------------------------------------------------------- |
58 | ----------------------------------------------------------- |
59 | -- Face -- |
60 | ----------------------------------------------------------- |
61 | ----------------------------------------------------------- |
62 | |
63 | |
64 | |
65 | ------------------------------------------------------- |
66 | -- Construction |
67 | ------------------------------------------------------- |
68 | |
69 | |
70 | MakeFace(me; F : out Face from TopoDS); |
71 | ---C++: inline |
72 | |
73 | ---Purpose: Makes an undefined Face. |
74 | |
75 | MakeFace(me; F : out Face from TopoDS; |
76 | S : Surface from Geom; |
77 | Tol : Real) |
78 | |
79 | ---Purpose: Makes a Face with a surface. |
80 | raises |
81 | NullObject from Standard; -- If <S> is null. |
82 | |
83 | |
84 | MakeFace(me; F : out Face from TopoDS; |
85 | S : Surface from Geom; |
86 | L : Location from TopLoc; |
87 | Tol : Real) |
88 | |
89 | ---Purpose: Makes a Face with a surface and a location. |
90 | raises |
91 | NullObject from Standard; -- If <S> is null. |
92 | |
93 | MakeFace(me; F : out Face from TopoDS; |
94 | T : Triangulation from Poly) |
95 | |
96 | ---Purpose: Makes a Face with a triangulation. The triangulation |
97 | -- is in the same reference system than the TFace. |
98 | -- |
99 | raises |
100 | NullObject from Standard; -- If <S> is null. |
101 | |
102 | |
103 | UpdateFace(me; F : Face from TopoDS; |
104 | S : Surface from Geom; |
105 | L : Location from TopLoc; |
106 | Tol : Real) |
107 | |
108 | ---Purpose: Updates the face F using the tolerance value Tol, |
109 | -- surface S and location Location. |
110 | raises |
111 | NullObject from Standard; -- If <S> is null. |
112 | |
113 | UpdateFace(me; F : Face from TopoDS; |
114 | T : Triangulation from Poly) |
115 | ---Purpose: Changes a face triangulation. |
116 | -- |
117 | -- A null Triangulation removes the triangulation. |
118 | -- |
119 | |
120 | raises |
121 | NullObject from Standard; -- If <S> is null. |
122 | |
123 | |
124 | UpdateFace(me; F : Face from TopoDS; |
125 | Tol : Real); |
126 | ---Purpose: Updates the face Tolerance. |
127 | |
128 | ------------------------------------------------------- |
129 | -- Face flags |
130 | ------------------------------------------------------- |
131 | |
132 | |
133 | NaturalRestriction(me; F : Face from TopoDS; |
134 | N : Boolean) |
135 | ---Purpose: Sets the NaturalRestriction flag of the face. |
136 | raises |
137 | NullObject from Standard; -- If <F> is null. |
138 | |
139 | |
140 | |
141 | ----------------------------------------------------------- |
142 | ----------------------------------------------------------- |
143 | -- Edge -- |
144 | ----------------------------------------------------------- |
145 | ----------------------------------------------------------- |
146 | |
147 | |
148 | ------------------------------------------------------- |
149 | -- Edge construction |
150 | ------------------------------------------------------- |
151 | |
152 | MakeEdge(me; E : out Edge from TopoDS); |
153 | |
154 | ---Purpose: Makes an undefined Edge (no geometry). |
155 | |
156 | MakeEdge(me; E : out Edge from TopoDS; |
157 | C : Curve from Geom; |
158 | Tol : Real); |
159 | ---C++: inline |
160 | |
161 | ---Purpose: Makes an Edge with a curve. |
162 | |
163 | MakeEdge(me; E : out Edge from TopoDS; |
164 | C : Curve from Geom; |
165 | L : Location from TopLoc; |
166 | Tol : Real); |
167 | ---C++: inline |
168 | |
169 | ---Purpose: Makes an Edge with a curve and a location. |
170 | |
171 | MakeEdge(me; E : out Edge from TopoDS; |
172 | P : Polygon3D from Poly); |
173 | ---C++: inline |
174 | |
175 | ---Purpose: Makes an Edge with a polygon 3d. |
176 | |
177 | MakeEdge(me; E : out Edge from TopoDS; |
178 | N : PolygonOnTriangulation from Poly; |
179 | T : Triangulation from Poly); |
180 | ---C++: inline |
181 | |
182 | ---Purpose: makes an Edge polygon on Triangulation. |
183 | |
184 | MakeEdge(me; E : out Edge from TopoDS; |
185 | N : PolygonOnTriangulation from Poly; |
186 | T : Triangulation from Poly; |
187 | L : Location from TopLoc); |
188 | ---C++: inline |
189 | |
190 | ---Purpose: makes an Edge polygon on Triangulation. |
191 | |
192 | ------------------------------------------------------- |
193 | -- Edge update |
194 | -- |
195 | ------------------------------------------------------- |
196 | |
197 | UpdateEdge(me; E : Edge from TopoDS; |
198 | C : Curve from Geom; |
199 | Tol : Real); |
200 | ---C++: inline |
201 | |
202 | ---Purpose: Sets a 3D curve for the edge. |
203 | -- If <C> is a null handle, remove any existing 3d curve. |
204 | |
205 | UpdateEdge(me; E : Edge from TopoDS; |
206 | C : Curve from Geom; |
207 | L : Location from TopLoc; |
208 | Tol : Real); |
209 | |
210 | ---Purpose: Sets a 3D curve for the edge. |
211 | -- If <C> is a null handle, remove any existing 3d curve. |
212 | |
213 | UpdateEdge(me; E : Edge from TopoDS; |
214 | C : Curve from Geom2d; |
215 | F : Face from TopoDS; |
216 | Tol : Real); |
217 | ---C++: inline |
218 | |
219 | ---Purpose: Sets a pcurve for the edge on the face. |
220 | -- If <C> is a null handle, remove any existing pcurve. |
221 | |
222 | UpdateEdge(me; E : Edge from TopoDS; |
223 | C1,C2 : Curve from Geom2d; |
224 | F : Face from TopoDS; |
225 | Tol : Real); |
226 | ---C++: inline |
227 | |
228 | ---Purpose: Sets pcurves for the edge on the closed face. If |
229 | -- <C1> or <C2> is a null handle, remove any existing |
230 | -- pcurve. |
231 | |
232 | UpdateEdge(me; E : Edge from TopoDS; |
233 | C : Curve from Geom2d; |
234 | S : Surface from Geom; |
235 | L : Location from TopLoc; |
236 | Tol : Real); |
237 | |
238 | ---Purpose: Sets a pcurve for the edge on the face. |
239 | -- If <C> is a null handle, remove any existing pcurve. |
240 | |
241 | UpdateEdge(me; E : Edge from TopoDS; |
242 | C : Curve from Geom2d; |
243 | S : Surface from Geom; |
244 | L : Location from TopLoc; |
245 | Tol : Real; |
246 | Pf,Pl : Pnt2d from gp); |
247 | |
248 | ---Purpose: Sets a pcurve for the edge on the face. |
249 | -- If <C> is a null handle, remove any existing pcurve. |
250 | -- Sets UV bounds for curve repsentation |
251 | |
252 | UpdateEdge(me; E : Edge from TopoDS; |
253 | C1,C2 : Curve from Geom2d; |
254 | S : Surface from Geom; |
255 | L : Location from TopLoc; |
256 | Tol : Real); |
257 | |
258 | ---Purpose: Sets pcurves for the edge on the closed surface. |
259 | -- <C1> or <C2> is a null handle, remove any existing |
260 | -- pcurve. |
261 | |
262 | UpdateEdge(me; E : Edge from TopoDS; |
263 | C1,C2 : Curve from Geom2d; |
264 | S : Surface from Geom; |
265 | L : Location from TopLoc; |
266 | Tol : Real; |
267 | Pf,Pl : Pnt2d from gp); |
268 | |
269 | ---Purpose: Sets pcurves for the edge on the closed surface. |
270 | -- <C1> or <C2> is a null handle, remove any existing |
271 | -- pcurve. |
272 | -- Sets UV bounds for curve repsentation |
273 | |
274 | UpdateEdge(me; E : Edge from TopoDS; |
275 | P : Polygon3D from Poly); |
276 | ---C++: inline |
277 | |
278 | ---Purpose: Changes an Edge 3D polygon. |
279 | -- A null Polygon removes the 3d Polygon. |
280 | |
281 | UpdateEdge(me; E : Edge from TopoDS; |
282 | P : Polygon3D from Poly; |
283 | L : Location from TopLoc); |
284 | |
285 | ---Purpose: Changes an Edge 3D polygon. |
286 | -- A null Polygon removes the 3d Polygon. |
287 | |
288 | UpdateEdge(me; E : Edge from TopoDS; |
289 | N : PolygonOnTriangulation from Poly; |
290 | T : Triangulation from Poly); |
291 | ---C++: inline |
292 | |
293 | ---Purpose: Changes an Edge polygon on Triangulation. |
294 | |
295 | UpdateEdge(me; E : Edge from TopoDS; |
296 | N : PolygonOnTriangulation from Poly; |
297 | T : Triangulation from Poly; |
298 | L : Location from TopLoc); |
299 | |
300 | ---Purpose: Changes an Edge polygon on Triangulation. |
301 | |
302 | UpdateEdge(me; E : Edge from TopoDS; |
303 | N1, N2 : PolygonOnTriangulation from Poly; |
304 | T : Triangulation from Poly); |
305 | ---C++: inline |
306 | |
307 | ---Purpose: Changes an Edge polygon on Triangulation. |
308 | |
309 | UpdateEdge(me; E : Edge from TopoDS; |
310 | N1, N2 : PolygonOnTriangulation from Poly; |
311 | T : Triangulation from Poly; |
312 | L : Location from TopLoc); |
313 | |
314 | ---Purpose: Changes an Edge polygon on Triangulation. |
315 | |
316 | UpdateEdge(me; E: Edge from TopoDS; |
317 | P: Polygon2D from Poly; |
318 | S: Face from TopoDS) |
319 | |
320 | ---Purpose: Changes Edge polygon on a face. |
321 | -- |
322 | -- |
323 | raises |
324 | NullObject from Standard; -- If <E> is null. |
325 | |
326 | UpdateEdge(me; E: Edge from TopoDS; |
327 | P: Polygon2D from Poly; |
328 | S: Surface from Geom; |
329 | T: Location from TopLoc) |
330 | |
331 | ---Purpose: Changes Edge polygon on a face. |
332 | -- |
333 | -- |
334 | raises |
335 | NullObject from Standard; -- If <E> is null. |
336 | |
337 | UpdateEdge(me; E : Edge from TopoDS; |
338 | P1, P2: Polygon2D from Poly; |
339 | S : Face from TopoDS) |
340 | |
341 | ---Purpose: Changes Edge polygons on a face. |
342 | -- |
343 | -- A null Polygon removes the 2d Polygon. |
344 | -- |
345 | raises |
346 | NullObject from Standard; -- If <E> is null. |
347 | |
348 | UpdateEdge(me; E : Edge from TopoDS; |
349 | P1, P2: Polygon2D from Poly; |
350 | S : Surface from Geom; |
351 | L : Location from TopLoc) |
352 | |
353 | ---Purpose: Changes Edge polygons on a face. |
354 | -- |
355 | -- A null Polygon removes the 2d Polygon. |
356 | -- |
357 | raises |
358 | NullObject from Standard; -- If <E> is null. |
359 | |
360 | UpdateEdge(me; E : Edge from TopoDS; |
361 | Tol : Real); |
362 | |
363 | ---Purpose: Updates the edge tolerance. |
364 | |
365 | ------------------------------------------------------- |
366 | -- Edge continuity |
367 | ------------------------------------------------------- |
368 | |
369 | |
370 | Continuity(me; E : Edge from TopoDS; |
371 | F1,F2 : Face from TopoDS; |
372 | C : Shape from GeomAbs) |
373 | ---Purpose: Sets the geometric continuity on the edge. |
374 | raises |
375 | NullObject from Standard; -- If <E>, <F1> or <F2> is Null |
376 | |
377 | |
378 | Continuity(me; E : Edge from TopoDS; |
379 | S1,S2 : Surface from Geom; |
380 | L1,L2 : Location from TopLoc; |
381 | C : Shape from GeomAbs) |
382 | ---Purpose: Sets the geometric continuity on the edge. |
383 | raises |
384 | NullObject from Standard; -- If <E>, <F1> or <F2> is Null |
385 | |
386 | |
387 | ------------------------------------------------------- |
388 | -- Edge flags |
389 | ------------------------------------------------------- |
390 | |
391 | |
392 | SameParameter(me; E : Edge from TopoDS; |
393 | S : Boolean) |
394 | ---Purpose: Sets the same parameter flag for the edge <E>. |
395 | raises |
396 | NullObject from Standard; -- If <E> is Null |
397 | |
398 | |
399 | SameRange(me; E : Edge from TopoDS; |
400 | S : Boolean) |
401 | ---Purpose: Sets the same range flag for the edge <E>. |
402 | raises |
403 | NullObject from Standard; -- If <E> is Null |
404 | |
405 | |
406 | Degenerated(me; E : Edge from TopoDS; |
407 | D : Boolean) |
408 | ---Purpose: Sets the degenerated flag for the edge <E>. |
409 | raises |
410 | NullObject from Standard; -- If <E> is Null |
411 | |
412 | ------------------------------------------------------- |
413 | -- Edge parameter range |
414 | ------------------------------------------------------- |
415 | |
416 | Range(me; E : Edge from TopoDS; |
417 | First, Last : Real; |
418 | Only3d : Boolean from Standard = Standard_False) |
419 | ---Purpose: Sets the range of the 3d curve if Only3d=TRUE, |
420 | -- otherwise sets the range to all the representations |
421 | raises |
422 | NullObject from Standard; -- If <E> is Null |
423 | |
424 | |
425 | Range(me; E : Edge from TopoDS; |
426 | S : Surface from Geom; |
427 | L : Location from TopLoc; |
428 | First, Last : Real) |
429 | ---Purpose: Sets the range of the edge on the pcurve on the |
430 | -- surface. |
431 | raises |
432 | NullObject from Standard; -- If <E> is Null |
433 | |
434 | |
435 | Range(me; E : Edge from TopoDS; |
436 | F : Face from TopoDS; |
437 | First, Last : Real); |
438 | ---C++: inline |
439 | ---Purpose: Sets the range of the edge on the pcurve on the face. |
440 | |
441 | |
442 | ------------------------------------------------------- |
443 | -- Edge transfer of geometry |
444 | ------------------------------------------------------- |
445 | |
446 | Transfert(me; Ein, Eout : Edge from TopoDS) |
447 | ---Purpose: Add to <Eout> the geometric representations of |
448 | -- <Ein>. |
449 | raises |
450 | NullObject from Standard; -- If <Ein,Eout> is Null |
451 | |
452 | |
453 | ----------------------------------------------------------- |
454 | ----------------------------------------------------------- |
455 | -- Vertex -- |
456 | ----------------------------------------------------------- |
457 | ----------------------------------------------------------- |
458 | |
459 | |
460 | ------------------------------------------------------- |
461 | -- Vertex construction from geometry |
462 | ------------------------------------------------------- |
463 | |
464 | MakeVertex(me; V : out Vertex from TopoDS); |
465 | ---C++: inline |
466 | |
467 | ---Purpose: Makes an udefined vertex without geometry. |
468 | |
469 | |
470 | MakeVertex(me; V : out Vertex from TopoDS; |
471 | P : Pnt from gp; |
472 | Tol : Real); |
473 | ---C++: inline |
474 | |
475 | ---Purpose: Makes a vertex from a 3D point. |
476 | |
477 | |
478 | ------------------------------------------------------- |
479 | -- Vertex update |
480 | ------------------------------------------------------- |
481 | |
482 | UpdateVertex(me; V : Vertex from TopoDS; |
483 | P : Pnt from gp; |
484 | Tol : Real) |
485 | |
486 | ---Purpose: Sets a 3D point on the vertex. |
487 | raises |
488 | NullObject from Standard; -- If <V> is Null |
489 | |
490 | |
491 | |
492 | UpdateVertex(me; V : Vertex from TopoDS; |
493 | P : Real; |
494 | E : Edge from TopoDS; |
495 | Tol : Real) |
496 | |
497 | ---Purpose: Sets the parameter for the vertex on the edge |
498 | -- curves. |
499 | raises |
500 | NullObject from Standard, -- If <V> or <E> is Null |
501 | DomainError from Standard; -- If <V> is not the first or last vertex. |
502 | |
503 | |
504 | |
505 | UpdateVertex(me; V : Vertex from TopoDS; |
506 | P : Real; |
507 | E : Edge from TopoDS; |
508 | F : Face from TopoDS; |
509 | Tol : Real); |
510 | ---C++: inline |
511 | |
512 | ---Purpose: Sets the parameter for the vertex on the edge |
513 | -- pcurve on the face. |
514 | |
515 | |
516 | UpdateVertex(me; V : Vertex from TopoDS; |
517 | P : Real; |
518 | E : Edge from TopoDS; |
519 | S : Surface from Geom; |
520 | L : Location from TopLoc; |
521 | Tol : Real) |
522 | |
523 | ---Purpose: Sets the parameter for the vertex on the edge |
524 | -- pcurve on the surface. |
525 | raises |
526 | DomainError from Standard; -- If <V> is not the first or last vertex. |
527 | |
528 | |
529 | UpdateVertex(me; Ve : Vertex from TopoDS; |
530 | U,V : Real; |
531 | F : Face from TopoDS; |
532 | Tol : Real) |
533 | |
534 | ---Purpose: Sets the parameters for the vertex on the face. |
535 | raises |
536 | NullObject from Standard, -- If <Ve> or <F> is Null |
537 | DomainError from Standard; -- If <Ve> is not the first or last vertex. |
538 | |
539 | UpdateVertex(me; V : Vertex from TopoDS; |
540 | Tol : Real); |
541 | ---Purpose: Updates the vertex tolerance. |
542 | |
543 | ------------------------------------------------------- |
544 | -- Vertex transfer of parameters |
545 | ------------------------------------------------------- |
546 | |
547 | Transfert(me; Ein, Eout : Edge from TopoDS; |
548 | Vin, Vout : Vertex from TopoDS) |
549 | ---Purpose: Transfert the parameters of Vin on Ein as the |
550 | -- parameter of Vout on Eout. |
551 | raises |
552 | NullObject from Standard; |
553 | |
554 | end Builder; |