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:
authorCampbell Barton <ideasman42@gmail.com>2012-03-11 06:45:27 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-11 06:45:27 +0400
commit21fd09c028dce833f58cdaa8a1ff45876a5e5a2f (patch)
treecf5f7b60f9abc253cc7fb811ab05ab2782d3144d /source/blender/python/bmesh/bmesh_py_api.c
parent0c50bedd9c960763d3e8e695b63957a964565be0 (diff)
bmesh py api: change .from_mesh() / .to_mesh() to be class methods of BMesh rather than functions in the module.
added example script which converts a mesh to a bmesh, edits and converts back again.
Diffstat (limited to 'source/blender/python/bmesh/bmesh_py_api.c')
-rw-r--r--source/blender/python/bmesh/bmesh_py_api.c82
1 files changed, 18 insertions, 64 deletions
diff --git a/source/blender/python/bmesh/bmesh_py_api.c b/source/blender/python/bmesh/bmesh_py_api.c
index 3990005d139..280bab26c4b 100644
--- a/source/blender/python/bmesh/bmesh_py_api.c
+++ b/source/blender/python/bmesh/bmesh_py_api.c
@@ -40,17 +40,14 @@
#include "BLI_utildefines.h"
#include "BKE_tessmesh.h"
-#include "BKE_depsgraph.h"
#include "DNA_mesh_types.h"
-#include "DNA_object_types.h"
#include "../generic/py_capi_utils.h"
#include "bmesh_py_api.h" /* own include */
-
PyDoc_STRVAR(bpy_bm_new_doc,
".. method:: new()\n"
"\n"
@@ -70,88 +67,40 @@ static PyObject *bpy_bm_new(PyObject *UNUSED(self))
return (PyObject *)py_bmesh;
}
-PyDoc_STRVAR(bpy_bm_from_mesh_doc,
-".. method:: from_mesh(mesh)\n"
+PyDoc_STRVAR(bpy_bm_from_edit_mesh_doc,
+".. method:: from_edit_mesh(mesh)\n"
"\n"
" Return a BMesh from this mesh, currently the mesh must already be in editmode.\n"
"\n"
" :return: the BMesh assosiated with this mesh.\n"
" :rtype: :class:`bmesh.types.BMesh`\n"
);
-
-static PyObject *bpy_bm_from_mesh(PyObject *UNUSED(self), PyObject *value)
+static PyObject *bpy_bm_from_edit_mesh(PyObject *UNUSED(self), PyObject *value)
{
BPy_BMesh *py_bmesh;
BMesh *bm;
Mesh *me = PyC_RNA_AsPointer(value, "Mesh");
- int py_owns;
if (me == NULL) {
return NULL;
}
- /* temp! */
- if (!me->edit_btmesh) {
- bm = BM_mesh_create(NULL, &bm_mesh_allocsize_default);
- BM_mesh_to_bmesh(bm, me, 0, 0); /* BMESH_TODO add args */
- py_owns = TRUE;
- }
- else {
- bm = me->edit_btmesh->bm;
- py_owns = FALSE;
- }
-
- py_bmesh = (BPy_BMesh *)BPy_BMesh_CreatePyObject(bm);
- py_bmesh->py_owns = py_owns;
- return (PyObject *)py_bmesh;
-}
-
-PyDoc_STRVAR(bpy_bm_to_mesh_doc,
-".. method:: to_mesh(mesh, bmesh)\n"
-"\n"
-" Return a BMesh from this mesh, currently the mesh must already be in editmode.\n"
-"\n"
-" :return: the BMesh assosiated with this mesh.\n"
-" :rtype: :class:`bmesh.types.BMesh`\n"
-);
-
-static PyObject *bpy_bm_to_mesh(PyObject *UNUSED(self), PyObject *args)
-{
- PyObject *py_mesh;
- BPy_BMesh *py_bmesh;
- Mesh *me;
- BMesh *bm;
-
- if (!PyArg_ParseTuple(args, "OO!:to_mesh", &py_mesh, &BPy_BMesh_Type, &py_bmesh) ||
- !(me = PyC_RNA_AsPointer(py_mesh, "Mesh")))
- {
- return NULL;
- }
-
- BPY_BM_CHECK_OBJ(py_bmesh);
-
- if (me->edit_btmesh) {
- PyErr_Format(PyExc_ValueError,
- "to_mesh(): Mesh '%s' is in editmode", me->id.name + 2);
+ if (me->edit_btmesh == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "The mesh must be in editmode");
return NULL;
}
- bm = py_bmesh->bm;
+ bm = me->edit_btmesh->bm;
- BM_mesh_from_bmesh(bm, me, FALSE);
-
- /* we could have the user do this but if they forget blender can easy crash
- * since the references arrays for the objects derived meshes are now invalid */
- DAG_id_tag_update(&me->id, OB_RECALC_DATA);
-
- Py_RETURN_NONE;
+ py_bmesh = (BPy_BMesh *)BPy_BMesh_CreatePyObject(bm);
+ py_bmesh->py_owns = FALSE;
+ return (PyObject *)py_bmesh;
}
static struct PyMethodDef BPy_BM_methods[] = {
- /* THESE NAMES MAY CHANGE! */
- {"new", (PyCFunction)bpy_bm_new, METH_NOARGS, bpy_bm_new_doc},
- {"from_mesh", (PyCFunction)bpy_bm_from_mesh, METH_O, bpy_bm_from_mesh_doc},
- {"to_mesh", (PyCFunction)bpy_bm_to_mesh, METH_VARARGS, bpy_bm_to_mesh_doc},
+ {"new", (PyCFunction)bpy_bm_new, METH_NOARGS, bpy_bm_new_doc},
+ {"from_edit_mesh", (PyCFunction)bpy_bm_from_edit_mesh, METH_O, bpy_bm_from_edit_mesh_doc},
{NULL, NULL, 0, NULL}
};
@@ -163,6 +112,12 @@ PyDoc_STRVAR(BPy_BM_doc,
"\n"
"* :mod:`bmesh.utils`\n"
"* :mod:`bmesh.types`\n"
+"\n"
+"\n"
+"Example Script\n"
+"--------------\n"
+"\n"
+".. literalinclude:: ../../../release/scripts/templates/bmesh_simple.py\n"
);
static struct PyModuleDef BPy_BM_module_def = {
PyModuleDef_HEAD_INIT,
@@ -185,7 +140,6 @@ PyObject *BPyInit_bmesh(void)
BPy_BM_init_types();
BPy_BM_init_select_types();
-
mod = PyModule_Create(&BPy_BM_module_def);
/* bmesh.types */