b311480e |
1 | -- Created on: 1991-12-02 |
2 | -- Created by: Laurent PAINNOT |
3 | -- Copyright (c) 1991-1999 Matra Datavision |
4 | -- Copyright (c) 1999-2012 OPEN CASCADE SAS |
5 | -- |
6 | -- The content of this file is subject to the Open CASCADE Technology Public |
7 | -- License Version 6.5 (the "License"). You may not use the content of this file |
8 | -- except in compliance with the License. Please obtain a copy of the License |
9 | -- at http://www.opencascade.org and read it completely before using this file. |
10 | -- |
11 | -- The Initial Developer of the Original Code is Open CASCADE S.A.S., having its |
12 | -- main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France. |
13 | -- |
14 | -- The Original Code and all software distributed under the License is |
15 | -- distributed on an "AS IS" basis, without warranty of any kind, and the |
16 | -- Initial Developer hereby disclaims all such warranties, including without |
17 | -- limitation, any warranties of merchantability, fitness for a particular |
18 | -- purpose or non-infringement. Please see the License for the specific terms |
19 | -- and conditions governing the rights and limitations under the License. |
20 | |
7fd59977 |
21 | |
22 | |
23 | |
24 | |
25 | class MultiCurve from AppParCurves |
26 | |
27 | ---Purpose: This class describes a MultiCurve approximating a Multiline. |
28 | -- As a Multiline is a set of n lines, a MultiCurve is a set |
29 | -- of n curves. These curves are Bezier curves. |
30 | -- A MultiCurve is composed of m MultiPoint. |
31 | -- The approximating degree of these n curves is the same for |
32 | -- each one. |
33 | -- |
34 | -- |
35 | -- Example of a MultiCurve composed of MultiPoints: |
36 | -- |
37 | -- P1______P2_____P3______P4________........_____PNbMPoints |
38 | -- |
39 | -- Q1______Q2_____Q3______Q4________........_____QNbMPoints |
40 | -- . . |
41 | -- . . |
42 | -- . . |
43 | -- R1______R2_____R3______R4________........_____RNbMPoints |
44 | -- |
45 | -- |
46 | -- Pi, Qi, ..., Ri are points of dimension 2 or 3. |
47 | -- |
48 | -- (Pi, Qi, ...Ri), i= 1,...NbPoles are MultiPoints. |
49 | -- each MultiPoint has got NbPol Poles. |
50 | |
51 | |
52 | uses MultiPoint from AppParCurves, |
53 | HArray1OfMultiPoint from AppParCurves, |
54 | Array1OfMultiPoint from AppParCurves, |
55 | Array1OfPnt from TColgp, |
56 | Array1OfPnt2d from TColgp, |
57 | Pnt from gp, |
58 | Pnt2d from gp, |
59 | Vec from gp, |
60 | Vec2d from gp, |
61 | OStream from Standard |
62 | |
63 | |
64 | raises OutOfRange from Standard, |
65 | DimensionError from Standard, |
66 | ConstructionError from Standard |
67 | |
68 | is |
69 | |
70 | Create returns MultiCurve; |
71 | ---Purpose: returns an indefinite MultiCurve. |
72 | |
73 | |
74 | Create(NbPol: Integer) |
75 | ---Purpose: creates a MultiCurve, describing Bezier curves all |
76 | -- containing the same number of MultiPoint. |
77 | -- An exception is raised if Degree < 0. |
78 | |
79 | |
80 | returns MultiCurve from AppParCurves |
81 | raises OutOfRange from Standard; |
82 | |
83 | |
84 | Create(tabMU: Array1OfMultiPoint) |
85 | ---Purpose: creates a MultiCurve, describing Bezier curves all |
86 | -- containing the same number of MultiPoint. |
87 | -- Each MultiPoint must have NbCurves Poles. |
88 | |
89 | returns MultiCurve from AppParCurves |
90 | raises ConstructionError from Standard; |
91 | |
92 | |
93 | Delete(me:out) is virtual; |
94 | ---C++: alias "Standard_EXPORT virtual ~AppParCurves_MultiCurve(){Delete();}" |
95 | |
96 | SetNbPoles(me: in out; nbPoles: Integer) |
97 | ---Purpose: The number of poles of the MultiCurve |
98 | -- will be set to <nbPoles>. |
99 | |
100 | is static; |
101 | |
102 | |
103 | |
104 | SetValue(me: in out; Index: Integer; |
105 | MPoint: MultiPoint from AppParCurves) |
106 | ---Purpose: sets the MultiPoint of range Index to the value |
107 | -- <MPoint>. |
108 | -- An exception is raised if Index <0 or Index >NbMPoint. |
109 | |
110 | raises OutOfRange from Standard, |
111 | DimensionError from Standard |
112 | is static; |
113 | |
114 | |
115 | |
116 | NbCurves(me) |
117 | ---Purpose: Returns the number of curves resulting from the |
118 | -- approximation of a MultiLine. |
119 | |
120 | returns Integer |
121 | is static; |
122 | |
123 | |
124 | NbPoles(me) |
125 | ---Purpose: Returns the number of poles on curves resulting from the approximation of a MultiLine. |
126 | |
127 | returns Integer |
128 | is virtual; |
129 | |
130 | |
131 | Degree(me) |
132 | ---Purpose: returns the degree of the curves. |
133 | |
134 | returns Integer |
135 | is virtual; |
136 | |
137 | |
138 | Dimension(me; CuIndex: Integer) |
139 | ---Purpose: returns the dimension of the CuIndex curve. |
140 | -- An exception is raised if CuIndex<0 or CuIndex>NbCurves. |
141 | returns Integer |
142 | raises OutOfRange from Standard |
143 | is static; |
144 | |
145 | |
146 | Curve(me; CuIndex: Integer; TabPnt: in out Array1OfPnt) |
147 | ---Purpose: returns the Pole array of the curve of range CuIndex. |
148 | -- An exception is raised if the dimension of the curve |
149 | -- is 2d. |
150 | |
151 | raises OutOfRange from Standard, |
152 | DimensionError from Standard |
153 | is static; |
154 | |
155 | |
156 | Curve(me; CuIndex: Integer; TabPnt: in out Array1OfPnt2d) |
157 | ---Purpose: returns the Pole array of the curve of range CuIndex. |
158 | -- An exception is raised if the dimension of the curve |
159 | -- is 3d. |
160 | |
161 | raises OutOfRange from Standard, |
162 | DimensionError from Standard |
163 | is static; |
164 | |
165 | |
166 | Value(me; Index: Integer) |
167 | ---Purpose: returns the Index MultiPoint. |
168 | -- An exception is raised if Index <0 or Index >Degree+1. |
169 | ---C++: return const& |
170 | |
171 | returns MultiPoint from AppParCurves |
172 | raises OutOfRange from Standard |
173 | is static; |
174 | |
175 | |
176 | Pole(me; CuIndex, Nieme: Integer) |
177 | ---Purpose: returns the Nieme pole of the CuIndex curve. |
178 | -- the curve must be a 3D curve. |
179 | ---C++: return const& |
180 | |
181 | returns Pnt from gp |
182 | raises OutOfRange from Standard |
183 | is static; |
184 | |
185 | |
186 | Pole2d(me; CuIndex, Nieme: Integer) |
187 | ---Purpose: returns the Nieme pole of the CuIndex curve. |
188 | -- the curve must be a 2D curve. |
189 | ---C++: return const& |
190 | |
191 | returns Pnt2d from gp |
192 | raises OutOfRange from Standard |
193 | is static; |
194 | |
195 | |
196 | Transform(me: in out; CuIndex: Integer; x, dx, y, dy, z, dz: Real) |
197 | ---Purpose: Applies a transformation to the curve of range |
198 | -- <CuIndex>. |
199 | -- newx = x + dx*oldx |
200 | -- newy = y + dy*oldy for all points of the curve. |
201 | -- newz = z + dz*oldz |
202 | |
203 | raises OutOfRange from Standard |
204 | is static; |
205 | |
206 | |
207 | Transform2d(me: in out; CuIndex: Integer; x, dx, y, dy: Real) |
208 | ---Purpose: Applies a transformation to the Curve of range |
209 | -- <CuIndex>. |
210 | -- newx = x + dx*oldx |
211 | -- newy = y + dy*oldy for all points of the curve. |
212 | |
213 | raises OutOfRange from Standard |
214 | is static; |
215 | |
216 | |
217 | Value(me; CuIndex: Integer; U: Real; Pt: out Pnt) |
218 | ---Purpose: returns the value of the point with a parameter U |
219 | -- on the Bezier curve number CuIndex. |
220 | -- An exception is raised if CuIndex <0 or > NbCurves. |
221 | -- An exception is raised if the curve dimension is 2d. |
222 | |
223 | raises OutOfRange from Standard, |
224 | DimensionError from Standard |
225 | is virtual; |
226 | |
227 | |
228 | Value(me; CuIndex: Integer; U: Real; Pt: out Pnt2d) |
229 | ---Purpose: returns the value of the point with a parameter U |
230 | -- on the Bezier curve number CuIndex. |
231 | -- An exception is raised if CuIndex <0 or > NbCurves. |
232 | -- An exception is raised if the curve dimension is 3d. |
233 | |
234 | raises OutOfRange from Standard, |
235 | DimensionError from Standard |
236 | is virtual; |
237 | |
238 | |
239 | D1(me; CuIndex: Integer; U: Real; Pt: out Pnt; V1: out Vec) |
240 | ---Purpose: returns the value of the point with a parameter U |
241 | -- on the Bezier curve number CuIndex. |
242 | -- An exception is raised if CuIndex <0 or > NbCurves. |
243 | -- An exception is raised if the curve dimension is 3d. |
244 | |
245 | raises OutOfRange from Standard, |
246 | DimensionError from Standard |
247 | is virtual; |
248 | |
249 | |
250 | D1(me; CuIndex: Integer; U: Real; Pt: out Pnt2d; V1: out Vec2d) |
251 | ---Purpose: returns the value of the point with a parameter U |
252 | -- on the Bezier curve number CuIndex. |
253 | -- An exception is raised if CuIndex <0 or > NbCurves. |
254 | -- An exception is raised if the curve dimension is 2d. |
255 | |
256 | raises OutOfRange from Standard, |
257 | DimensionError from Standard |
258 | is virtual; |
259 | |
260 | D2(me; CuIndex: Integer; U: Real; Pt: out Pnt; V1: out Vec; V2: out Vec) |
261 | ---Purpose: returns the value of the point with a parameter U |
262 | -- on the Bezier curve number CuIndex. |
263 | -- An exception is raised if CuIndex <0 or > NbCurves. |
264 | -- An exception is raised if the curve dimension is 3d. |
265 | |
266 | raises OutOfRange from Standard, |
267 | DimensionError from Standard |
268 | is virtual; |
269 | |
270 | |
271 | D2(me; CuIndex: Integer; U: Real; Pt: out Pnt2d; |
272 | V1: out Vec2d; V2: out Vec2d) |
273 | ---Purpose: returns the value of the point with a parameter U |
274 | -- on the Bezier curve number CuIndex. |
275 | -- An exception is raised if CuIndex <0 or > NbCurves. |
276 | -- An exception is raised if the curve dimension is 2d. |
277 | |
278 | raises OutOfRange from Standard, |
279 | DimensionError from Standard |
280 | is virtual; |
281 | |
282 | |
283 | Dump(me; o: in out OStream) |
284 | ---Purpose: Prints on the stream o information on the current |
285 | -- state of the object. |
286 | -- Is used to redefine the operator <<. |
287 | |
288 | is virtual; |
289 | |
290 | |
291 | fields |
292 | |
293 | tabPoint: HArray1OfMultiPoint from AppParCurves is protected; |
294 | |
295 | |
296 | end MultiCurve; |