Welcome to mirror list, hosted at ThFree Co, Russian Federation.

Curve.py « doc « api2_2x « python « blender « source - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c3760bc2c1deb8b872d1dfc9a2039d2c749c2b18 (plain)
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
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
# Blender.Curve module and the Curve PyType object

"""
The Blender.Curve submodule.

Curve Data
==========

This module provides access to B{Curve Data} objects in Blender.

A Blender Curve Data consists of multiple L{CurNurb}(s). Try converting a Text object to a Curve to see an example of this.   Each curve is of
type Bezier or Nurb.  The underlying L{CurNurb}(s) can be accessed with
the [] operator.  Operator [] returns an object of type L{CurNurb}. Removing a L{CurNurb} can be done this way too. del curve[0] removes the first curve.

Note that L{CurNurb} can be used to acces a curve of any type (Poly, Bezier or Nurb)

The Curve module also supports the Python iterator interface.  This means you
can access the L{CurNurb}(s) in a Curve and the control points in a L{CurNurb} using a
Python B{for} statement.


Add a Curve to a Scene Example::
	from Blender import Curve, Object, Scene
	cu = Curve.New()             # create new  curve data
	scn = Scene.GetCurrent()    # get current scene
	ob = scn.objects.new(cu)     # make a new curve from the curve data

Iterator Example::
	from Blender import Curve, Object, Scene
	scn = Scene.GetCurrent()    # get current scene
	ob = scn.objects.active
	curvedata = ob.data
	for curnurb in curvedata:
		print type( curnurb ), curnurb
		for point in curnurb:
			print type( point ), point

Creating a Curve from a list of Vec triples Examples::
	from Blender import *
	def bezList2Curve(bezier_vecs):
		'''
		Take a list or vector triples and converts them into a bezier curve object
		'''
		
		def bezFromVecs(vecs):
			'''
			Bezier triple from 3 vecs, shortcut functon
			'''
			bt= BezTriple.New(\
			vecs[0].x, vecs[0].y, vecs[0].z,\
			vecs[1].x, vecs[1].y, vecs[1].z,\
			vecs[2].x, vecs[2].y, vecs[2].z)
			
			bt.handleTypes= (BezTriple.HandleTypes.FREE, BezTriple.HandleTypes.FREE)
			
			return bt
		
		# Create the curve data with one point
		cu= Curve.New()
		cu.appendNurb(bezFromVecs(bezier_vecs[0])) # We must add with a point to start with
		cu_nurb= cu[0] # Get the first curve just added in the CurveData
		
		
		i= 1 # skip first vec triple because it was used to init the curve
		while i<len(bezier_vecs):
			bt_vec_triple= bezier_vecs[i]
			bt= bezFromVecs(bt_vec_triple)
			cu_nurb.append(bt)
			i+=1
		
		# Add the Curve into the scene
		scn= Scene.GetCurrent()
		ob = scn.objects.new(cu)
		return ob
"""

def New ( name):
		"""
	Create a new Curve Data object.
	@type name: string
	@param name: The Curve Data name.
	@rtype: Blender Curve
	@return: The created Curve Data object.
	"""

def Get (name = None):
	"""
	Get the Curve Data object(s) from Blender.
	@type name: string
	@param name: The name of the Curve Data.
	@rtype: Blender Curve or a list of Blender Curves
	@return: It depends on the 'name' parameter:
				- (name): The Curve Data object with the given name;
				- ():     A list with all Curve Data objects in the current scene.
	"""

