 67e1188eb7
			
		
	
	67e1188eb7
	
	
	
		
			
			---------- Forgot to put sentinel at end of Curve_getseters, probably the cause of crashes on OSX (thanks Stephen!). Also add doc strings for attributes, add missing "taperob" attribute to python docs.
		
			
				
	
	
		
			722 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			722 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 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}.
 | |
| 
 | |
| 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 (for bevels).
 | |
| 	@type ext1: float
 | |
| 	@ivar ext2: The Curve Data extent2 (for bevels).
 | |
| 	@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
 | |
| 	"""
 | |
| 
 | |
| 	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
 | |
| 	@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
 | |
| 	"""
 | |
| 
 | |
| 	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.
 | |
| 		"""
 | |
| 
 |