0024023: Revamp the OCCT Handle -- ambiguity
[occt.git] / src / Adaptor3d / Adaptor3d_SurfaceOfLinearExtrusion.cdl
1 -- Created on: 1993-04-21
2 -- Created by: Bruno DUMORTIER
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 SurfaceOfLinearExtrusion from Adaptor3d inherits Surface from Adaptor3d 
18
19         --- Purpose: Generalised cylinder. This surface is obtained  by sweeping a  curve in  a given
20         --  direction. The parametrization range  for the parameter U is defined 
21         --  with referenced the curve.  
22         --  The parametrization range for the parameter V is ]-infinite,+infinite[       
23         --  The  position of  the   curve gives  the origin for    the
24         --  parameter V.        
25         --  The continuity of the surface is CN in the V direction.
26
27 uses
28      Array1OfReal    from TColStd,
29      Shape           from GeomAbs,
30      SurfaceType     from GeomAbs,
31      Vec             from gp,
32      Pnt             from gp,
33      Pln             from gp,
34      Cone            from gp,
35      Cylinder        from gp,
36      Sphere          from gp,
37      Torus           from gp,
38      Ax1             from gp,
39      Dir             from gp,
40      BezierSurface   from Geom,
41      BSplineSurface  from Geom,
42      HSurface        from Adaptor3d,
43      HCurve          from Adaptor3d
44      
45 raises
46
47     OutOfRange       from Standard,
48     NoSuchObject     from Standard,
49     DomainError      from Standard
50  
51 is
52     --      
53     --      Methods specific of SurfaceOfLinearExtrusion.
54     --      
55
56     Create returns SurfaceOfLinearExtrusion from Adaptor3d;
57     
58     
59     Create(C : HCurve from Adaptor3d) 
60     returns SurfaceOfLinearExtrusion from Adaptor3d; 
61         ---Purpose: The Curve is loaded.
62     
63     Create(C : HCurve from Adaptor3d; V : Dir from gp)
64     returns SurfaceOfLinearExtrusion  from  Adaptor3d; 
65         ---Purpose: Thew Curve and the Direction are loaded.
66
67     
68     Load( me : in out ; C : HCurve from Adaptor3d)
69         ---Purpose: Changes the Curve
70     is static;
71
72     Load( me : in out ; V : Dir from gp)
73         ---Purpose: Changes the Direction
74     is static;
75
76     
77     --     
78     --       Implementation of Surface from Adaptor3d methods.
79     --       
80     
81     --
82     --     Global methods - Apply to the whole surface.
83     --     
84     
85     FirstUParameter(me) returns Real
86     is redefined static;
87
88     LastUParameter(me) returns Real
89     is redefined static;
90     
91     FirstVParameter(me) returns Real
92     is redefined static;
93
94     LastVParameter(me) returns Real
95     is redefined static;
96     
97     UContinuity(me) returns Shape from GeomAbs
98     is redefined static;
99     
100     VContinuity(me) returns Shape from GeomAbs
101         ---Purpose: Return CN.
102     is redefined static;
103     
104     NbUIntervals(me; S : Shape from GeomAbs) returns Integer
105         ---Purpose: Returns the number of U intervals for  continuity
106         --          <S>. May be one if UContinuity(me) >= <S>
107     is redefined static;
108     
109     NbVIntervals(me; S : Shape from GeomAbs) returns Integer
110         ---Purpose: Returns the number of V intervals for  continuity
111         --          <S>. May be one if VContinuity(me) >= <S>
112     is redefined static;
113     
114     UIntervals(me; T : in out Array1OfReal from TColStd; 
115                 S : Shape from GeomAbs )
116         ---Purpose: Returns the  intervals with the requested continuity
117         --          in the U direction.
118
119     raises
120         OutOfRange from Standard -- if Index < 1 or Index > NbIntervals
121     is redefined static;
122
123     VIntervals(me; T : in out Array1OfReal from TColStd; 
124                 S : Shape from GeomAbs ) 
125         ---Purpose: Returns the  intervals with the requested continuity
126         --          in the V direction.
127     raises
128         OutOfRange from Standard -- if Index < 1 or Index > NbIntervals
129     is redefined static;
130
131     UTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
132         ---Purpose: Returns    a  surface trimmed in the U direction
133         --           equivalent   of  <me>  between
134         --          parameters <First>  and <Last>. <Tol>  is used  to
135         --          test for 3d points confusion.
136     raises
137         OutOfRange from Standard
138         ---Purpose: If <First> >= <Last> 
139     is redefined static ;
140     
141     VTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d
142         ---Purpose: Returns    a  surface trimmed in the V direction  between
143         --          parameters <First>  and <Last>. <Tol>  is used  to
144         --          test for 3d points confusion.
145     raises
146         OutOfRange from Standard
147         ---Purpose: If <First> >= <Last> 
148     is redefined static ;
149     
150     IsUClosed(me) returns Boolean
151     is redefined static;
152      
153     IsVClosed(me) returns Boolean
154     is redefined static;
155      
156     IsUPeriodic(me) returns Boolean
157     is redefined static;
158     
159     UPeriod(me) returns Real
160     raises
161         DomainError from Standard -- if the curve is not periodic
162     is redefined static;
163      
164     IsVPeriodic(me) returns Boolean
165     is redefined static;
166     
167     VPeriod(me) returns Real
168     raises
169         DomainError from Standard -- if the curve is not periodic
170     is redefined static;
171      
172     Value (me; U, V : Real)  returns Pnt from gp
173         --- Purpose : Computes the point of parameters U,V on the surface.
174     is redefined static;
175
176     D0 (me; U, V : Real; P : out Pnt from gp)
177         --- Purpose : Computes the point of parameters U,V on the surface.
178     is redefined static;
179
180     D1 (me; U, V : Real; P : out Pnt from gp; D1U, D1V : out Vec from gp)
181         --- Purpose : Computes the point  and the first derivatives on
182         --  the surface.
183     raises DomainError from Standard
184         --- Purpose   : Raised   if  the continuity  of   the  current
185         --  intervals is not C1.
186     is redefined static;
187
188     D2 (me; U, V : Real; P : out Pnt from gp; D1U, D1V, D2U, D2V, D2UV : out Vec from gp)
189         --- Purpose  :  Computes   the point,  the  first  and  second
190         --  derivatives on the surface.
191     raises DomainError from Standard
192         --- Purpose   : Raised  if   the   continuity   of the current
193         --  intervals is not C2.
194     is redefined static;
195
196     D3 (me; U, V : Real; P : out Pnt from gp; 
197             D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV : out Vec from gp)
198         --- Purpose : Computes the point,  the first, second and third
199         --  derivatives on the surface.
200     raises DomainError from Standard
201         --- Purpose   : Raised  if   the   continuity   of the current
202         --  intervals is not C3.
203     is redefined static;
204
205     DN (me; U, V : Real; Nu, Nv : Integer)   returns Vec from gp
206         --- Purpose :  Computes the derivative of order Nu in the direction U and Nv
207         --  in the direction V at the point P(U, V).
208     raises DomainError from Standard,
209         --- Purpose : Raised if the current U  interval is not not CNu
210         --  and the current V interval is not CNv.
211            OutOfRange from Standard
212         --- Purpose : Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0.
213     is redefined static;
214   
215     UResolution(me; R3d : Real ) returns Real
216          ---Purpose :  Returns the parametric U  resolution corresponding
217          --         to the real space resolution <R3d>.
218     is redefined static;
219   
220     VResolution(me; R3d : Real ) returns Real
221          ---Purpose :  Returns the parametric V  resolution corresponding
222          --         to the real space resolution <R3d>.
223     is redefined static;
224   
225     GetType(me) returns SurfaceType from GeomAbs
226         ---Purpose: Returns the type of the surface : Plane, Cylinder,
227         --          Cone,      Sphere,        Torus,    BezierSurface,
228         --          BSplineSurface,               SurfaceOfRevolution,
229         --          SurfaceOfExtrusion, OtherSurface
230     is redefined static;
231     
232     --
233     --     The following methods must  be called when GetType returned
234     --     the corresponding type.
235     --     
236
237     Plane(me) returns Pln from gp
238       raises NoSuchObject from Standard
239     is redefined static;
240     
241     Cylinder(me) returns Cylinder from gp
242       raises NoSuchObject from Standard
243     is redefined static;
244     
245     Cone(me) returns Cone from gp
246       raises NoSuchObject from Standard
247     is redefined static;
248     
249     Sphere(me) returns Sphere from gp
250       raises NoSuchObject from Standard
251     is redefined static;
252     
253     Torus(me) returns Torus from gp
254       raises NoSuchObject from Standard
255     is redefined static;
256
257
258     UDegree(me) returns Integer
259      raises NoSuchObject from Standard
260     is redefined static;
261
262     NbUPoles(me) returns Integer
263      raises NoSuchObject from Standard
264     is redefined static;
265
266     VDegree(me) returns Integer
267      raises NoSuchObject from Standard
268     is redefined static;
269
270     NbVPoles(me) returns Integer
271      raises NoSuchObject from Standard
272     is redefined static;
273     
274     
275     NbUKnots(me) returns Integer
276     raises 
277        NoSuchObject from Standard
278     is redefined static;
279     
280     
281     NbVKnots(me) returns Integer
282     raises 
283        NoSuchObject from Standard
284     is redefined static;
285     
286     
287     IsURational(me) returns Boolean
288     raises
289         NoSuchObject from Standard
290     is redefined static;
291     
292     IsVRational(me) returns Boolean
293     raises
294         NoSuchObject from Standard
295     is redefined static;
296     
297     
298
299     Bezier(me) returns BezierSurface from Geom
300     raises 
301         NoSuchObject from Standard
302     is redefined static;
303     
304     BSpline(me) returns BSplineSurface from Geom
305     raises 
306         NoSuchObject from Standard
307     is redefined static;
308     
309     AxeOfRevolution(me) returns Ax1 from gp
310     raises 
311        NoSuchObject from Standard -- only for SurfaceOfRevolution
312     is redefined static;
313
314     Direction(me) returns Dir from gp
315     raises 
316        NoSuchObject from Standard -- only for SurfaceOfExtrusion
317     is redefined static;
318
319     BasisCurve(me) returns HCurve from Adaptor3d
320     raises 
321        NoSuchObject from Standard 
322        -- Only for SurfaceOfExtrusion and SurfaceOfRevolution
323     is redefined static;
324
325 fields
326
327     myBasisCurve  : HCurve from Adaptor3d;
328     myDirection   : Dir from gp;
329
330
331
332 end SurfaceOfLinearExtrusion;