Integration of OCCT 6.5.0 from SVN
[occt.git] / src / GeomAdaptor / GeomAdaptor_Surface.cdl
1 -- File:      GeomAdaptor_Surface.cdl
2 -- Created:   Fri May 14 15:08:27 1993
3 -- Author:    Bruno DUMORTIER
4 ---Copyright: Matra Datavision 1993
5
6 class Surface from GeomAdaptor inherits Surface from Adaptor3d
7
8         ---Purpose: An interface between the services provided by any
9         -- surface from the package Geom and those required
10         -- of the surface by algorithms which use it.
11         
12 uses
13      Pnt              from gp,
14      Vec              from gp,
15      Dir              from gp,
16      Pln              from gp,
17      Cone             from gp,
18      Cylinder         from gp,
19      Sphere           from gp,
20      Torus            from gp,
21      Ax1              from gp,
22      Array1OfReal     from TColStd,
23      Surface          from Geom,
24      BezierSurface    from Geom,
25      BSplineSurface   from Geom,
26      SurfaceType      from GeomAbs,
27      Shape            from GeomAbs,
28      Curve            from GeomAdaptor,
29      HCurve           from Adaptor3d,
30      HSurface         from Adaptor3d
31
32 raises
33     NoSuchObject      from Standard,
34     OutOfRange        from Standard,
35     ConstructionError from Standard,
36     DomainError       from Standard
37
38 is
39
40     Create returns Surface from GeomAdaptor;
41         ---C++: inline
42     
43     Create( S : Surface from Geom) returns Surface from GeomAdaptor;
44         ---C++: inline
45     
46     Create( S : Surface from Geom; UFirst,ULast,VFirst,VLast : Real; 
47             TolU  :  Real  =  0.0; 
48             TolV  :  Real  =  0.0) 
49     returns  Surface from GeomAdaptor
50     raises ConstructionError from Standard;
51         ---Purpose: ConstructionError is raised if UFirst>ULast or VFirst>VLast
52         ---C++: inline
53
54     Load(me : in out; S : Surface from Geom);
55         ---C++: inline
56     
57     Load(me : in out; S : Surface from Geom; 
58                       UFirst,ULast,VFirst,VLast :  Real; 
59                       TolU  :  Real  =  0.0; 
60                       TolV  :  Real  =  0.0)
61     raises ConstructionError from Standard;
62     ---Purpose: ConstructionError is raised if UFirst>ULast or VFirst>VLast
63
64     Surface(me) returns Surface from Geom
65         ---C++: return const&
66         ---C++: inline
67     is static;
68     
69     
70     --
71     --     Global methods - Apply to the whole surface.
72     --     
73     
74     FirstUParameter(me) returns Real
75          ---C++:inline
76     is redefined static;
77
78     LastUParameter(me) returns Real
79          ---C++:inline
80     is redefined static;
81     
82     FirstVParameter(me) returns Real
83          ---C++:inline
84     is redefined static;
85
86     LastVParameter(me) returns Real
87          ---C++:inline
88     is redefined static;
89     
90     UContinuity(me) returns Shape from GeomAbs
91     is redefined static;
92     
93     VContinuity(me) returns Shape from GeomAbs
94     is redefined static;
95     
96     NbUIntervals(me; S : Shape from GeomAbs) returns Integer
97         ---Purpose: Returns the number of U intervals for  continuity
98         --          <S>. May be one if UContinuity(me) >= <S>
99     is redefined static;
100     
101     NbVIntervals(me; S : Shape from GeomAbs) returns Integer
102         ---Purpose: Returns the number of V intervals for  continuity
103         --          <S>. May be one if VContinuity(me) >= <S>
104     is redefined static;
105     
106     UIntervals(me; T : in out Array1OfReal from TColStd; 
107                 S : Shape from GeomAbs ) 
108         ---Purpose: Returns the  intervals with the requested continuity
109         --          in the U direction.
110     raises
111         OutOfRange from Standard -- if the Length of the array does
112                                  -- have enought slots to accomodate
113                                  -- the result.
114     is redefined static;
115
116     VIntervals(me; T : in out Array1OfReal from TColStd; 
117                 S : Shape from GeomAbs ) 
118         ---Purpose: Returns the  intervals with the requested continuity
119         --          in the V direction.
120     raises
121         OutOfRange from Standard -- if the Length of the array does
122                                  -- have enought slots to accomodate
123                                  -- the result.
124     is redefined static;
125     
126     UTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
127         ---Purpose: Returns    a  surface trimmed in the U direction
128         --           equivalent   of  <me>  between
129         --          parameters <First>  and <Last>. <Tol>  is used  to
130         --          test for 3d points confusion.
131     raises
132         OutOfRange from Standard
133         ---Purpose: If <First> >= <Last> 
134     is redefined static ;
135     
136     VTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
137         ---Purpose: Returns    a  surface trimmed in the V direction  between
138         --          parameters <First>  and <Last>. <Tol>  is used  to
139         --          test for 3d points confusion.
140     raises
141         OutOfRange from Standard
142         ---Purpose: If <First> >= <Last> 
143     is redefined static ;
144
145     IsUClosed(me) returns Boolean
146     is redefined static;
147      
148     IsVClosed(me) returns Boolean
149     is redefined static;
150      
151     IsUPeriodic(me) returns Boolean
152     is redefined static;
153     
154     UPeriod(me) returns Real
155     raises
156         DomainError from Standard -- if the curve is not periodic
157     is redefined static;
158      
159     IsVPeriodic(me) returns Boolean
160     is redefined static;
161     
162     VPeriod(me) returns Real
163     raises
164         DomainError from Standard -- if the curve is not periodic
165     is redefined static;
166      
167     Value (me; U, V : Real)  returns Pnt from gp
168         --- Purpose : Computes the point of parameters U,V on the surface.
169     is redefined static;
170
171     D0 (me; U, V :     Real; 
172             P    : out Pnt  from gp)
173         --- Purpose : Computes the point of parameters U,V on the surface.
174     is redefined static;
175
176     D1 (me; U, V     :     Real; 
177             P        : out Pnt from gp; 
178             D1U, D1V : out Vec from gp)
179         --- Purpose : Computes the point  and the first derivatives on
180         --  the surface.
181         --  
182         --  Warning : On the specific case of BSplineSurface:
183         --  if the surface is cut in interval of continuity at least C1, 
184         --  the derivatives are computed on the current interval.
185         --  else the derivatives are computed on the basis surface.
186     is redefined static;
187
188     D2 (me; U, V         : Real; 
189             P        : out Pnt  from gp; 
190             D1U, D1V : out Vec  from gp;
191             D2U, D2V : out Vec  from gp; 
192             D2UV     : out Vec  from gp)
193         --- Purpose  :  Computes   the point,  the  first  and  second
194         --  derivatives on the surface.
195         --  
196         --  Warning : On the specific case of BSplineSurface:
197         --  if the surface is cut in interval of continuity at least C2, 
198         --  the derivatives are computed on the current interval.
199         --  else the derivatives are computed on the basis surface.
200     is redefined static;
201
202     D3 (me; U, V         :     Real;
203             P            : out Pnt  from gp; 
204             D1U, D1V     : out Vec  from gp;
205             D2U, D2V     : out Vec  from gp;
206             D2UV         : out Vec  from gp;
207             D3U, D3V     : out Vec  from gp;
208             D3UUV, D3UVV : out Vec  from gp)
209         --- Purpose : Computes the point,  the first, second and third
210         --  derivatives on the surface.
211         --  
212         --  Warning : On the specific case of BSplineSurface:
213         --  if the surface is cut in interval of continuity at least C3, 
214         --  the derivatives are computed on the current interval.
215         --  else the derivatives are computed on the basis surface.
216     is redefined static;
217
218     DN (me; U, V : Real; Nu, Nv : Integer)   
219     returns Vec from gp
220         --- Purpose :  Computes the derivative of order Nu in the 
221         --  direction U and Nv in the direction V at the point P(U, V).
222         --  
223         --  Warning : On the specific case of BSplineSurface:
224         --  if the surface is cut in interval of continuity CN, 
225         --  the derivatives are computed on the current interval.
226         --  else the derivatives are computed on the basis surface.
227     raises 
228         OutOfRange from Standard
229         --- Purpose : Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
230     is redefined static;
231   
232     UResolution(me; R3d : Real ) returns Real
233          ---Purpose :  Returns the parametric U  resolution corresponding
234          --         to the real space resolution <R3d>.
235     is redefined static;
236   
237     VResolution(me; R3d : Real ) returns Real
238          ---Purpose :  Returns the parametric V  resolution corresponding
239          --         to the real space resolution <R3d>.
240     is redefined static;
241   
242     GetType(me) returns SurfaceType from GeomAbs
243         ---Purpose: Returns the type of the surface : Plane, Cylinder,
244         --          Cone,      Sphere,        Torus,    BezierSurface,
245         --          BSplineSurface,               SurfaceOfRevolution,
246         --          SurfaceOfExtrusion, OtherSurface
247         ---C++:inline
248     is redefined static;
249     
250     --
251     --     The following methods must  be called when GetType returned
252     --     the corresponding type.
253     --     
254
255     Plane(me) returns Pln from gp
256       raises NoSuchObject from Standard
257     is redefined static;
258     
259     Cylinder(me) returns Cylinder from gp
260       raises NoSuchObject from Standard
261     is redefined static;
262     
263     Cone(me) returns Cone from gp
264       raises NoSuchObject from Standard
265     is redefined static;
266     
267     Sphere(me) returns Sphere from gp
268       raises NoSuchObject from Standard
269     is redefined static;
270     
271     Torus(me) returns Torus from gp
272       raises NoSuchObject from Standard
273     is redefined static;
274
275     UDegree(me) returns Integer
276      raises NoSuchObject from Standard
277     is redefined static;
278
279     NbUPoles(me) returns Integer
280      raises NoSuchObject from Standard
281     is redefined static;
282
283     VDegree(me) returns Integer
284      raises NoSuchObject from Standard
285     is redefined static;
286
287     NbVPoles(me) returns Integer
288      raises NoSuchObject from Standard
289     is redefined static;
290     
291     NbUKnots(me) returns Integer
292     raises 
293        NoSuchObject from Standard
294     is redefined static;
295     
296     
297     NbVKnots(me) returns Integer
298     raises 
299        NoSuchObject from Standard
300     is redefined static;
301     
302     
303     IsURational(me) returns Boolean
304     raises
305         NoSuchObject from Standard
306     is redefined static;
307     
308     IsVRational(me) returns Boolean
309     raises
310         NoSuchObject from Standard
311     is redefined static;
312
313
314     Bezier(me) returns BezierSurface from Geom
315         ---Purpose: This will NOT make a copy of the
316         --           Bezier Surface : If you want to modify
317         --           the Surface please make a copy yourself
318         --           Also it will NOT trim the surface to
319         --           myU/VFirst/Last.
320     raises 
321         NoSuchObject from Standard
322     is redefined static;
323
324     BSpline(me) returns BSplineSurface from Geom
325         ---Purpose:  This will NOT make a copy of the
326         --           BSpline Surface : If you want to modify
327         --           the Surface please make a copy yourself
328         --           Also it will NOT trim the surface to
329         --           myU/VFirst/Last.
330     raises 
331         NoSuchObject from Standard
332     is redefined static;
333     
334     AxeOfRevolution(me) returns Ax1 from gp
335     raises 
336        NoSuchObject from Standard -- only for SurfaceOfRevolution
337     is redefined static;
338
339     Direction(me) returns Dir from gp
340     raises 
341        NoSuchObject from Standard -- only for SurfaceOfExtrusion
342     is redefined static;
343
344     BasisCurve(me) returns HCurve from Adaptor3d
345     raises 
346        NoSuchObject from Standard -- only for SurfaceOfExtrusion
347     is redefined static;
348     
349     
350     BasisSurface(me) returns HSurface from Adaptor3d
351     raises 
352        NoSuchObject from Standard -- only for Offset Surface
353     is redefined static;
354
355     OffsetValue(me) returns Real from Standard
356     raises 
357        NoSuchObject from Standard -- only for Offset Surface
358     is redefined static;
359   
360   
361      Span (me;Side :Integer; Ideb,Ifin:Integer; 
362                    OutIdeb,OutIfin:out Integer; 
363             NbKnots : Integer ) 
364      is  private; 
365
366     IfUVBound (me;U,V :Real;Ideb,Ifin,IVdeb,IVfin :out Integer; 
367                   USide,VSide:  Integer)  
368         returns  Boolean  from  Standard                                    
369     is  private; 
370      
371  
372 fields
373
374     mySurface            : Surface          from Geom;
375     mySurfaceType        : SurfaceType      from GeomAbs;
376     myUFirst             : Real             from Standard;
377     myULast              : Real             from Standard;
378     myVFirst             : Real             from Standard;
379     myVLast              : Real             from Standard; 
380     myTolU,  myTolV      : Real             from Standard;
381
382 end Surface;