/
BSplineCurvePy.xml
396 lines (377 loc) · 13.5 KB
/
BSplineCurvePy.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<?xml version="1.0" encoding="UTF-8"?>
<GenerateModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="generateMetaModel_Module.xsd">
<PythonExport
Father="GeometryCurvePy"
Name="BSplineCurvePy"
Twin="GeomBSplineCurve"
TwinPointer="GeomBSplineCurve"
Include="Mod/Part/App/Geometry.h"
Namespace="Part"
FatherInclude="Mod/Part/App/GeometryCurvePy.h"
FatherNamespace="Part"
Constructor="true">
<Documentation>
<Author Licence="LGPL" Name="Werner Mayer" EMail="wmayer@users.sourceforge.net" />
<UserDocu>Describes a B-Spline curve in 3D space</UserDocu>
</Documentation>
<Attribute Name="Degree" ReadOnly="true">
<Documentation>
<UserDocu>Returns the polynomial degree of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="Degree" Type="Int"/>
</Attribute>
<Attribute Name="MaxDegree" ReadOnly="true">
<Documentation>
<UserDocu>Returns the value of the maximum polynomial degree of any
B-Spline curve curve. This value is 25.</UserDocu>
</Documentation>
<Parameter Name="MaxDegree" Type="Int"/>
</Attribute>
<Attribute Name="NbPoles" ReadOnly="true">
<Documentation>
<UserDocu>Returns the number of poles of this B-Spline curve.
</UserDocu>
</Documentation>
<Parameter Name="NbPoles" Type="Int"/>
</Attribute>
<Attribute Name="NbKnots" ReadOnly="true">
<Documentation>
<UserDocu>
Returns the number of knots of this B-Spline curve.
</UserDocu>
</Documentation>
<Parameter Name="NbPoles" Type="Int"/>
</Attribute>
<Attribute Name="StartPoint" ReadOnly="true">
<Documentation>
<UserDocu>Returns the start point of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="StartPoint" Type="Object"/>
</Attribute>
<Attribute Name="EndPoint" ReadOnly="true">
<Documentation>
<UserDocu>Returns the end point of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="EndPoint" Type="Object"/>
</Attribute>
<Attribute Name="FirstUKnotIndex" ReadOnly="true">
<Documentation>
<UserDocu>Returns the index in the knot array of the knot
corresponding to the first or last parameter
of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="FirstUKnotIndex" Type="Object"/>
</Attribute>
<Attribute Name="LastUKnotIndex" ReadOnly="true">
<Documentation>
<UserDocu>Returns the index in the knot array of the knot
corresponding to the first or last parameter
of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="LastUKnotIndex" Type="Object"/>
</Attribute>
<Attribute Name="KnotSequence" ReadOnly="true">
<Documentation>
<UserDocu>Returns the knots sequence of this B-Spline curve.</UserDocu>
</Documentation>
<Parameter Name="KnotSequence" Type="List"/>
</Attribute>
<Methode Name="isRational">
<Documentation>
<UserDocu>
Returns true if this B-Spline curve is rational.
A B-Spline curve is rational if, at the time of construction,
the weight table has been initialized.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="isPeriodic">
<Documentation>
<UserDocu>Returns true if this BSpline curve is periodic.</UserDocu>
</Documentation>
</Methode>
<Methode Name="isClosed">
<Documentation>
<UserDocu>
Returns true if the distance between the start point and end point of
this B-Spline curve is less than or equal to gp::Resolution().
</UserDocu>
</Documentation>
</Methode>
<Methode Name="increaseDegree">
<Documentation>
<UserDocu>increase(Int=Degree)
Increases the degree of this B-Spline curve to Degree.
As a result, the poles, weights and multiplicities tables
are modified; the knots table is not changed. Nothing is
done if Degree is less than or equal to the current degree.</UserDocu>
</Documentation>
</Methode>
<Methode Name="increaseMultiplicity">
<Documentation>
<UserDocu>
increaseMultiplicity(int index, int mult)
increaseMultiplicity(int start, int end, int mult)
Increases multiplicity of knots up to mult.
index: the index of a knot to modify (1-based)
start, end: index range of knots to modify.
If mult is lower or equal to the current multiplicity nothing is done. If mult is higher than the degree the degree is used.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="incrementMultiplicity">
<Documentation>
<UserDocu>
incrementMultiplicity(int start, int end, int mult)
Raises multiplicity of knots by mult.
start, end: index range of knots to modify.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="insertKnot">
<Documentation>
<UserDocu>
insertKnot(u, mult = 1, tol = 0.0)
Inserts a knot value in the sequence of knots. If u is an existing knot the
multiplicity is increased by mult. </UserDocu>
</Documentation>
</Methode>
<Methode Name="insertKnots">
<Documentation>
<UserDocu>
insertKnots(list_of_floats, list_of_ints, tol = 0.0, bool_add = True)
Inserts a set of knots values in the sequence of knots.
For each u = list_of_floats[i], mult = list_of_ints[i]
If u is an existing knot the multiplicity is increased by mult if bool_add is
True, otherwise increased to mult.
If u is not on the parameter range nothing is done.
If the multiplicity is negative or null nothing is done. The new multiplicity
is limited to the degree.
The tolerance criterion for knots equality is the max of Epsilon(U) and ParametricTolerance.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="removeKnot">
<Documentation>
<UserDocu>
removeKnot(Index, M, tol)
Reduces the multiplicity of the knot of index Index to M.
If M is equal to 0, the knot is removed.
With a modification of this type, the array of poles is also modified.
Two different algorithms are systematically used to compute the new
poles of the curve. If, for each pole, the distance between the pole
calculated using the first algorithm and the same pole calculated using
the second algorithm, is less than Tolerance, this ensures that the curve
is not modified by more than Tolerance. Under these conditions, true is
returned; otherwise, false is returned.
A low tolerance is used to prevent modification of the curve.
A high tolerance is used to 'smooth' the curve.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="segment">
<Documentation>
<UserDocu>
segment(u1,u2)
Modifies this B-Spline curve by segmenting it.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setKnot">
<Documentation>
<UserDocu>Set a knot of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getKnot">
<Documentation>
<UserDocu>Get a knot of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setKnots">
<Documentation>
<UserDocu>Set knots of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getKnots">
<Documentation>
<UserDocu>Get all knots of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setPole">
<Documentation>
<UserDocu>Modifies this B-Spline curve by assigning P
to the pole of index Index in the poles table.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getPole">
<Documentation>
<UserDocu>Get a pole of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getPoles">
<Documentation>
<UserDocu>Get all poles of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setWeight">
<Documentation>
<UserDocu>Set a weight of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getWeight">
<Documentation>
<UserDocu>Get a weight of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getWeights">
<Documentation>
<UserDocu>Get all weights of the B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getPolesAndWeights">
<Documentation>
<UserDocu>Returns the table of poles and weights in homogenous ccordinates.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getResolution" Const="true">
<Documentation>
<UserDocu>Computes for this B-Spline curve the parametric tolerance (UTolerance)
for a given 3D tolerance (Tolerance3D).
If f(t) is the equation of this B-Spline curve, the parametric tolerance
ensures that:
|t1-t0| < UTolerance =""==> |f(t1)-f(t0)| < Tolerance3D</UserDocu>
</Documentation>
</Methode>
<Methode Name="movePoint">
<Documentation>
<UserDocu>
movePoint(U, P, Index1, Index2)
Moves the point of parameter U of this B-Spline curve to P.
Index1 and Index2 are the indexes in the table of poles of this B-Spline curve
of the first and last poles designated to be moved.
Returns: (FirstModifiedPole, LastModifiedPole). They are the indexes of the
first and last poles which are effectively modified.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setNotPeriodic">
<Documentation>
<UserDocu>Changes this B-Spline curve into a non-periodic curve.
If this curve is already non-periodic, it is not modified.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setPeriodic">
<Documentation>
<UserDocu>Changes this B-Spline curve into a periodic curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="setOrigin">
<Documentation>
<UserDocu>Assigns the knot of index Index in the knots table
as the origin of this periodic B-Spline curve. As a consequence,
the knots and poles tables are modified.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getMultiplicity">
<Documentation>
<UserDocu>Returns the multiplicity of the knot of index
from the knots table of this B-Spline curve.</UserDocu>
</Documentation>
</Methode>
<Methode Name="getMultiplicities">
<Documentation>
<UserDocu>
Returns the multiplicities table M of the knots of this B-Spline curve.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="approximate">
<Documentation>
<UserDocu>
approximate(list_of_points):
Replaces this B-Spline curve by approximating a set of points.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="interpolate" Keyword="true">
<Documentation>
<UserDocu>
interpolate(list_of_points, parameters = None, bool periodic = False, float tolerance = 1e-6,
tangent1 = None, tangent2 = None)
Replaces this B-Spline curve by interpolating a set of points.
Continuity of the spline defaults to C2. However, if periodic, or tangents
are supplied, the continuity will drop to C1.
tangent1, tangent2 specify tangent vectors for starting and ending points
of the BSpline. Either none, or both must be specified.
parameters is an optional KnotSequence. If not supplied, the function defaults to a
chord-length parameterization.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="buildFromPoles">
<Documentation>
<UserDocu>
Builds a B-Spline by a list of poles.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="buildFromPolesMultsKnots" Keyword="true">
<Documentation>
<UserDocu>
Builds a B-Spline by a lists of Poles, Mults, Knots.
arguments: poles (sequence of Base.Vector), [mults , knots, periodic, degree, weights (sequence of float), CheckRational]
Examples:
from FreeCAD import Base
import Part
V=Base.Vector
poles=[V(-10,-10),V(10,-10),V(10,10),V(-10,10)]
# non-periodic spline
n=Part.BSplineCurve()
n.buildFromPolesMultsKnots(poles,(3,1,3),(0,0.5,1),False,2)
Part.show(n.toShape())
# periodic spline
p=Part.BSplineCurve()
p.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2)
Part.show(p.toShape())
# periodic and rational spline
r=Part.BSplineCurve()
r.buildFromPolesMultsKnots(poles,(1,1,1,1,1),(0,0.25,0.5,0.75,1),True,2,(1,0.8,0.7,0.2))
Part.show(r.toShape())
</UserDocu>
</Documentation>
</Methode>
<Methode Name="toBezier">
<Documentation>
<UserDocu>
Build a list of Bezier splines.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="toBiArcs">
<Documentation>
<UserDocu>
Build a list of arcs and lines to approximate the b-spline.
toBiArcs(tolerance) -> list.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="join">
<Documentation>
<UserDocu>
Build a new spline by joining this and a second spline.
</UserDocu>
</Documentation>
</Methode>
<Methode Name="makeC1Continuous">
<Documentation>
<UserDocu>
makeC1Continuous(tol = 1e-6, ang_tol = 1e-7)
Reduces as far as possible the multiplicities of the knots of this BSpline
(keeping the geometry). It returns a new BSpline, which could still be C0.
tol is a geometrical tolerance.
The tol_ang is angular tolerance, in radians. It sets tolerable angle mismatch
of the tangents on the left and on the right to decide if the curve is G1 or
not at a given point.
</UserDocu>
</Documentation>
</Methode>
</PythonExport>
</GenerateModel>