class Curve:
	"""
	The Curve Data object
	=====================
	This object gives access to Curve and Surface data linked from Blender Objects.
	
	@ivar name: The Curve Data name.
	@type name: string
	@ivar pathlen: The Curve Data path length, used to set the number of frames for an animation (not the physical length).
	@type pathlen: int
	@ivar totcol: The Curve Data maximal number of linked materials. Read-only.
	@type totcol: int
	@ivar flag: The Curve Data flag value; see L{getFlag()} for the semantics.
	@ivar bevresol: The Curve Data bevel resolution. [0 - 32]
	@type bevresol: int
	@ivar resolu: The Curve Data U-resolution (used for curve and surface resolution) [0 - 1024].
	@type resolu: int
	@ivar resolv: The Curve Data V-resolution (used for surface resolution) [0 - 1024].
	@type resolv: int
	@ivar width: The Curve Data width [0 - 2].
	@type width: float
	@ivar ext1: The Curve Data extent1 Called "Extrude" in the user interface (for bevels only).
	@type ext1: float
	@ivar ext2: The Curve Data extent2 - Called "Bevel Depth" in the user interface (for bevels only).
	@type ext2: float
	@ivar loc: The Curve Data location(from the center).
	@type loc: list of 3 floats
	@ivar rot: The Curve Data rotation(from the center).
	@type rot: list of 3 floats
	@ivar size: The Curve Data size(from the center).
	@type size: list of 3 floats
	@ivar bevob: The Curve Bevel Object
	@type bevob: Blender L{Object<Object.Object>} or None
	@ivar taperob: The Curve Taper Object
	@type taperob: Blender L{Object<Object.Object>} or None
	@ivar key: The Key object associated with this Curve, if any.
	@type key: Blender L{Key<Key.Key>}
	@ivar materials: The curves's materials.  Each curve can reference up to
		16 materials.  Empty slots in the curve's list are represented by B{None}.
		B{Note}: L{Object.colbits<Object.Object.colbits>} needs to be set correctly
		for each object in order for these materials to be used instead of
		the object's materials.
		B{Note}: The list that's returned is I{not} linked to the original curve.
		curve.materials.append(material) won't do anything.
		Use curve.materials += [material] instead.
	@type materials: list of L{Material}s
	"""

	def getName():
		"""
		Get the name of this Curve Data object.
		@rtype: string
		"""

	def setName(name):
		"""
		Set the name of this Curve Data object.
		@rtype: None
		@type name: string
		@param name: The new name.
		"""

	def getPathLen():
		"""
		Get this Curve's path frame length, used for an animated path.
		@rtype: int
		@return: the path length.
		"""

	def setPathLen(len):
		"""
		Set this Curve's path length.
		@rtype: None
		@type len: int
		@param len: the new curve's length.
		"""

	def getTotcol():
		"""
		Get the number of materials linked to the Curve.
		@rtype: int
		@return: number of materials linked.
		"""

	def setTotcol(totcol):
		"""
		Set the number of materials linked to the Curve.  B{Note}: this method
		will probably be deprecated in the future.
		@rtype: None
		@type totcol: int
		@param totcol: number of materials linked.
		@warn: It is not advisable to use this method unless you know what you
		are doing; it's possible to
		corrupt a .blend file if you don't know what you're doing.  If you want
		to change the number of materials, use the L{materials} attribute.
		"""

	def getFlag():
		"""
		Get the Curve flag value.   
		This item is a bitfield whose value is a combination of the following parameters.
			- Bit 0 :  "3D" is set
			- Bit 1 :  "Front" is set
			- Bit 2 :  "Back" is set
			- Bit 3 :  "CurvePath" is set.
			- Bit 4 :  "CurveFollow" is set.
			
		@rtype: integer bitfield
		"""

	def setFlag(val):
		"""
		Set the Curve flag value.  The flag corresponds to the Blender settings for 3D, Front, Back, CurvePath and CurveFollow.  This parameter is a bitfield.
		@rtype: None
		@type val: integer bitfield
		@param val : The Curve's flag bits.  See L{getFlag} for the meaning of the individual bits.
		"""

	def getBevresol():
		"""
		Get the Curve's bevel resolution value.
		@rtype: float
		"""

	def setBevresol(bevelresol):
		"""
		Set the Curve's bevel resolution value.
		@rtype: None
		@type bevelresol: float
		@param bevelresol: The new Curve's bevel resolution value.
		"""

	def getResolu():
		"""
		Get the Curve's U-resolution value.
		@rtype: float
		"""

	def setResolu(resolu):
		"""
		Set the Curve's U-resolution value. [0 - 1024]
		This is used for surfaces and curves.
		@rtype: None
		@type resolu: float
		@param resolu: The new Curve's U-resolution value.
		"""

	def getResolv():
		"""
		Get the Curve's V-resolution value.
		@rtype: float
		"""

	def setResolv(resolv):
		"""
		Set the Curve's V-resolution value. [0 - 1024].
		This is used for surfaces only.
		@rtype: None
		@type resolv: float
		@param resolv: The new Curve's V-resolution value.
		"""

	def getWidth():
		"""
		Get the Curve's width value.
		@rtype: float
		"""

	def setWidth(width):
		"""
		Set the Curve's width value. 
		@rtype: None
		@type width: float
		@param width: The new Curve's width value. 
		"""

	def getExt1():
		"""
		Get the Curve's ext1 value.
		@rtype: float
		"""

	def setExt1(ext1):
		"""
		Set the Curve's ext1 value. 
		@rtype: None
		@type ext1: float
		@param ext1: The new Curve's ext1 value. 
		"""

	def getExt2():
		"""
		Get the Curve's ext2 value.
		@rtype: float
		"""

	def setExt2(ext2):
		"""
		Set the Curve's ext2 value.
		@rtype: None 
		@type ext2: float
		@param ext2: The new Curve's ext2 value. 
		"""

	def getControlPoint(numcurve,numpoint):
		"""
		Get the curve's control point value (B{deprecated}).  The numpoint arg
		is an index into the list of points and starts with 0.  B{Note}: new
		scripts should use the [] operator on Curves and CurNurbs.  Example::
			curve = Blender.Curve.Get('Curve')
			p0 = curve[0][0]    # get first point from first nurb
						# -- OR --
			nurb = curve[0]     # get first nurb
			p0 = nurb[0]        # get nurb's first point

		@type numcurve: int
		@type numpoint: int
		@rtype: list of floats
		@return: depends upon the curve's type.
			- type Bezier : a list of nine floats.  Values are x, y, z for handle-1, vertex and handle-2 
			- type Nurb : a list of 4 floats.  Values are x, y, z, w.

		"""

	def setControlPoint( numcurve, numpoint, controlpoint):
		"""
		Set the Curve's controlpoint value.   The numpoint arg is an index into the list of points and starts with 0.
		@rtype: None
		@type numcurve: int
		@type numpoint: int
		@type controlpoint: list
		@param numcurve: index for spline in Curve, starting from 0
		@param numpoint: index for point in spline, starting from 0
		@param controlpoint: The new controlpoint value.
		See L{getControlPoint} for the length of the list.
		"""

	def appendPoint( numcurve, new_control_point ):
		"""
		Add a new control point to the indicated curve (B{deprecated}).
		New scripts should use L{CurNurb.append()}.
		@rtype: None
		@type numcurve: int
		@type new_control_point: list of floats or BezTriple
		@param numcurve:  index for spline in Curve, starting from 0
		@param new_control_point: depends on curve's type.
			- type Bezier: a BezTriple 
			- type Nurb: a list of four or five floats for the xyzw values
		@raise AttributeError:  throws exception if numcurve is out of range.
		"""

	def appendNurb( new_point ):
		"""
		add a new curve to this Curve.  The new point is added to the new curve.  Blender does not support a curve with zero points.  The new curve is added to the end of the list of curves in the Curve.
		@rtype: CurNurb
		@return: the newly added spline
		@type new_point: BezTriple or list of xyzw coordinates for a Nurb curve.
		@param new_point: see L{CurNurb.append} for description of parameter.
		"""

	def getLoc():
		"""
		Get the curve's location value.
		@rtype: a list of 3 floats.
		"""

	def setLoc(location):
		"""
		Set the curve's location value.
		@rtype: None 
		@type location: list[3]
		@param location: The new Curve's location values. 
		"""

	def getRot():
		"""
		Get the curve's rotation value.
		@rtype: a list of 3 floats.
		"""

	def setRot(rotation):
		"""
		Set the Curve's rotation value. 
		@rtype: None
		@type rotation: list[3]
		@param rotation: The new Curve's rotation values. 
		"""

	def getSize():
		"""
		Get the curve's size value.
		@rtype: a list of 3 floats.
		"""

	def setSize(size):
		"""
		Set the curve size value.
		@rtype: None 
		@type size: list[3]
		@param size: The new Curve's size values. 
		"""

	def getMaterials():
		"""
		Returns a list of materials assigned to the Curve.
		@rtype: list of Material Objects
		@return: list of Material Objects assigned to the Curve.
		"""

	def getBevOb():
		"""
		Returns the Bevel Object (BevOb) assigned to the Curve.
		@rtype: Blender Object or None
		@return: Bevel Object (BevOb) assigned to the Curve.
		"""

	def setBevOb( object ):
		"""
		Assign a Bevel Object (BevOb) to the Curve.  Passing None as the object parameter removes the bevel.
		@rtype: None
		@return: None
		@type object: Curve type Blender Object
		@param object: Blender Object to assign as Bevel Object (BevOb)
		@raise TypeError: throws exception if the parameter is not a Curve type Blender Object or None
		"""

	def getTaperOb():
		"""
		Returns the Taper Object (TaperOb) assigned to the Curve.
		@rtype: Blender Object or None
		@return: Taper Object (TaperOb) assigned to the Curve.
		"""

	def setTaperOb( object ):
		"""
		Assign a Taper Object (TaperOb) to the Curve.  Passing None as the object parameter removes the taper.
		@rtype: None
		@return: None
		@type object: Curve type Blender Object
		@param object: Blender Object to assign as Taper Object (TaperOb)
		@raise TypeError: throws exception if the parameter is not a Curve type Blender Object or None
		"""

	def update():
		"""
		Updates display list for a Curve.
		Used after making changes to control points.
		You B{must} use this if you want to see your changes!
		@rtype: None
		@return: None
		"""

	def isNurb( curve_num ):
		"""
		Tells type of a CurNurb (B{deprecated}).
		New scripts should use L{CurNurb.isNurb()}.

		@rtype: integer
		@return:  Zero if curve is type Bezier, one if curve is of type Nurb.
		@type curve_num: integer
		@param curve_num: zero-based index into list of curves in this Curve.
		@raise AttributeError:  throws exception if curve_num is out of range.
		"""

	def isCyclic( curve_num ):
		"""
		Tells whether or not a CurNurb is cyclic (closed) (B{deprecated}).
		New scripts should use L{CurNurb.isCyclic()}.

		@rtype: boolean
		@return: True if is cyclic, False if not
		@type curve_num: integer
		@param curve_num: zero-based index into list of curves in this Curve
		@raise AttributeError:  throws exception if curve_num is out of range.
		"""

	def switchDirection( ):
		"""
		Reverse the direction of a curve.
		@return: None

		I{B{Example:}}
		# This example switches the direction of all curves on the active object.
		from Blender import *
		scn = Scene.GetCurrent()
		ob = scn.objects.active # must be a curve
		data = ob.data
		for cu in data: cu.switchDirection()
		"""

	def getNumCurves():
		"""
		Get the number of curves in this Curve Data object.
		@rtype: integer
		"""

	def getNumPoints( curve_num ):
		"""
		Get the number of control points in the curve (B{deprecated}).
		New scripts should use the len operator (I{len(curve)}).
		@type curve_num: integer
		@param curve_num: zero-based index into list of curves in this Curve
		@rtype: integer
		"""

	def getKey():
		"""
		Return the L{Key<Key.Key>} object containing the keyframes for this
		curve, if any.
		@rtype: L{Key<Key.Key>} object or None
		"""

	def recalc():
		"""
		Recalculate control point handles after a curve has been changed.
		@rtype: None
		"""

	def __copy__ ():
		"""
		Make a copy of this curve
		@rtype: Curve
		@return:  a copy of this curve
		"""

