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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/python/api2_2x/CurNurb.c20
-rw-r--r--source/blender/python/api2_2x/Curve.c46
-rw-r--r--source/blender/python/api2_2x/doc/Curve.py23
3 files changed, 86 insertions, 3 deletions
diff --git a/source/blender/python/api2_2x/CurNurb.c b/source/blender/python/api2_2x/CurNurb.c
index e04204be07f..6128519c5b4 100644
--- a/source/blender/python/api2_2x/CurNurb.c
+++ b/source/blender/python/api2_2x/CurNurb.c
@@ -63,6 +63,7 @@ static PyObject *CurNurb_iterNext( BPy_CurNurb * self );
PyObject *CurNurb_append( BPy_CurNurb * self, PyObject * args );
PyObject *CurNurb_pointAtIndex( Nurb * nurb, int index );
static PyObject *CurNurb_isNurb( BPy_CurNurb * self );
+static PyObject *CurNurb_isCyclic( BPy_CurNurb * self );
char M_CurNurb_doc[] = "CurNurb";
@@ -426,6 +427,23 @@ static PyObject *CurNurb_isNurb( BPy_CurNurb * self )
}
}
+/*
+ * CurNurb_isCyclic()
+ * test whether spline cyclic (closed) or not (open)
+ */
+
+static PyObject *CurNurb_isCyclic( BPy_CurNurb * self )
+{
+ /* supposing that the flagu is always set */
+
+ if( self->nurb->flagu & CU_CYCLIC ) {
+ Py_INCREF( Py_True );
+ return Py_True;
+ } else {
+ Py_INCREF( Py_False );
+ return ( Py_False );
+ }
+}
/*
table of module methods
@@ -463,6 +481,8 @@ static PyMethodDef BPy_CurNurb_methods[] = {
"( point ) - add a new point. arg is BezTriple or list of x,y,z,w floats"},
{"isNurb", ( PyCFunction ) CurNurb_isNurb, METH_NOARGS,
"( ) - boolean function tests if this spline is type nurb or bezier"},
+ {"isCyclic", ( PyCFunction ) CurNurb_isCyclic, METH_NOARGS,
+ "( ) - boolean function tests if this spline is cyclic (closed) or not (open)"},
{NULL, NULL, 0, NULL}
};
diff --git a/source/blender/python/api2_2x/Curve.c b/source/blender/python/api2_2x/Curve.c
index 2f19ffb261a..f8f7eb8f726 100644
--- a/source/blender/python/api2_2x/Curve.c
+++ b/source/blender/python/api2_2x/Curve.c
@@ -106,6 +106,7 @@ static PyObject *Curve_getSize( BPy_Curve * self );
static PyObject *Curve_setSize( BPy_Curve * self, PyObject * args );
static PyObject *Curve_getNumCurves( BPy_Curve * self );
static PyObject *Curve_isNurb( BPy_Curve * self, PyObject * args );
+static PyObject *Curve_isCyclic( BPy_Curve * self, PyObject * args);
static PyObject *Curve_getNumPoints( BPy_Curve * self, PyObject * args );
static PyObject *Curve_getNumPoints( BPy_Curve * self, PyObject * args );
@@ -204,6 +205,8 @@ Sets a control point "},
{"isNurb", ( PyCFunction ) Curve_isNurb,
METH_VARARGS,
"(nothing or integer) - returns 1 if curve is type Nurb, O otherwise."},
+ {"isCyclic", ( PyCFunction ) Curve_isCyclic,
+ METH_VARARGS, "( nothing or integer ) - returns true if curve is cyclic (closed), false otherwise."},
{"getNumPoints", ( PyCFunction ) Curve_getNumPoints,
METH_VARARGS,
"(nothing or integer) - returns the number of points of the specified curve"},
@@ -1058,6 +1061,49 @@ static PyObject *Curve_isNurb( BPy_Curve * self, PyObject * args )
"couldn't get curve type" ) );
}
+/* trying to make a check for closedness (cyclic), following on isNurb (above)
+ copy-pasting done by antont@kyperjokki.fi */
+
+static PyObject *Curve_isCyclic( BPy_Curve * self, PyObject * args )
+{
+ int curve_num = 0; /* default value */
+ int is_cyclic;
+ Nurb *ptrnurb;
+ PyObject *ret_val;
+ int i;
+
+ /* parse and check input args */
+ if( !PyArg_ParseTuple( args, "|i", &curve_num ) ) {
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "expected int argument" ) );
+ }
+ if( curve_num < 0 ) {
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "curve number must be non-negative" ) );
+ }
+
+ ptrnurb = self->curve->nurb.first;
+
+ if( !ptrnurb ) /* no splines in this curve */
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "no splines in this Curve" ) );
+
+ for( i = 0; i < curve_num; i++ ) {
+ ptrnurb = ptrnurb->next;
+ if( !ptrnurb ) /* if zero, we ran just ran out of curves */
+ return ( EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "curve index out of range" ) );
+ }
+
+ if( ptrnurb->flagu & CU_CYCLIC ){
+ Py_INCREF( Py_True );
+ return Py_True;
+ } else {
+ Py_INCREF( Py_False );
+ return Py_False;
+ }
+}
+
/*
* Curve_appendPoint( numcurve, new_point )
diff --git a/source/blender/python/api2_2x/doc/Curve.py b/source/blender/python/api2_2x/doc/Curve.py
index 7cbffa8e012..63df00a2256 100644
--- a/source/blender/python/api2_2x/doc/Curve.py
+++ b/source/blender/python/api2_2x/doc/Curve.py
@@ -226,7 +226,7 @@ class Curve:
def getControlPoint(numcurve,numpoint):
"""
- Get the curve's control point value.
+ Get the curve's control point value. The numpoint arg is an index into the list of points and starts with 0.
@type numcurve: int
@type numpoint: int
@rtype: list of floats
@@ -237,7 +237,7 @@ class Curve:
def setControlPoint( numcurve, numpoint, controlpoint):
"""
- Set the Curve's controlpoint value.
+ Set the Curve's controlpoint value. The numpoint arg is an index into the list of points and starts with 0.
@rtype: PyNone
@type numcurve: int
@type numpoint: int
@@ -333,12 +333,22 @@ class Curve:
"""
method used to determine whether a CurNurb is of type Bezier or of type Nurb.
@rtype: integer
- @return: Zero of curve is type Bezier, One if curve is of type Nurb.
+ @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 ):
+ """
+ Boolean method checks whether the curve is cyclic (closed) or not.
+
+ @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.
+ """
class CurNurb:
"""
@@ -384,5 +394,12 @@ class CurNurb:
@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
+ """
+