bmesh py api: add BMesh.calc_tessface()

This commit is contained in:
Campbell Barton 2014-07-16 11:57:28 +10:00
parent 28940d79b1
commit de379c05de
Notes: blender-bot 2023-02-14 11:24:03 +01:00
Referenced by issue #41257, New paint system always crashes when used on a multi-material mesh.
Referenced by issue #41104, Translate and Transform nodes unexpected behaviour
1 changed files with 39 additions and 0 deletions

View File

@ -1217,6 +1217,44 @@ static PyObject *bpy_bmesh_calc_volume(BPy_BMElem *self, PyObject *args, PyObjec
}
}
PyDoc_STRVAR(bpy_bmesh_calc_tessface_doc,
".. method:: calc_tessface()\n"
"\n"
" Calculate triangle tessellation from quads/ngons.\n"
"\n"
" :return: The triangulated faces.\n"
" :rtype: list of :class:`BMLoop` tuples\n"
);
static PyObject *bpy_bmesh_calc_tessface(BPy_BMElem *self)
{
BMesh *bm;
int looptris_tot;
int tottri;
BMLoop *(*looptris)[3];
PyObject *ret;
int i;
BPY_BM_CHECK_OBJ(self);
bm = self->bm;
looptris_tot = poly_to_tri_count(bm->totface, bm->totloop);
looptris = PyMem_MALLOC(sizeof(*looptris) * looptris_tot);
BM_bmesh_calc_tessellation(bm, looptris, &tottri);
ret = PyList_New(tottri);
for (i = 0; i < tottri; i++) {
PyList_SET_ITEM(ret, i, BPy_BMLoop_Array_As_Tuple(bm, looptris[i], 3));
}
PyMem_FREE(looptris);
return ret;
}
/* Elem
* ---- */
@ -2488,6 +2526,7 @@ static struct PyMethodDef bpy_bmesh_methods[] = {
/* calculations */
{"calc_volume", (PyCFunction)bpy_bmesh_calc_volume, METH_VARARGS | METH_KEYWORDS, bpy_bmesh_calc_volume_doc},
{"calc_tessface", (PyCFunction)bpy_bmesh_calc_tessface, METH_NOARGS, bpy_bmesh_calc_tessface_doc},
{NULL, NULL, 0, NULL}
};