0026148: BRep_Tool::IsClosed failed to judge a closed edge on Poly_Triangulation.
[occt.git] / src / BRep / BRep_Tool.cdl
1 -- Created on: 1993-07-07
2 -- Created by: Remi LEQUETTE
3 -- Copyright (c) 1993-1999 Matra Datavision
4 -- Copyright (c) 1999-2014 OPEN CASCADE SAS
5 --
6 -- This file is part of Open CASCADE Technology software library.
7 --
8 -- This library is free software; you can redistribute it and/or modify it under
9 -- the terms of the GNU Lesser General Public License version 2.1 as published
10 -- by the Free Software Foundation, with special exception defined in the file
11 -- OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 -- distribution for complete text of the license and disclaimer of any warranty.
13 --
14 -- Alternatively, this file may be used under the terms of Open CASCADE
15 -- commercial license or contractual agreement.
16
17 class Tool from BRep 
18
19         ---Purpose: Provides class methods  to  access to the geometry
20         --          of BRep shapes.
21
22 uses
23     Vertex   from TopoDS,
24     Edge     from TopoDS,
25     Face     from TopoDS,
26     Shape    from TopoDS,
27     Location from TopLoc,
28     Pnt      from gp,
29     Pnt2d    from gp,
30     Box2d    from Bnd,
31     Curve    from Geom2d,
32     Curve    from Geom,
33     Surface  from Geom,
34     Shape    from GeomAbs,
35     
36     Triangulation          from Poly,
37     Polygon3D              from Poly,
38     Polygon2D              from Poly,
39     PolygonOnTriangulation from Poly,
40     HArray1OfInteger       from TColStd,
41     HArray1OfReal          from TColStd
42
43 raises
44     NullObject from Standard,
45     NoSuchObject from Standard
46
47 is
48
49
50     -----------------------------------------------------------
51     -----------------------------------------------------------
52     --                         Shape                         -- 
53     -----------------------------------------------------------
54     -----------------------------------------------------------
55     IsClosed (myclass; S : Shape from TopoDS) returns Boolean from Standard;
56     ---Purpose: If S is Shell, returns True if it has no free boundaries (edges).
57     --          If S is Wire, returns True if it has no free ends (vertices).
58     --          (Internal and External sub-shepes are ignored in these checks)
59     --          If S is Edge, returns True if its vertices are the same.
60     --          For other shape types returns S.Closed().
61         
62     -----------------------------------------------------------
63     -----------------------------------------------------------
64     --                         Face                          --
65     -----------------------------------------------------------
66     -----------------------------------------------------------
67
68
69
70     -----------------------------------------------------------
71     --  Face surface
72     -----------------------------------------------------------
73
74
75     Surface(myclass; F : Face         from TopoDS;
76                      L : out Location from TopLoc) returns Surface from Geom 
77     
78         ---Purpose: Returns the geometric surface of the face. Returns
79         --          in <L> the location for the surface.
80         ---C++: return const &
81     raises
82         NullObject from Standard;
83     
84     Surface(myclass; F : Face from TopoDS) returns Surface from Geom 
85     
86         ---Purpose: Returns the geometric  surface of the face. It can
87         --          be a copy if there is a Location.
88         --          
89     raises
90         NullObject from Standard;
91         
92     Triangulation(myclass; F : Face         from TopoDS;
93                            L : out Location from TopLoc) returns Triangulation from  Poly
94     
95         ---Purpose: Returns  the Triangulation of  the  face. It  is a
96         --          null handle if there is no triangulation.
97         --          
98         ---C++: return const &
99     raises
100         NullObject from Standard;
101         
102         
103     
104     -----------------------------------------------------------
105     --  Face tolerance
106     -----------------------------------------------------------
107   
108     Tolerance(myclass; F : Face from TopoDS)  returns Real
109     
110         ---Purpose: Returns the tolerance of the face.
111     raises
112         NullObject from Standard;
113         
114     -----------------------------------------------------------
115     --  Face natural restriction flag
116     -----------------------------------------------------------
117     
118     NaturalRestriction(myclass; F : Face from TopoDS) returns Boolean
119     
120         ---Purpose: Returns the  NaturalRestriction  flag of the  face.
121     raises
122         NullObject from Standard;
123     
124     
125     
126     
127     -----------------------------------------------------------
128     -----------------------------------------------------------
129     --                         Edge                          -- 
130     -----------------------------------------------------------
131     -----------------------------------------------------------
132     
133     IsGeometric(myclass; E: Edge from TopoDS)
134         ---Purpose: Returns True if <E> is a 3d curve or a curve on
135         --          surface.
136     returns Boolean;    
137     
138     -----------------------------------------------------------
139     --  Edge 3d curve
140     -----------------------------------------------------------
141     
142     Curve(myclass; E : Edge from TopoDS;
143                    L : out Location from TopLoc;
144                    First, Last : out Real) 
145     returns Curve from Geom
146     
147         ---Purpose: Returns the 3D curve  of the edge.  May be  a Null
148         --          handle. Returns in <L> the location for the curve.
149         --          In <First> and <Last> the parameter range.
150         --          
151         ---C++: return const &
152     raises
153         NullObject from Standard;
154         
155
156     Curve(myclass; E : Edge from TopoDS;
157                    First, Last : out Real) 
158     returns Curve from Geom
159     
160         ---Purpose: Returns the 3D curve  of the edge. May be a Null handle.
161         --          In <First> and <Last> the parameter range.
162         --          It can be a copy if there is a Location.
163     raises
164         NullObject from Standard;
165         
166     -----------------------------------------------------------
167     --  Edge 3d polygon
168     -----------------------------------------------------------
169     
170     Polygon3D(myclass; E : Edge from TopoDS;
171                    L : out Location from TopLoc)
172     returns Polygon3D from Poly
173     
174         ---Purpose: Returns the 3D polygon of the edge. May be   a Null
175         --          handle. Returns in <L> the location for the polygon.
176         --          
177         ---C++: return const &
178     raises
179         NullObject from Standard;
180         
181
182     -----------------------------------------------------------
183     --  Edge curve on surface
184     -----------------------------------------------------------
185     
186     CurveOnSurface(myclass; E : Edge from TopoDS; 
187                             F : Face from TopoDS;
188                             First, Last : out Real) 
189     returns Curve from Geom2d
190     
191         ---Purpose: Returns the curve  associated to the  edge in  the
192         --          parametric  space of  the  face.  Returns   a NULL
193         --          handle  if this curve  does not exist.  Returns in
194         --          <First> and <Last> the parameter range.
195     raises
196         NullObject from Standard;       
197
198
199     CurveOnSurface(myclass; E : Edge     from TopoDS; 
200                             S : Surface  from Geom;
201                             L : Location from TopLoc;
202                             First, Last : out Real) 
203     returns Curve from Geom2d
204     
205         ---Purpose: Returns the  curve associated to   the edge in the
206         --          parametric  space of the   surface. Returns a NULL
207         --          handle  if this curve does  not exist.  Returns in
208         --          <First> and <Last> the parameter range.
209     raises
210         NullObject from Standard;
211     
212
213     CurveOnSurface(myclass; E :     Edge     from TopoDS;
214                             C : out Curve    from Geom2d;
215                             S : out Surface  from Geom;
216                             L : out Location from TopLoc;
217                             First, Last : out Real) 
218     
219         ---Purpose: Returns in <C>, <S>, <L> a 2d curve, a surface and
220         --          a location for the edge <E>. <C> and <S>  are null
221         --          if the  edge has no curve on  surface.  Returns in
222         --          <First> and <Last> the parameter range.
223     raises
224         NullObject from Standard;
225         
226     CurveOnSurface(myclass; E :     Edge     from TopoDS;
227                             C : out Curve    from Geom2d;
228                             S : out Surface  from Geom;
229                             L : out Location from TopLoc;
230                             First, Last : out Real;
231                             Index : Integer) 
232     
233         ---Purpose: Returns in <C>, <S>, <L> the 2d curve, the surface
234         --          and the location for the edge <E> of rank <Index>.
235         --          <C> and <S> are null if the index is out of range.
236         --          Returns in <First> and <Last> the parameter range.
237     raises
238         NullObject from Standard;
239         
240     -----------------------------------------------------------
241     --  Edge polygon on surface
242     -----------------------------------------------------------
243  
244     PolygonOnSurface(myclass; E : Edge     from TopoDS; 
245                               F : Face     from TopoDS)
246     returns Polygon2D from Poly
247     
248         ---Purpose: Returns the polygon associated to the  edge in  the
249         --          parametric  space of  the  face.  Returns   a NULL
250         --          handle  if this polygon  does not exist.
251     raises
252         NullObject from Standard;       
253         
254     PolygonOnSurface(myclass; E : Edge     from TopoDS; 
255                               S : Surface  from Geom;
256                               L : Location from TopLoc)
257     returns Polygon2D from Poly
258     
259         ---Purpose: Returns the polygon associated to the  edge in  the
260         --          parametric  space of  the surface. Returns   a NULL
261         --          handle  if this polygon  does not exist.
262     raises
263         NullObject from Standard;       
264         
265     
266     PolygonOnSurface(myclass; E :     Edge      from TopoDS;
267                               C : out Polygon2D from Poly;
268                               S : out Surface   from Geom;
269                               L : out Location  from TopLoc)
270     
271         ---Purpose: Returns in <C>, <S>, <L> a 2d curve, a surface and
272         --          a location for the edge <E>. <C> and <S>  are null
273         --          if the  edge has no polygon on  surface.
274     raises
275         NullObject from Standard;
276         
277     PolygonOnSurface(myclass; E :     Edge      from TopoDS;
278                               C : out Polygon2D from Poly;
279                               S : out Surface   from Geom;
280                               L : out Location  from TopLoc;
281                               Index : Integer) 
282     
283         ---Purpose: Returns in <C>, <S>, <L> the 2d curve, the surface
284         --          and the location for the edge <E> of rank <Index>.
285         --          <C> and <S> are null if the index is out of range.
286     raises
287         NullObject from Standard;
288         
289         
290         
291     -----------------------------------------------------------
292     --  Edge polygon on triangulation
293     -----------------------------------------------------------
294  
295     PolygonOnTriangulation(myclass; E : Edge          from TopoDS; 
296                                     T : Triangulation from Poly;
297                                     L : Location      from TopLoc)
298         ---C++: return const &
299     returns PolygonOnTriangulation from Poly;
300         --      
301         ---Purpose: Returns the polygon associated to the  edge in  the
302         --          parametric  space of  the  face.  Returns   a NULL
303         --          handle  if this polygon  does not exist.
304         
305     
306     PolygonOnTriangulation(myclass; E :     Edge                   from TopoDS;
307                                     P : out PolygonOnTriangulation from Poly;
308                                     T : out Triangulation          from Poly;
309                                     L : out Location               from TopLoc)
310     
311         ---Purpose: Returns in <P>, <T>, <L> a polygon on triangulation, a 
312         --          triangulation and a location for the edge <E>. 
313         --          <P>  and  <T>  are null  if  the  edge has no 
314         --          polygon on  triangulation.
315     raises
316         NullObject from Standard;
317         
318     PolygonOnTriangulation(myclass; E :     Edge                   from TopoDS;
319                                     P : out PolygonOnTriangulation from Poly;
320                                     T : out Triangulation          from Poly;
321                                     L : out Location               from TopLoc;
322                                     Index : Integer) 
323         ---Purpose: Returns   in   <P>,  <T>,    <L> a     polygon  on
324         --          triangulation,   a triangulation  and a  location for
325         --          the edge <E> for the range index.  <C> and <S> are
326         --          null if the edge has no polygon on triangulation.
327     
328     raises
329         NullObject from Standard;
330         
331         
332     -----------------------------------------------------------
333     --  Edge closed on surface
334     -----------------------------------------------------------
335     
336     IsClosed(myclass; E : Edge from TopoDS; 
337                       F : Face from TopoDS)
338     returns Boolean
339     
340         ---Purpose: Returns  True  if  <E>  has  two  PCurves  in  the
341         --          parametric space of <F>. i.e.  <F>  is on a closed
342         --          surface and <E> is on the closing curve.
343         --          
344     raises
345         NullObject from Standard;       
346     
347
348     -----------------------------------------------------------
349     --  Edge closed on surface
350     -----------------------------------------------------------
351     
352     IsClosed(myclass; E : Edge     from TopoDS; 
353                       S : Surface  from Geom;
354                       L : Location from TopLoc)
355     returns Boolean
356     
357         ---Purpose: Returns  True  if  <E>  has  two  PCurves  in  the
358         --          parametric space  of <S>.  i.e.   <S>  is a closed
359         --          surface and <E> is on the closing curve.
360         --          
361     raises
362         NullObject from Standard;
363     
364     -----------------------------------------------------------
365     --  Edge closed on triangulation
366     -----------------------------------------------------------
367     
368     IsClosed(myclass; E : Edge          from TopoDS; 
369                       T : Triangulation from Poly;
370                       L : Location from TopLoc)
371     returns Boolean
372     
373         ---Purpose: Returns  True  if <E> has two arrays of indices in
374         --          the triangulation <T>.
375     raises
376         NullObject from Standard;
377     
378     -----------------------------------------------------------
379     --  Edge tolerance
380     -----------------------------------------------------------
381
382     Tolerance(myclass; E : Edge from TopoDS) returns Real
383     
384         ---Purpose: Returns the tolerance for <E>.
385     raises
386         NullObject from Standard;
387         
388     -----------------------------------------------------------
389     --  Edge flags
390     -----------------------------------------------------------
391     
392     SameParameter(myclass; E : Edge from TopoDS) returns Boolean
393     
394         ---Purpose: Returns the SameParameter flag for the edge.
395     raises
396         NullObject from Standard;
397         
398     SameRange(myclass; E : Edge from TopoDS) returns Boolean
399     
400         ---Purpose: Returns the SameRange flag for the edge.
401     raises
402         NullObject from Standard;
403         
404     Degenerated(myclass; E : Edge from TopoDS)
405     returns Boolean 
406     
407         ---Purpose: Returns True  if the edge is degenerated.
408     raises
409         NullObject from Standard;
410     
411     -------------------------------------------------------
412     -- Edge parameter range
413     -------------------------------------------------------
414     
415     Range(myclass; E : Edge from TopoDS;
416                    First, Last : out Real)
417         ---Purpose: Gets the range of the 3d curve.
418     raises 
419         NullObject  from Standard; -- If <E> is Null
420  
421     
422     Range(myclass; E : Edge from TopoDS;
423                    S : Surface from Geom;
424                    L : Location from TopLoc;
425                    First, Last : out Real)
426         ---Purpose: Gets the range  of the edge  on the pcurve on  the
427         --          surface.
428     raises 
429         NullObject  from Standard; -- If <E> is Null
430  
431     
432     Range(myclass; E : Edge from TopoDS;
433                    F : Face from TopoDS;
434                    First, Last : out Real)
435         ---Purpose: Gets the range of the edge on the pcurve on the face.
436     raises 
437         NullObject  from Standard; -- If <E> is Null
438
439
440     -------------------------------------------------------
441     -- Edge UV points
442     -- 
443     -- The  data  structures records a   location in UV   for  the two
444     -- extremities of an edge.
445     --  
446     --  By default these location are computed from the PCurve.
447     --  
448     --  They can be updated to ensure their identity on connected edges.
449     --    (See the package BRepTools)
450     -- 
451     -------------------------------------------------------
452     
453     UVPoints(myclass; E : Edge from TopoDS;
454                       S : Surface from Geom;
455                       L : Location from TopLoc;
456                       PFirst, PLast : out Pnt2d from gp)
457         ---Purpose: Gets the UV locations of the extremities of the edge.
458     raises 
459         NullObject  from Standard; -- If <E> is Null
460  
461     
462     UVPoints(myclass; E : Edge from TopoDS;
463                       F : Face from TopoDS;
464                       PFirst, PLast : out Pnt2d from gp)
465         ---Purpose: Gets the UV locations of the extremities of the edge.
466     raises 
467         NullObject  from Standard; -- If <E> is Null
468
469     SetUVPoints(myclass; E : Edge from TopoDS;
470                          S : Surface from Geom;
471                          L : Location from TopLoc;
472                          PFirst, PLast : Pnt2d from gp)
473         ---Purpose: Sets the UV locations of the extremities of the edge.
474     raises 
475         NullObject  from Standard; -- If <E> is Null
476  
477     
478     SetUVPoints(myclass; E : Edge from TopoDS;
479                          F : Face from TopoDS;
480                          PFirst, PLast : Pnt2d from gp)
481         ---Purpose: Sets the UV locations of the extremities of the edge.
482     raises 
483         NullObject  from Standard; -- If <E> is Null
484
485     -----------------------------------------------------------
486     --  Edge continuity
487     -----------------------------------------------------------
488  
489    HasContinuity(myclass; E      : Edge from TopoDS; 
490                           F1, F2 : Face from TopoDS) 
491    returns Boolean
492     
493         ---Purpose: Returns True if the edge is on the surfaces of the
494         --          two faces.
495     raises
496         NullObject from Standard; -- If the edge or the faces are null.
497
498
499     Continuity(myclass; E      : Edge from TopoDS; 
500                         F1, F2 : Face from TopoDS)  
501     returns Shape from GeomAbs
502     
503         ---Purpose: Returns the continuity.
504     raises
505         NullObject from Standard; -- If the edge or the faces are null.
506     
507    HasContinuity(myclass; E      : Edge     from TopoDS; 
508                           S1, S2 : Surface  from Geom;
509                           L1, L2 : Location from TopLoc)
510    returns Boolean
511     
512         ---Purpose: Returns True if the edge is on the surfaces.
513     raises
514         NullObject from Standard; -- If the edge or the surfaces are null.
515
516
517     Continuity(myclass; E      : Edge     from TopoDS;
518                         S1, S2 : Surface  from Geom;
519                         L1, L2 : Location from TopLoc)
520     returns Shape from GeomAbs
521     
522         ---Purpose: Returns the continuity.
523     raises
524         NullObject from Standard; -- If the edge or the faces are null.
525
526    HasContinuity(myclass; E      : Edge from TopoDS)
527    returns Boolean
528     
529         ---Purpose: Returns True if the edge has regularity on some
530         --          two surfaces
531     raises
532         NullObject from Standard; -- If the edge is null.
533     
534     -----------------------------------------------------------
535     -----------------------------------------------------------
536     --                         Vertex                        -- 
537     -----------------------------------------------------------
538     -----------------------------------------------------------
539     
540     
541         
542     -----------------------------------------------------------
543     --  Vertex point
544     -----------------------------------------------------------
545
546     Pnt(myclass; V : Vertex from TopoDS) returns Pnt from gp
547     
548         ---Purpose: Returns the 3d point.
549     raises
550         NullObject from Standard; -- if <V> is Null or has no geometry.
551
552     -----------------------------------------------------------
553     --  Vertex tolerance
554     -----------------------------------------------------------
555
556     Tolerance(myclass; V : Vertex from TopoDS) returns Real
557     
558         ---Purpose: Returns the tolerance.
559     raises
560         NullObject from Standard; -- if <V> is Null or has no geometry.
561
562     -----------------------------------------------------------
563     --  Vertex parameter on edge
564     -----------------------------------------------------------
565     
566     Parameter(myclass; V : Vertex from TopoDS; 
567                        E : Edge from TopoDS)
568     returns Real
569     
570         ---Purpose: Returns the parameter of <V> on <E>.
571     raises
572         NullObject from Standard;
573         
574    
575     
576     Parameter(myclass; V : Vertex from TopoDS;
577                        E : Edge from TopoDS; 
578                        F : Face from TopoDS) 
579     returns Real
580     
581         ---Purpose: Returns the  parameters  of   the  vertex   on the
582         --          pcurve of the edge on the face.
583     raises
584         NullObject from Standard;
585
586
587     
588     Parameter(myclass; V : Vertex from TopoDS;
589                        E : Edge from TopoDS; 
590                        S : Surface from Geom;
591                        L : Location from TopLoc)
592     returns Real
593     
594         ---Purpose: Returns the  parameters  of   the  vertex   on the
595         --          pcurve of the edge on the surface.
596     raises
597         NullObject from Standard;
598     
599
600     Parameters(myclass; V : Vertex from TopoDS;
601                         F : Face from TopoDS) 
602     returns Pnt2d from gp
603     
604         ---Purpose: Returns the parameters of the vertex on the face.
605     raises
606         NullObject from Standard;
607
608 end Tool;
609