[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44323] trunk/blender/source/blender: BMesh-py attributes (readonly):
Campbell Barton
ideasman42 at gmail.com
Wed Feb 22 13:28:35 CET 2012
Revision: 44323
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44323
Author: campbellbarton
Date: 2012-02-22 12:28:32 +0000 (Wed, 22 Feb 2012)
Log Message:
-----------
BMesh-py attributes (readonly):
* is_valid (all types)
* is_wire (verts/edges)
* is_boundry (edge only)
* is_manifold (verts/edges)
also corrected own error, missed updating BMesh operator formatting char (broke erase only-faces)
Modified Paths:
--------------
trunk/blender/source/blender/editors/mesh/bmesh_tools.c
trunk/blender/source/blender/python/bmesh/bmesh_py_types.c
Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c 2012-02-22 12:24:04 UTC (rev 44322)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c 2012-02-22 12:28:32 UTC (rev 44323)
@@ -948,7 +948,7 @@
}
else if (event == 5) {
//"Erase Only Faces";
- if (!EDBM_CallOpf(bem, op, "del geom=%hf context=%d",
+ if (!EDBM_CallOpf(bem, op, "del geom=%hf context=%i",
BM_ELEM_SELECT, DEL_ONLYFACES))
return OPERATOR_CANCELLED;
}
Modified: trunk/blender/source/blender/python/bmesh/bmesh_py_types.c
===================================================================
--- trunk/blender/source/blender/python/bmesh/bmesh_py_types.c 2012-02-22 12:24:04 UTC (rev 44322)
+++ trunk/blender/source/blender/python/bmesh/bmesh_py_types.c 2012-02-22 12:28:32 UTC (rev 44323)
@@ -175,6 +175,15 @@
return BPy_BMElemSeq_CreatePyObject(self->bm, self, GET_INT_FROM_POINTER(itype));
}
+PyDoc_STRVAR(bpy_bm_is_valid_doc,
+ "True when this element is valid (hasn't been removed)"
+ );
+static PyObject *bpy_bm_is_valid_get(BPy_BMGeneric *self)
+{
+ return PyBool_FromLong(self->bm != NULL);
+}
+
+
PyDoc_STRVAR(bpy_bmesh_select_mode_doc,
"The selection mode for this mesh"
);
@@ -249,6 +258,54 @@
}
}
+PyDoc_STRVAR(bpy_bmvert_is_manifold_doc,
+ "True when this vertex is manifold (readonly)"
+ );
+static PyObject *bpy_bmvert_is_manifold_get(BPy_BMVert *self)
+{
+ BPY_BM_CHECK_OBJ(self);
+ return PyBool_FromLong(BM_vert_is_manifold(self->bm, self->v));
+}
+
+PyDoc_STRVAR(bpy_bmvert_is_wire_doc,
+ "True when this vertex is not connected to any faces (readonly)"
+ );
+static PyObject *bpy_bmvert_is_wire_get(BPy_BMVert *self)
+{
+ BPY_BM_CHECK_OBJ(self);
+ return PyBool_FromLong(BM_vert_is_wire(self->bm, self->v));
+}
+
+/* Edge
+ * ^^^^ */
+
+PyDoc_STRVAR(bpy_bmedge_is_manifold_doc,
+ "True when this edge is manifold (readonly)"
+ );
+static PyObject *bpy_bmedge_is_manifold_get(BPy_BMEdge *self)
+{
+ BPY_BM_CHECK_OBJ(self);
+ return PyBool_FromLong(BM_edge_is_manifold(self->bm, self->e));
+}
+
+PyDoc_STRVAR(bpy_bmedge_is_wire_doc,
+ "True when this edge is not connected to any faces (readonly)"
+ );
+static PyObject *bpy_bmedge_is_wire_get(BPy_BMEdge *self)
+{
+ BPY_BM_CHECK_OBJ(self);
+ return PyBool_FromLong(BM_edge_is_wire(self->bm, self->e));
+}
+
+PyDoc_STRVAR(bpy_bmedge_is_boundry_doc,
+ "True when this edge is at the boundry of a face (readonly)"
+ );
+static PyObject *bpy_bmedge_is_boundry_get(BPy_BMEdge *self)
+{
+ BPY_BM_CHECK_OBJ(self);
+ return PyBool_FromLong(BM_edge_is_boundry(self->e));
+}
+
/* Face
* ^^^^ */
@@ -278,6 +335,10 @@
{(char *)"edges", (getter)bpy_bmesh_seq_get, (setter)NULL, NULL, (void *)BM_EDGES_OF_MESH},
{(char *)"faces", (getter)bpy_bmesh_seq_get, (setter)NULL, NULL, (void *)BM_FACES_OF_MESH},
{(char *)"select_mode", (getter)bpy_bmesh_select_mode_get, (setter)bpy_bmesh_select_mode_set, (char *)bpy_bmesh_select_mode_doc, NULL},
+
+ /* readonly checks */
+ {(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
+
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -291,10 +352,16 @@
{(char *)"co", (getter)bpy_bmvert_co_get, (setter)bpy_bmvert_co_set, (char *)bpy_bmvert_co_doc, NULL},
{(char *)"normal", (getter)bpy_bmvert_normal_get, (setter)bpy_bmvert_normal_set, (char *)bpy_bmvert_normal_doc, NULL},
+ /* connectivity data */
{(char *)"link_edges", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_EDGES_OF_VERT},
{(char *)"link_faces", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_FACES_OF_VERT},
{(char *)"link_loops", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_LOOPS_OF_VERT},
+ /* readonly checks */
+ {(char *)"is_manifold", (getter)bpy_bmvert_is_manifold_get, (setter)NULL, (char *)bpy_bmvert_is_manifold_doc, NULL},
+ {(char *)"is_wire", (getter)bpy_bmvert_is_wire_get, (setter)NULL, (char *)bpy_bmvert_is_wire_doc, NULL},
+ {(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
+
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -308,11 +375,18 @@
{(char *)"smooth", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_smooth_doc, (void *)BM_ELEM_SMOOTH},
{(char *)"seam", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_smooth_doc, (void *)BM_ELEM_SEAM},
+ /* connectivity data */
{(char *)"verts", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_VERTS_OF_EDGE},
{(char *)"link_faces", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_FACES_OF_EDGE},
{(char *)"link_loops", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_LOOPS_OF_EDGE},
+ /* readonly checks */
+ {(char *)"is_manifold", (getter)bpy_bmedge_is_manifold_get, (setter)NULL, (char *)bpy_bmedge_is_manifold_doc, NULL},
+ {(char *)"is_wire", (getter)bpy_bmedge_is_wire_get, (setter)NULL, (char *)bpy_bmedge_is_wire_doc, NULL},
+ {(char *)"is_boundry", (getter)bpy_bmedge_is_boundry_get, (setter)NULL, (char *)bpy_bmedge_is_boundry_doc, NULL},
+ {(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
+
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -327,10 +401,14 @@
{(char *)"normal", (getter)bpy_bmface_normal_get, (setter)bpy_bmface_normal_set, (char *)bpy_bmface_normal_doc, NULL},
+ /* connectivity data */
{(char *)"verts", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_VERTS_OF_FACE},
{(char *)"edges", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_EDGES_OF_FACE},
{(char *)"loops", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_LOOPS_OF_FACE},
+ /* readonly checks */
+ {(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
+
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
@@ -341,8 +419,12 @@
{(char *)"tag", (getter)bpy_bm_elem_hflag_get, (setter)bpy_bm_elem_hflag_set, (char *)bpy_bm_elem_tag_doc, (void *)BM_ELEM_TAG},
{(char *)"index", (getter)bpy_bm_elem_index_get, (setter)bpy_bm_elem_index_set, (char *)bpy_bm_elem_index_doc, NULL},
+ /* connectivity data */
{(char *)"link_loops", (getter)bpy_bmesh_seq_elem_get, (setter)NULL, NULL, (void *)BM_LOOPS_OF_LOOP},
+ /* readonly checks */
+ {(char *)"is_valid", (getter)bpy_bm_is_valid_get, (setter)NULL, (char *)bpy_bm_is_valid_doc, NULL},
+
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
More information about the Bf-blender-cvs
mailing list