class CurNurb:
	"""
	The CurNurb Object
	==================
	This object provides access to the control points of the curves that make up a Blender Curve ObData.

	The CurNurb supports the python iterator protocol which means you can use a python for statement to access the points in a curve.

	The CurNurb also supports the sequence protocol which means you can access the control points of a CurNurb using the [] operator.

	Note that CurNurb is used for accesing poly, bezier and nurbs type curves.

	@ivar flagU: The CurNurb knot flag U.  See L{setFlagU} for description.
	@type flagU: int
	@ivar flagV: The CurNurb knot flag V.  See L{setFlagU} for description.
	@type flagV: int
	@ivar type: The type of the curve (Poly: 0, Bezier: 1, NURBS: 4)
	@type type: int
	@ivar knotsU: The knot vector in the U direction. The tuple will be empty
	if the curve isn't a NURB or doesn't have knots in this direction.
	@type knotsU: tuple of floats
	@ivar knotsV: The knot vector in the V direction. The tuple will be empty
	if the curve isn't a NURB or doesn't have knots in this direction.
	@type knotsV: tuple of floats
	@ivar smooth: Set the smoothing for this curve (applies to cuve objects that have a bevel)
	@type smooth: bool
	"""

	def __setitem__( n, point ):
		"""
		Replace the Nth point in the curve. The type of the argument must match the type of the curve. List of 4 floats (optional 5th float is the tilt value in radians) for Nurbs or BezTriple for Bezier.
		@rtype: None
		@return: None
		@type n: integer
		@param n: the index of the element to replace
		@type point: BezTriple or list of 4 floats (optional 5th float is the tilt value in radians)
		@param point: the point that will replace the one in the curve.  The point can be either a BezTriple type or a list of 4 floats in x,y,z,w (optionally tilt in radians as 5th value) format for a Nurb curve.
		"""

	def __getitem__( n ):
		"""
		Get the Nth element in the curve. For Bezier curves, that element is a BezTriple. For the rest (Poly and Nurbs), it is a list of 5 floats: x, y, z, weight, tilt (in radians). NOTE 1: This element is independent on the curve, modifying it will not affect the curve. NOTE 2: Each successive call returns a new object.
		@rtype: BezTriple (Bezier Curve) or List of 5 floats [x, y, z, w, t] for Poly or Nurbs
		@return: The Nth element in the curve
		@type n: integer
		@param n: the index of the element to return
		"""

	def append( new_point ):
		"""
		Appends a new point to a curve.  This method appends points to both Bezier and Nurb curves. The type of the argument must match the type of the curve. List of 4 floats (optional 5th float is the tilt value in radians) for Nurbs or BezTriple for Bezier.
		@rtype: None
		@return: None
		@type new_point: BezTriple or list of 4 floats (optional 5th float is the tilt value in radians)
		@param new_point: the new point to be appended to the curve.  The new point can be either a BezTriple type or a list of 4 floats in x,y,z,w (optionally tilt in radians as 5th value) format for a Nurb curve.
		"""

	def setMatIndex( index ):
		"""
		Sets the Material index for this CurNurb.
		@rtype: None
		@return: None
		@type index:  integer
		@param index: the new value for the Material number of this CurNurb.  No range checking is done.
		"""

	def getMatIndex():
		"""
		Returns the Material index for this CurNurb.
		@rtype: integer
		@return: integer
		"""

	def isNurb():
		"""
		Boolean method used to determine whether a CurNurb is of type Bezier or of type Nurb.
		@rtype: boolean
		@return:  True or False
		"""

	def isCyclic():
		"""
		Boolean method checks whether a CurNurb is cyclic (a closed curve) or not.
		@rtype: boolean
		@return: True or False
		"""

	def getFlagU():
		"""
		Get the CurNurb knot flag U.  
		@rtype: integer
		@return: See L{setFlagU} for description of return value.
		"""

	def setFlagU( flag ):
		"""
		Set the entire CurNurb knot flag U (knots are recalculated automatically).
		The flag can be one of six values:
				 - 0 or 1: uniform knots
				 - 2 or 3: endpoints knots
				 - 4 or 5: bezier knots
		Bit 0 controls whether or not the curve is cyclic (1 = cyclic).
		@type flag: integer
		@param flag: CurNurb knot flag
		@rtype: None
		@return: None
		"""

	def getFlagV():
		"""
		Get the CurNurb knot flag V.
		@rtype: integer
		@return: See L{setFlagU} for description of return value.
		"""

	def setFlagV( value ):
		"""
		Set the CurNurb knot flag V (knots are recalculated automatically).
		@type value: integer
		@param value: See L{setFlagU} for description of return.
		@rtype: None
		@return: None
		"""

	def getType():
		"""
		Get the type of the curve.
		@rtype: integer
		@return:  0 - Poly, 1 - Bezier, 4 - NURBS
		"""

	def setType( value ):
		"""
		Set the type of the curve and converts the curve to its new type if needed
		@type value: integer
		@param value: CurNurb type flag (0 - Poly, 1 - Bezier, 4 - NURBS)
		@rtype: None
		@return: None
		"""

