7fd59977 |
1 | -- File: Adaptor3d_Surface.cdl |
2 | -- Created: Wed Mar 31 12:12:54 1993 |
3 | -- Author: Bruno DUMORTIER |
4 | -- <dub@sdsun1> |
5 | ---Copyright: Matra Datavision 1993 |
6 | |
7 | |
8 | |
9 | deferred class Surface from Adaptor3d |
10 | |
11 | ---Purpose: Root class for surfaces on which geometric algorithms work. |
12 | -- An adapted surface is an interface between the |
13 | -- services provided by a surface and those required of |
14 | -- the surface by algorithms which use it. |
15 | -- A derived concrete class is provided: |
16 | -- GeomAdaptor_Surface for a surface from the Geom package. |
17 | -- The Surface class describes the standard behaviour |
18 | -- of a surface for generic algorithms. |
19 | -- |
20 | -- The Surface can be decomposed in intervals of any |
21 | -- continuity in U and V using the method |
22 | -- NbIntervals. A current interval can be set. Most |
23 | -- of the methods apply to the current interval. |
24 | -- Warning: All the methods are virtual and implemented with a |
25 | -- raise to allow to redefined only the methods realy |
26 | -- used. |
27 | uses |
28 | Array1OfReal from TColStd, |
29 | Shape from GeomAbs, |
30 | SurfaceType from GeomAbs, |
31 | Vec from gp, |
32 | Dir from gp, |
33 | Pnt from gp, |
34 | Pln from gp, |
35 | Cone from gp, |
36 | Cylinder from gp, |
37 | Sphere from gp, |
38 | Torus from gp, |
39 | Ax1 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 | -- |
54 | -- Global methods - Apply to the whole surface. |
55 | -- |
56 | |
57 | Delete(me:out) is virtual; |
58 | ---C++: alias "Standard_EXPORT virtual ~Adaptor3d_Surface(){Delete();}" |
59 | |
60 | FirstUParameter(me) returns Real |
61 | is virtual; |
62 | |
63 | LastUParameter(me) returns Real |
64 | is virtual; |
65 | |
66 | FirstVParameter(me) returns Real |
67 | is virtual; |
68 | |
69 | LastVParameter(me) returns Real |
70 | is virtual; |
71 | |
72 | UContinuity(me) returns Shape from GeomAbs |
73 | is virtual; |
74 | |
75 | VContinuity(me) returns Shape from GeomAbs |
76 | is virtual; |
77 | |
78 | NbUIntervals(me; S : Shape from GeomAbs) returns Integer |
79 | ---Purpose: Returns the number of U intervals for continuity |
80 | -- <S>. May be one if UContinuity(me) >= <S> |
81 | is virtual; |
82 | |
83 | NbVIntervals(me; S : Shape from GeomAbs) returns Integer |
84 | ---Purpose: Returns the number of V intervals for continuity |
85 | -- <S>. May be one if VContinuity(me) >= <S> |
86 | is virtual; |
87 | |
88 | UIntervals(me; T : in out Array1OfReal from TColStd; |
89 | S : Shape from GeomAbs ) |
90 | ---Purpose: Returns the intervals with the requested continuity |
91 | -- in the U direction. |
92 | raises |
93 | OutOfRange from Standard -- if the Length of the array does |
94 | -- have enought slots to accomodate |
95 | -- the result. |
96 | is virtual; |
97 | |
98 | VIntervals(me; T : in out Array1OfReal from TColStd; |
99 | S : Shape from GeomAbs ) |
100 | ---Purpose: Returns the intervals with the requested continuity |
101 | -- in the V direction. |
102 | raises |
103 | OutOfRange from Standard -- if the Length of the array does |
104 | -- have enought slots to accomodate |
105 | -- the result. |
106 | is virtual; |
107 | |
108 | UTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d |
109 | ---Purpose: Returns a surface trimmed in the U direction |
110 | -- equivalent of <me> between |
111 | -- parameters <First> and <Last>. <Tol> is used to |
112 | -- test for 3d points confusion. |
113 | raises |
114 | OutOfRange from Standard |
115 | ---Purpose: If <First> >= <Last> |
116 | is virtual ; |
117 | |
118 | VTrim(me; First, Last, Tol : Real) returns HSurface from Adaptor3d |
119 | ---Purpose: Returns a surface trimmed in the V direction between |
120 | -- parameters <First> and <Last>. <Tol> is used to |
121 | -- test for 3d points confusion. |
122 | raises |
123 | OutOfRange from Standard |
124 | ---Purpose: If <First> >= <Last> |
125 | is virtual ; |
126 | |
127 | IsUClosed(me) returns Boolean |
128 | is virtual; |
129 | |
130 | IsVClosed(me) returns Boolean |
131 | is virtual; |
132 | |
133 | IsUPeriodic(me) returns Boolean |
134 | is virtual; |
135 | |
136 | UPeriod(me) returns Real |
137 | raises |
138 | DomainError from Standard -- if the curve is not periodic |
139 | is virtual; |
140 | |
141 | IsVPeriodic(me) returns Boolean |
142 | is virtual; |
143 | |
144 | VPeriod(me) returns Real |
145 | raises |
146 | DomainError from Standard -- if the curve is not periodic |
147 | is virtual; |
148 | |
149 | Value (me; U, V : Real) returns Pnt from gp |
150 | --- Purpose : Computes the point of parameters U,V on the surface. |
151 | is virtual; |
152 | |
153 | D0 (me; U, V : Real; P : out Pnt from gp) |
154 | --- Purpose : Computes the point of parameters U,V on the surface. |
155 | is virtual; |
156 | |
157 | D1 (me; U, V : Real; P : out Pnt from gp; D1U, D1V : out Vec from gp) |
158 | --- Purpose : Computes the point and the first derivatives on |
159 | -- the surface. |
160 | raises DomainError from Standard |
161 | --- Purpose : Raised if the continuity of the current |
162 | -- intervals is not C1. |
163 | is virtual; |
164 | |
165 | D2 (me; U, V : Real; P : out Pnt from gp; D1U, D1V, D2U, D2V, D2UV : out Vec from gp) |
166 | --- Purpose : Computes the point, the first and second |
167 | -- derivatives on the surface. |
168 | raises DomainError from Standard |
169 | --- Purpose : Raised if the continuity of the current |
170 | -- intervals is not C2. |
171 | is virtual; |
172 | |
173 | D3 (me; U, V : Real; P : out Pnt from gp; |
174 | D1U, D1V, D2U, D2V, D2UV, D3U, D3V, D3UUV, D3UVV : out Vec from gp) |
175 | --- Purpose : Computes the point, the first, second and third |
176 | -- derivatives on the surface. |
177 | raises DomainError from Standard |
178 | --- Purpose : Raised if the continuity of the current |
179 | -- intervals is not C3. |
180 | is virtual; |
181 | |
182 | DN (me; U, V : Real; Nu, Nv : Integer) returns Vec from gp |
183 | --- Purpose : Computes the derivative of order Nu in the direction U and Nv |
184 | -- in the direction V at the point P(U, V). |
185 | raises DomainError from Standard, |
186 | --- Purpose : Raised if the current U interval is not not CNu |
187 | -- and the current V interval is not CNv. |
188 | OutOfRange from Standard |
189 | --- Purpose : Raised if Nu + Nv < 1 or Nu < 0 or Nv < 0. |
190 | is virtual; |
191 | |
192 | UResolution(me; R3d : Real ) returns Real |
193 | ---Purpose : Returns the parametric U resolution corresponding |
194 | -- to the real space resolution <R3d>. |
195 | is virtual; |
196 | |
197 | VResolution(me; R3d : Real ) returns Real |
198 | ---Purpose : Returns the parametric V resolution corresponding |
199 | -- to the real space resolution <R3d>. |
200 | is virtual; |
201 | |
202 | GetType(me) returns SurfaceType from GeomAbs |
203 | ---Purpose: Returns the type of the surface : Plane, Cylinder, |
204 | -- Cone, Sphere, Torus, BezierSurface, |
205 | -- BSplineSurface, SurfaceOfRevolution, |
206 | -- SurfaceOfExtrusion, OtherSurface |
207 | is virtual; |
208 | |
209 | -- |
210 | -- The following methods must be called when GetType returned |
211 | -- the corresponding type. |
212 | -- |
213 | |
214 | Plane(me) returns Pln from gp |
215 | raises NoSuchObject from Standard |
216 | is virtual; |
217 | |
218 | Cylinder(me) returns Cylinder from gp |
219 | raises NoSuchObject from Standard |
220 | is virtual; |
221 | |
222 | Cone(me) returns Cone from gp |
223 | raises NoSuchObject from Standard |
224 | is virtual; |
225 | |
226 | Sphere(me) returns Sphere from gp |
227 | raises NoSuchObject from Standard |
228 | is virtual; |
229 | |
230 | Torus(me) returns Torus from gp |
231 | raises NoSuchObject from Standard |
232 | is virtual; |
233 | |
234 | |
235 | UDegree(me) returns Integer |
236 | raises NoSuchObject from Standard |
237 | is virtual; |
238 | |
239 | NbUPoles(me) returns Integer |
240 | raises NoSuchObject from Standard |
241 | is virtual; |
242 | |
243 | VDegree(me) returns Integer |
244 | raises NoSuchObject from Standard |
245 | is virtual; |
246 | |
247 | NbVPoles(me) returns Integer |
248 | raises NoSuchObject from Standard |
249 | is virtual; |
250 | |
251 | |
252 | NbUKnots(me) returns Integer |
253 | raises |
254 | NoSuchObject from Standard |
255 | is virtual; |
256 | |
257 | |
258 | NbVKnots(me) returns Integer |
259 | raises |
260 | NoSuchObject from Standard |
261 | is virtual; |
262 | |
263 | |
264 | IsURational(me) returns Boolean |
265 | raises |
266 | NoSuchObject from Standard |
267 | is virtual; |
268 | |
269 | IsVRational(me) returns Boolean |
270 | raises |
271 | NoSuchObject from Standard |
272 | is virtual; |
273 | |
274 | |
275 | |
276 | Bezier(me) returns BezierSurface from Geom |
277 | raises |
278 | NoSuchObject from Standard |
279 | is virtual; |
280 | |
281 | BSpline(me) returns BSplineSurface from Geom |
282 | raises |
283 | NoSuchObject from Standard |
284 | is virtual; |
285 | |
286 | AxeOfRevolution(me) returns Ax1 from gp |
287 | raises |
288 | NoSuchObject from Standard -- only for SurfaceOfRevolution |
289 | is virtual; |
290 | |
291 | Direction(me) returns Dir from gp |
292 | raises |
293 | NoSuchObject from Standard -- only for SurfaceOfExtrusion |
294 | is virtual; |
295 | |
296 | BasisCurve(me) returns HCurve from Adaptor3d |
297 | raises |
298 | NoSuchObject from Standard -- only for SurfaceOfExtrusion |
299 | is virtual; |
300 | |
301 | BasisSurface(me) returns HSurface from Adaptor3d |
302 | raises |
303 | NoSuchObject from Standard -- only for Offset Surface |
304 | is virtual; |
305 | |
306 | OffsetValue(me) returns Real from Standard |
307 | raises |
308 | NoSuchObject from Standard -- only for Offset Surface |
309 | is virtual; |
310 | |
311 | end Surface; |
312 | |
313 | |
314 | |
315 | |
316 | |
317 | |
318 | |
319 | |