Commit: a8e338cee593c6a0b4130356d0fb4a2a993d8e83
Author: Campbell Barton
Date:   Mon Jul 14 21:31:06 2014 +1000
https://developer.blender.org/rBa8e338cee593c6a0b4130356d0fb4a2a993d8e83

Py/API: add bmesh.utils.face_split_edgenet

===================================================================

M       source/blender/python/bmesh/bmesh_py_utils.c

===================================================================

diff --git a/source/blender/python/bmesh/bmesh_py_utils.c 
b/source/blender/python/bmesh/bmesh_py_utils.c
index 4f1ca56..cc76012 100644
--- a/source/blender/python/bmesh/bmesh_py_utils.c
+++ b/source/blender/python/bmesh/bmesh_py_utils.c
@@ -477,6 +477,80 @@ static PyObject *bpy_bm_utils_face_split(PyObject 
*UNUSED(self), PyObject *args,
 }
 
 
+PyDoc_STRVAR(bpy_bm_utils_face_split_edgenet_doc,
+".. method:: face_split_edgenet(face, edgenet)\n"
+"\n"
+"   Splits a face into any number of regions defined by an edgenet.\n"
+"\n"
+"   :arg face: The face to split.\n"
+"   :type face: :class:`bmesh.types.BMFace`\n"
+"   :arg face: The face to split.\n"
+"   :type face: :class:`bmesh.types.BMFace`\n"
+"   :arg edgenet: Sequence of faces.\n"
+"   :type edgenet: :class:`bmesh.types.BMFace`\n"
+"   :return: The newly created faces.\n"
+"   :rtype: tuple of (:class:`bmesh.types.BMFace`)\n"
+);
+static PyObject *bpy_bm_utils_face_split_edgenet(PyObject *UNUSED(self), 
PyObject *args, PyObject *kw)
+{
+       static const char *kwlist[] = {"face", "edgenet", NULL};
+
+       BPy_BMFace *py_face;
+       PyObject *edge_seq;
+
+       BMEdge **edge_array;
+       Py_ssize_t edge_array_len;
+
+       BMesh *bm;
+
+       BMFace **face_arr;
+       int face_arr_len;
+       bool ok;
+
+
+       if (!PyArg_ParseTupleAndKeywords(args, kw, "O!O:face_split_edgenet", 
(char **)kwlist,
+                                        &BPy_BMFace_Type, &py_face,
+                                        &edge_seq))
+       {
+               return NULL;
+       }
+
+       BPY_BM_CHECK_OBJ(py_face);
+
+       bm = py_face->bm;
+
+       edge_array = BPy_BMElem_PySeq_As_Array(&bm, edge_seq, 1, PY_SSIZE_T_MAX,
+                                              &edge_array_len, BM_EDGE,
+                                              true, true, 
"face_split_edgenet(...)");
+
+       if (edge_array == NULL) {
+               return NULL;
+       }
+
+       /* --- main function body --- */
+
+       ok = BM_face_split_edgenet(bm, py_face->f, edge_array, edge_array_len,
+                                  &face_arr, &face_arr_len);
+
+       PyMem_FREE(edge_array);
+
+       if (ok) {
+               PyObject *ret = PyTuple_New(face_arr_len);
+               int i;
+               for (i = 0; i < face_arr_len; i++) {
+                       PyTuple_SET_ITEM(ret, i, BPy_BMFace_CreatePyObject(bm, 
face_arr[i]));
+               }
+               MEM_freeN(face_arr);
+               return ret;
+       }
+       else {
+               PyErr_SetString(PyExc_ValueError,
+                               "face_split_edgenet(...): couldn't split the 
face, internal error");
+               return NULL;
+       }
+}
+
+
 PyDoc_STRVAR(bpy_bm_utils_face_join_doc,
 ".. method:: face_join(faces, remove=True)\n"
 "\n"
@@ -652,6 +726,7 @@ static struct PyMethodDef BPy_BM_utils_methods[] = {
        {"edge_split",          (PyCFunction)bpy_bm_utils_edge_split,          
METH_VARARGS, bpy_bm_utils_edge_split_doc},
        {"edge_rotate",         (PyCFunction)bpy_bm_utils_edge_rotate,         
METH_VARARGS, bpy_bm_utils_edge_rotate_doc},
        {"face_split",          (PyCFunction)bpy_bm_utils_face_split,          
METH_VARARGS | METH_KEYWORDS, bpy_bm_utils_face_split_doc},
+       {"face_split_edgenet",  (PyCFunction)bpy_bm_utils_face_split_edgenet,  
METH_VARARGS | METH_KEYWORDS, bpy_bm_utils_face_split_edgenet_doc},
        {"face_join",           (PyCFunction)bpy_bm_utils_face_join,           
METH_VARARGS, bpy_bm_utils_face_join_doc},
        {"face_vert_separate",  (PyCFunction)bpy_bm_utils_face_vert_separate,  
METH_VARARGS, bpy_bm_utils_face_vert_separate_doc},
        {"face_flip",           (PyCFunction)bpy_bm_utils_face_flip,           
METH_O,       bpy_bm_utils_face_flip_doc},

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to