class SurfNurb:
	"""
	The SurfNurb Object
	===================
	This object provides access to the control points of the surfaces that make
	up a Blender Curve.

	The SurfNurb supports the Python iterator and sequence protocols which
	means you can use a python B{for} statement or [] operator to access the
	points in a surface.  Points are accessed linearly; for a N-by-M UV surface,
	the first N control points correspond to V=0, then second N to V=1, and so
	on.

	@ivar flagU: The knot flag U.  Changing the knot type automatically
	recalculates the knots.  The flag can be one of three values:
					 - 0 : uniform knots
					 - 1 : endpoints knots
					 - 2 : bezier knots
	@type flagU: int
	@ivar flagV: The knot flag V.  See L{flagU} for description.
	@type flagV: int
	@ivar pointsU: The number of control points in the U direction (read only).
	@type pointsU: int
	@ivar pointsV: The number of control points in the V direction (read only).
	@type pointsV: int
	@ivar cyclicU: The cyclic setting for the U direction (True = cyclic).
	@type cyclicU: boolean
	@ivar cyclicV: The cyclic setting for the V direction (True = cyclic).
	@type cyclicV: boolean
	@ivar orderU: The order setting for the U direction.  Values are clamped
	to the range [2:6] and not greater than the U dimension.
	@type orderU: int
	@ivar orderV: The order setting for the V direction.  Values are clamped
	to the range [2:6] and not greater than the V dimension.
	@type orderV: int
	"""

	def __setitem__( n, point ):
		"""
		Set the Nth control point in the surface. 
		@rtype: None
		@return: None
		@type n: integer
		@param n: the index of the point to replace
		@type point: list of 4 floats (optional 5th float is the tilt value
		in radians)
		@param point: the point that will replace the one in the curve.  The
		point is  list of 4 floats in x,y,z,w (optionally tilt in radians as
		5th value) format.
		"""

	def __getitem__( n ):
		"""
		Get the Nth control point in the surface. 
		@rtype: List of 5 floats [x, y, z, w, t] for Poly or Nurbs
		@return: The Nth point in the curve
		@type n: integer
		@param n: the index of the point to return
		@note: This returned value is independent on the curve; modifying it will not affect the curve. 
		@note: Each successive call returns a new object.
		"""