[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14162] trunk/blender/source/blender/ python/api2_2x: patch from Paul Rotering (pryon)
Campbell Barton
ideasman42 at gmail.com
Tue Mar 18 14:42:38 CET 2008
Revision: 14162
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14162
Author: campbellbarton
Date: 2008-03-18 14:42:38 +0100 (Tue, 18 Mar 2008)
Log Message:
-----------
patch from Paul Rotering (pryon)
[#7124] knot vector access for SurfNurb
Modified Paths:
--------------
trunk/blender/source/blender/python/api2_2x/SurfNurb.c
trunk/blender/source/blender/python/api2_2x/doc/Curve.py
Modified: trunk/blender/source/blender/python/api2_2x/SurfNurb.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/SurfNurb.c 2008-03-18 10:55:07 UTC (rev 14161)
+++ trunk/blender/source/blender/python/api2_2x/SurfNurb.c 2008-03-18 13:42:38 UTC (rev 14162)
@@ -1,5 +1,5 @@
/*
- * $Id: SurfNurb.c 11400 2007-07-28 09:26:53Z campbellbarton $
+ * $Id$
* ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
*
* This program is free software; you can redistribute it and/or
@@ -46,6 +46,8 @@
static int SurfNurb_length( PyInstanceObject * inst );
static PyObject *SurfNurb_getIter( BPy_SurfNurb * self );
static PyObject *SurfNurb_iterNext( BPy_SurfNurb * self );
+static PyObject *SurfNurb_getKnotsU( BPy_SurfNurb * self );
+static PyObject *SurfNurb_getKnotsV( BPy_SurfNurb * self );
PyObject *SurfNurb_append( BPy_SurfNurb * self, PyObject * args );
char M_SurfNurb_doc[] = "SurfNurb";
@@ -487,8 +489,60 @@
return 0;
}
+/*
+ * SurfNurb_getKnotsU
+ *
+ * Returns surface's knotsU in a tuple. Empty tuple is returned if
+ * surface isn't Nurbs or it doesn't have knots in U
+ */
+static PyObject *SurfNurb_getKnotsU( BPy_SurfNurb * self )
+{
+ if(self->nurb->knotsu) {
+ int len = KNOTSU(self->nurb);
+ int i;
+ PyObject *knotsu = PyTuple_New(len);
+ if( !knotsu )
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "could not get SurfNurb.knotsU attribute" );
+
+ for(i = 0; i < len; ++i)
+ PyTuple_SetItem(knotsu, i,
+ PyFloat_FromDouble(self->nurb->knotsu[i]));
+
+ return knotsu;
+ }
+ return PyTuple_New(0);
+}
+
/*
+ * SurfNurb_getKnotsV
+ *
+ * Returns surface's knotsV in a tuple. Empty tuple is returned if
+ * curve doesn't have knots in V
+ */
+
+static PyObject *SurfNurb_getKnotsV( BPy_SurfNurb * self )
+{
+ if(self->nurb->knotsv) {
+ int len = KNOTSV(self->nurb);
+ int i;
+ PyObject *knotsv = PyTuple_New(len);
+ if( !knotsv )
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "could not get SurfNurb.knotsV index" );
+
+ for(i = 0; i < len; ++i)
+ PyTuple_SetItem(knotsv, i,
+ PyFloat_FromDouble(self->nurb->knotsv[i] ));
+
+ return knotsv;
+ }
+ return PyTuple_New(0);
+}
+
+
+/*
* SurfNurb_getIter
*
* create an iterator for our SurfNurb.
@@ -723,6 +777,15 @@
{"orderV",
(getter)SurfNurb_getOrderV, (setter)SurfNurb_setOrderV,
"order setting for V direction", NULL},
+ {"knotsU",
+ (getter)SurfNurb_getKnotsU, (setter)NULL,
+ "The The knot vector in the U direction",
+ NULL},
+ {"knotsV",
+ (getter)SurfNurb_getKnotsV, (setter)NULL,
+ "The The knot vector in the V direction",
+ NULL},
+
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
Modified: trunk/blender/source/blender/python/api2_2x/doc/Curve.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Curve.py 2008-03-18 10:55:07 UTC (rev 14161)
+++ trunk/blender/source/blender/python/api2_2x/doc/Curve.py 2008-03-18 13:42:38 UTC (rev 14162)
@@ -694,6 +694,10 @@
@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 The knot vector in the U direction
+ @type knotsU: tuple
+ @ivar knotsV: The The knot vector in the V direction
+ @type knotsV: tuple
"""
def __setitem__( n, point ):
More information about the Bf-blender-cvs
mailing list