Index: source/blender/python/api2_2x/CurNurb.c =================================================================== RCS file: /cvsroot/bf-blender/blender/source/blender/python/api2_2x/CurNurb.c,v retrieving revision 1.20 diff -u -r1.20 CurNurb.c --- source/blender/python/api2_2x/CurNurb.c 12 Jan 2007 22:40:29 -0000 1.20 +++ source/blender/python/api2_2x/CurNurb.c 20 Jan 2007 12:55:13 -0000 @@ -52,6 +52,8 @@ static PyObject *CurNurb_setFlagV( BPy_CurNurb * self, PyObject * args ); static PyObject *CurNurb_getType( BPy_CurNurb * self ); static PyObject *CurNurb_setType( BPy_CurNurb * self, PyObject * args ); +static PyObject *CurNurb_getKnotsU( BPy_CurNurb * self ); +static PyObject *CurNurb_getKnotsV( BPy_CurNurb * self ); /* static PyObject* CurNurb_setXXX( BPy_CurNurb* self, PyObject* args ); */ static int CurNurb_setPoint( BPy_CurNurb * self, int index, PyObject * ob ); static int CurNurb_length( PyInstanceObject * inst ); @@ -276,8 +278,14 @@ else if( strcmp( name, "type" ) == 0 ) attr = CurNurb_getType( self ); + else if( strcmp( name, "knotsU" ) == 0 ) + attr = CurNurb_getKnotsU( self ); + + else if( strcmp( name, "knotsV" ) == 0 ) + attr = CurNurb_getKnotsV( self ); + else if( strcmp( name, "__members__" ) == 0 ) - attr = Py_BuildValue( "[s,s,s,s,s]", "mat_index", "points", "flagU", "flagV", "type" ); + attr = Py_BuildValue( "[s,s,s,s,s,s,s]", "mat_index", "points", "flagU", "flagV", "type", "knotsU", "knotsV" ); if( !attr ) return EXPP_ReturnPyObjError( PyExc_MemoryError, @@ -711,6 +719,58 @@ Py_INCREF( Py_None ); return Py_None; +} + +/* + * CurNurb_getKnotsU + * + * returns curve's knotsU in a tuple. Empty tuple is returned if curve isn't Nurbs or it doesn't have knots in V + */ + +static PyObject *CurNurb_getKnotsU( BPy_CurNurb * self ) +{ + if(self->nurb->knotsu) { + int len = KNOTSU(self->nurb); + int i; + PyObject *knotsu = PyTuple_New(len); + for(i = 0; i < len; ++i) { + PyObject *curknot = PyFloat_FromDouble(self->nurb->knotsu[i]); + PyTuple_SetItem(knotsu, i, curknot); + } + + if( knotsu ) + return knotsu; + + return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, + "could not get CurNurb.knotsU index" ) ); + } + return PyTuple_New(0); +} + +/* + * CurNurb_getKnotsV + * + * returns curve's knotsV in a tuple. Empty tuple is returned if curve doesn't have knots in V + */ + +static PyObject *CurNurb_getKnotsV( BPy_CurNurb * self ) +{ + if(self->nurb->knotsv) { + int len = KNOTSV(self->nurb); + int i; + PyObject *knotsv = PyTuple_New(len); + for(i = 0; i < len; ++i) { + PyObject *curknot = PyFloat_FromDouble(self->nurb->knotsv[i]); + PyTuple_SetItem(knotsv, i, curknot); + } + + if( knotsv ) + return knotsv; + + return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, + "could not get CurNurb.knotsV index" ) ); + } + return PyTuple_New(0); } /*