0024428: Implementation of LGPL license
[occt.git] / src / BRepAdaptor / BRepAdaptor_Surface.cdl
1 -- Created on: 1993-02-22
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
9 -- under the terms of the GNU Lesser General Public 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 Surface from BRepAdaptor inherits Surface from Adaptor3d
18
19         ---Purpose: The Surface from BRepAdaptor allows to  use a Face
20         --          of the BRep topology look like a 3D surface.
21         --          
22         --          It  has  the methods  of  the class   Surface from
23         --          Adaptor3d.
24         --          
25         --          It is created or initialized with a Face. It takes
26         --          into account the local coordinates system.
27         --          
28         --          The  u,v parameter range is   the minmax value for
29         --          the  restriction,  unless  the flag restriction is
30         --          set to false.
31
32 uses
33     Face            from TopoDS,
34     SurfaceType     from GeomAbs,
35     HSurface        from Adaptor3d,
36     HCurve          from Adaptor3d,
37     Surface         from GeomAdaptor,
38     Shape           from GeomAbs,
39     BezierSurface   from Geom,
40     BSplineSurface  from Geom,
41     Trsf            from gp,
42     Pnt             from gp,
43     Vec             from gp,
44     Dir             from gp,
45     Pln             from gp,
46     Cylinder        from gp,
47     Sphere          from gp,
48     Torus           from gp,
49     Cone            from gp,
50     Ax1             from gp,
51     Array1OfReal    from TColStd
52
53
54 raises 
55
56     OutOfRange   from Standard,
57     DomainError  from Standard,
58     NoSuchObject from Standard
59
60 is
61
62     Create returns Surface from BRepAdaptor;
63         ---Purpose: Creates an undefined surface with no face loaded.
64         
65     Create(F : Face from TopoDS;
66            R : Boolean = Standard_True) 
67     returns Surface from BRepAdaptor;
68         ---Purpose: Creates a surface to  access the geometry  of <F>.
69         --          If  <Restriction> is  true  the parameter range is
70         --          the  parameter  range  in   the  UV space  of  the
71         --          restriction. 
72         
73     Initialize(me : in out; F : Face from TopoDS; 
74                             Restriction : Boolean = Standard_True)
75         ---Purpose: Sets the surface to the geometry of <F>.
76     is static;
77     
78     Surface(me) returns Surface from GeomAdaptor
79         ---Purpose: Returns the surface.
80         --          
81         ---C++: return const &
82     is static;
83     
84     ChangeSurface(me : in out) returns Surface from GeomAdaptor
85         ---Purpose: Returns the surface.
86         --          
87         ---C++: return &
88     is static;
89     
90     Trsf(me) returns Trsf from gp
91         ---Purpose: Returns the surface coordinate system.
92         --          
93         ---C++: return const &
94     is static;
95     
96     Face(me) returns Face from TopoDS
97         ---Purpose: Returns the face.
98         --          
99         ---C++: return const &
100     is static;
101     
102     Tolerance(me) returns Real
103         ---Purpose: Returns the face tolerance.
104         --          
105     is static;
106
107     --
108     --  Methods of Surface from GeomAdaptor
109     --              
110     
111     FirstUParameter(me) returns Real
112          ---C++:inline
113     is redefined static;
114
115     LastUParameter(me) returns Real
116          ---C++:inline
117     is redefined static;
118     
119     FirstVParameter(me) returns Real
120          ---C++:inline
121     is redefined static;
122
123     LastVParameter(me) returns Real
124          ---C++:inline
125     is redefined static;
126     
127     UContinuity(me) returns Shape from GeomAbs
128          ---C++:inline
129     is redefined static;
130     
131     VContinuity(me) returns Shape from GeomAbs
132          ---C++:inline
133     is redefined static;
134     
135     NbUIntervals(me; S : Shape from GeomAbs) returns Integer
136         ---Purpose: If necessary, breaks the surface in U intervals of
137         --          continuity    <S>.  And   returns  the  number  of
138         --          intervals.
139         ---C++:inline
140     is redefined static;
141     
142     NbVIntervals(me; S : Shape from GeomAbs) returns Integer
143         ---Purpose: If necessary, breaks the surface in V intervals of
144         --          continuity    <S>.  And   returns  the  number  of
145         --          intervals.
146         ---C++:inline
147     is redefined static;
148     
149     UIntervals(me; T : in out Array1OfReal from TColStd; 
150                    S :        Shape        from GeomAbs ) 
151         ---Purpose: Returns the  intervals with the requested continuity
152         --          in the U direction.
153     raises
154         OutOfRange from Standard -- if the Length of the array does
155                                  -- have enought slots to accomodate
156                                  -- the result.
157     is redefined static;
158
159     VIntervals(me; T : in out Array1OfReal from TColStd; 
160                    S :        Shape        from GeomAbs ) 
161         ---Purpose: Returns the  intervals with the requested continuity
162         --          in the V direction.
163     raises
164         OutOfRange from Standard -- if the Length of the array does
165                                  -- have enought slots to accomodate
166                                  -- the result.
167     is redefined static;
168     
169     UTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
170         ---Purpose: Returns    a  surface trimmed in the U direction
171         --           equivalent   of  <me>  between
172         --          parameters <First>  and <Last>. <Tol>  is used  to
173         --          test for 3d points confusion.
174     raises
175         OutOfRange from Standard
176         ---Purpose: If <First> >= <Last> 
177     is redefined static ;
178     
179     VTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
180         ---Purpose: Returns    a  surface trimmed in the V direction  between
181         --          parameters <First>  and <Last>. <Tol>  is used  to
182         --          test for 3d points confusion.
183     raises
184         OutOfRange from Standard
185         ---Purpose: If <First> >= <Last> 
186     is redefined static ;
187
188     IsUClosed(me) returns Boolean
189          ---C++:inline
190     is redefined static;
191      
192     IsVClosed(me) returns Boolean
193          ---C++:inline
194     is redefined static;
195      
196     IsUPeriodic(me) returns Boolean
197          ---C++:inline
198     is redefined static;
199     
200     UPeriod(me) returns Real
201     raises
202         DomainError from Standard -- if the curve is not periodic
203          ---C++:inline
204     is redefined static;
205      
206     IsVPeriodic(me) returns Boolean
207          ---C++:inline
208     is redefined static;
209     
210     VPeriod(me) returns Real
211          ---C++:inline
212     raises
213         DomainError from Standard -- if the curve is not periodic
214     is redefined static;
215      
216     Value (me; U, V : Real)  returns Pnt from gp
217         --- Purpose : Computes the point of parameters U,V on the surface.
218     is redefined static;
219
220     D0 (me; U, V : Real; P : out Pnt from gp)
221         --- Purpose : Computes the point of parameters U,V on the surface.
222     is redefined static;
223
224     D1 (me; U, V     : Real; 
225             P        : out Pnt from gp; 
226             D1U, D1V : out Vec from gp)
227         --- Purpose : Computes the point  and the first derivatives on
228         --  the surface.
229     raises 
230         DomainError from Standard
231             --- Purpose   : Raised   if  the continuity  of   the  current
232             --  intervals is not C1.
233     is redefined static;
234
235     D2 (me; U, V : Real; 
236             P : out Pnt from gp; 
237             D1U, D1V, D2U, D2V, D2UV : out Vec from gp)
238         --- Purpose  :  Computes   the point,  the  first  and  second
239         --  derivatives on the surface.
240     raises 
241         DomainError from Standard
242             --- Purpose   : Raised  if   the   continuity   of the current
243             --  intervals is not C2.
244     is redefined static;
245
246     D3 (me; U, V : Real; P : out Pnt from gp; 
247             D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV : out Vec from gp)
248         --- Purpose : Computes the point,  the first, second and third
249         --  derivatives on the surface.
250     raises 
251         DomainError from Standard
252             --- Purpose   : Raised  if   the   continuity   of the current
253             --  intervals is not C3.
254     is redefined static;
255
256     DN (me; U, V : Real; Nu, Nv : Integer)   returns Vec from gp
257         --- Purpose :  Computes the derivative of order Nu in the direction 
258         --  U and Nv in the direction V at the point P(U, V).
259     raises 
260         DomainError from Standard,
261             --- Purpose : Raised if the current U  interval is not not CNu
262             --  and the current V interval is not CNv.
263         OutOfRange from Standard
264             --- Purpose : Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
265     is redefined static;
266   
267     UResolution(me; R3d : Real ) returns Real
268          ---Purpose :  Returns the parametric U  resolution corresponding
269          --         to the real space resolution <R3d>.
270          --         
271         ---C++:inline
272     is redefined static;
273   
274     VResolution(me; R3d : Real ) returns Real
275          ---Purpose :  Returns the parametric V  resolution corresponding
276          --         to the real space resolution <R3d>.
277          --         
278         ---C++:inline
279     is redefined static;
280   
281     GetType(me) returns SurfaceType from GeomAbs
282         ---Purpose: Returns the type of the surface : Plane, Cylinder,
283         --          Cone,      Sphere,        Torus,    BezierSurface,
284         --          BSplineSurface,               SurfaceOfRevolution,
285         --          SurfaceOfExtrusion, OtherSurface
286         ---C++:inline
287     is redefined static;
288     
289     Plane(me) returns Pln from gp
290       raises NoSuchObject from Standard
291       
292     is redefined static;
293     
294     Cylinder(me) returns Cylinder from gp
295       raises NoSuchObject from Standard
296     is redefined static;
297     
298     Cone(me) returns Cone from gp
299       raises NoSuchObject from Standard
300     is redefined static;
301     
302     Sphere(me) returns Sphere from gp
303       raises NoSuchObject from Standard
304     is redefined static;
305     
306     Torus(me) returns Torus from gp
307       raises NoSuchObject from Standard
308     is redefined static;
309
310
311     UDegree(me) returns Integer 
312      raises NoSuchObject from Standard
313      ---C++:inline
314     is redefined static;
315
316     NbUPoles(me) returns Integer
317      raises NoSuchObject from Standard
318     ---C++:inline
319     is redefined static;
320
321     VDegree(me) returns Integer
322      raises NoSuchObject from Standard
323         ---C++:inline    
324     is redefined static;
325
326     NbVPoles(me) returns Integer
327      raises NoSuchObject from Standard
328         ---C++:inline     
329     is redefined static;
330     
331     
332     NbUKnots(me) returns Integer
333     raises 
334        NoSuchObject from Standard
335         ---C++:inline       
336     is redefined static;
337     
338     
339     NbVKnots(me) returns Integer
340     raises 
341        NoSuchObject from Standard
342         ---C++:inline       
343     is redefined static;
344     
345     
346     IsURational(me) returns Boolean
347     raises
348         NoSuchObject from Standard
349         ---C++:inline   
350     is redefined static;
351     
352     IsVRational(me) returns Boolean
353     raises
354         NoSuchObject from Standard
355         ---C++:inline   
356     is redefined static;
357     
358
359     Bezier(me) returns BezierSurface from Geom
360         ---Purpose: 
361 --Warning : this will make a copy of the 
362         --           Bezier Surface since it applies
363         --           to it the myTsrf transformation
364         --           Be Carefull when using this method
365
366     raises 
367         NoSuchObject from Standard
368     is redefined static;
369
370     BSpline(me) returns BSplineSurface from Geom
371         ---Purpose: 
372 --  Warning : this will make a copy of the 
373         --           BSpline Surface since it applies
374         --           to it the myTsrf transformation
375         --           Be Carefull when using this method
376
377     raises 
378         NoSuchObject from Standard
379     is redefined static;
380     
381     AxeOfRevolution(me) returns Ax1 from gp
382     raises 
383        NoSuchObject from Standard -- only for SurfaceOfRevolution
384     is redefined static;
385
386     Direction(me) returns Dir from gp
387     raises 
388        NoSuchObject from Standard -- only for SurfaceOfExtrusion
389     is redefined static;
390
391     BasisCurve(me) returns HCurve from Adaptor3d
392     raises 
393        NoSuchObject from Standard
394        ---Purpose: only for SurfaceOfExtrusion and SurfaceOfRevolution
395        --  Warning: this will make a copy of the underlying curve
396        --          since it applies to it the transformation
397        --          myTrsf. Be carefull when using this method.
398     is redefined static;
399
400     BasisSurface(me) returns HSurface from Adaptor3d
401     raises 
402        NoSuchObject from Standard -- only for Offset Surface
403     is redefined static;
404
405     OffsetValue(me) returns Real from Standard
406     raises 
407        NoSuchObject from Standard -- only for Offset Surface
408     is redefined static;
409
410 fields
411
412     mySurf : Surface from GeomAdaptor;
413     myTrsf : Trsf from gp;
414     myFace : Face from TopoDS;
415
416 end Surface;