[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44261] trunk/blender: moved select interior faces into a C function (was python)

Campbell Barton ideasman42 at gmail.com
Sun Feb 19 21:27:39 CET 2012


Revision: 44261
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44261
Author:   campbellbarton
Date:     2012-02-19 20:27:30 +0000 (Sun, 19 Feb 2012)
Log Message:
-----------
moved select interior faces into a C function (was python)

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_operators/mesh.py
    trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
    trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
    trunk/blender/source/blender/editors/include/ED_mesh.h
    trunk/blender/source/blender/editors/mesh/bmesh_select.c
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c
    trunk/blender/source/blender/editors/mesh/mesh_intern.h
    trunk/blender/source/blender/editors/mesh/mesh_ops.c
    trunk/blender/source/blender/makesdna/DNA_modifier_types.h
    trunk/blender/source/blender/makesrna/intern/rna_modifier.c

Modified: trunk/blender/release/scripts/startup/bl_operators/mesh.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/mesh.py	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/release/scripts/startup/bl_operators/mesh.py	2012-02-19 20:27:30 UTC (rev 44261)
@@ -24,50 +24,6 @@
 from bpy.props import EnumProperty
 
 
-class MeshSelectInteriorFaces(Operator):
-    '''Select faces where all edges have more than 2 face users'''
-
-    bl_idname = "mesh.faces_select_interior"
-    bl_label = "Select Interior Faces"
-    bl_options = {'REGISTER', 'UNDO'}
-
-    @classmethod
-    def poll(cls, context):
-        ob = context.active_object
-        return (ob and ob.type == 'MESH')
-
-    def execute(self, context):
-        from bpy_extras import mesh_utils
-        ob = context.active_object
-        context.tool_settings.mesh_select_mode = False, False, True
-        is_editmode = (ob.mode == 'EDIT')
-        if is_editmode:
-            bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
-
-        mesh = ob.data
-
-        face_list = mesh.faces[:]
-        face_edge_keys = [face.edge_keys for face in face_list]
-
-        edge_face_count = mesh_utils.edge_face_count_dict(mesh)
-
-        def test_interior(index):
-            for key in face_edge_keys[index]:
-                if edge_face_count[key] < 3:
-                    return False
-            return True
-
-        for index, face in enumerate(face_list):
-            if(test_interior(index)):
-                face.select = True
-            else:
-                face.select = False
-
-        if is_editmode:
-            bpy.ops.object.mode_set(mode='EDIT', toggle=False)
-        return {'FINISHED'}
-
-
 class MeshMirrorUV(Operator):
     '''Copy mirror UV coordinates on the X axis based on a mirrored mesh'''
     bl_idname = "mesh.faces_mirror_uv"

Modified: trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_data_modifier.py	2012-02-19 20:27:30 UTC (rev 44261)
@@ -126,11 +126,11 @@
         split.prop(md, "width")
         split.prop(md, "use_only_vertices")
 
-        # BMESH_BRANCH ONLY
+        # -- new modifier only, this may be reverted in favor of 2.62 mod.
         split = layout.split()
         split.prop(md, "use_even_offset")
         split.prop(md, "use_distance_offset")
-        # END BMESH_BRANCH ONLY
+        # -- end 
 
         layout.label(text="Limit Method:")
         layout.row().prop(md, "limit_method", expand=True)

Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py	2012-02-19 20:27:30 UTC (rev 44261)
@@ -522,7 +522,7 @@
         layout.operator("mesh.select_nth", text="Every N Number of Verts")
         layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
         layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
-        layout.operator("mesh.faces_select_interior", text="Interior Faces")
+        layout.operator("mesh.select_interior_faces", text="Interior Faces")
         layout.operator("mesh.select_axis", text="Side of Active")
 
         layout.separator()
@@ -1501,7 +1501,7 @@
 
         layout.operator("view3d.edit_mesh_extrude_move_normal", text="Extrude Region")
         layout.operator("view3d.edit_mesh_extrude_individual_move", text="Extrude Individual")
-        layout.operator("mesh.dissolve_limited")  # BMESH ONLY
+        layout.operator("mesh.dissolve_limited")
         layout.operator("mesh.duplicate_move")
         layout.operator("mesh.delete", text="Delete...")
 
@@ -1537,7 +1537,7 @@
         """
         layout.operator("mesh.merge", text="Merge...")
         layout.operator("mesh.remove_doubles")
-        layout.operator("mesh.dissolve_limited")  # BMESH ONLY
+        layout.operator("mesh.dissolve_limited")
         layout.operator("mesh.hide", text="Hide")
         layout.operator("mesh.reveal", text="Reveal")
         layout.operator("mesh.select_all").action = 'INVERT'

Modified: trunk/blender/source/blender/editors/include/ED_mesh.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_mesh.h	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/editors/include/ED_mesh.h	2012-02-19 20:27:30 UTC (rev 44261)
@@ -180,6 +180,8 @@
 
 void EDBM_deselect_by_material(struct BMEditMesh *em, const short index, const short select);
 
+int EDBM_select_interior_faces(struct BMEditMesh *em);
+
 struct UvElementMap *EDBM_make_uv_element_map(struct BMEditMesh *em, int selected, int doIslands);
 void		EDBM_free_uv_element_map(struct UvElementMap *vmap);
 

Modified: trunk/blender/source/blender/editors/mesh/bmesh_select.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_select.c	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/editors/mesh/bmesh_select.c	2012-02-19 20:27:30 UTC (rev 44261)
@@ -1694,6 +1694,38 @@
 //	if (EM_texFaceCheck())
 }
 
+int EDBM_select_interior_faces(struct BMEditMesh *em)
+{
+	BMesh *bm = em->bm;
+	BMIter iter;
+	BMIter eiter;
+	BMFace *efa;
+	BMEdge *eed;
+	int ok;
+	int change = FALSE;
+
+	BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) {
+		if (BM_elem_flag_test(efa, BM_ELEM_HIDDEN))
+			continue;
+
+
+		ok = TRUE;
+		BM_ITER(eed, &eiter, bm, BM_EDGES_OF_FACE, efa) {
+			if (BM_edge_face_count(eed) < 3) {
+				ok = FALSE;
+				break;
+			}
+		}
+
+		if (ok) {
+			BM_elem_select_set(bm, efa, TRUE);
+			change = TRUE;
+		}
+	}
+
+	return change;
+}
+
 static void linked_limit_default(bContext *C, wmOperator *op)
 {
 	if (!RNA_struct_property_is_set(op->ptr, "limit")) {

Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-02-19 20:27:30 UTC (rev 44261)
@@ -680,6 +680,37 @@
 	WM_operator_properties_select_all(ot);
 }
 
+static int mesh_faces_select_interior_exec(bContext *C, wmOperator *UNUSED(op))
+{
+	Object *obedit = CTX_data_edit_object(C);
+	BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh;
+
+	if (EDBM_select_interior_faces(em)) {
+		WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit);
+
+		return OPERATOR_FINISHED;
+	}
+	else {
+		return OPERATOR_CANCELLED;
+	}
+
+}
+
+void MESH_OT_select_interior_faces(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name = "Select Interior Faces";
+	ot->idname = "MESH_OT_select_interior_faces";
+	ot->description = "Select faces where all edges have more than 2 face users";
+
+	/* api callbacks */
+	ot->exec = mesh_faces_select_interior_exec;
+	ot->poll = ED_operator_editmesh;
+
+	/* flags */
+	ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
 /* *************** add-click-mesh (extrude) operator ************** */
 /* in trunk see: 'editmesh_add.c' */
 static int dupli_extrude_cursor(bContext *C, wmOperator *op, wmEvent *event)

Modified: trunk/blender/source/blender/editors/mesh/mesh_intern.h
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_intern.h	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/editors/mesh/mesh_intern.h	2012-02-19 20:27:30 UTC (rev 44261)
@@ -200,6 +200,7 @@
 /* ******************* bmesh_select.c */
 void MESH_OT_loop_select(struct wmOperatorType *ot);
 void MESH_OT_select_all(struct wmOperatorType *ot);
+void MESH_OT_select_interior_faces(struct wmOperatorType *ot);
 void MESH_OT_bmesh_test(struct wmOperatorType *ot);
 void MESH_OT_select_more(struct wmOperatorType *ot);
 void MESH_OT_select_less(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/mesh/mesh_ops.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/mesh_ops.c	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/editors/mesh/mesh_ops.c	2012-02-19 20:27:30 UTC (rev 44261)
@@ -60,6 +60,7 @@
 void ED_operatortypes_mesh(void)
 {
 	WM_operatortype_append(MESH_OT_select_all);
+	WM_operatortype_append(MESH_OT_select_interior_faces);
 	WM_operatortype_append(MESH_OT_select_more);
 	WM_operatortype_append(MESH_OT_select_less);
 	WM_operatortype_append(MESH_OT_select_non_manifold);

Modified: trunk/blender/source/blender/makesdna/DNA_modifier_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/makesdna/DNA_modifier_types.h	2012-02-19 20:27:30 UTC (rev 44261)
@@ -77,8 +77,6 @@
 	eModifierType_Ocean,
 	eModifierType_DynamicPaint,
 	eModifierType_Remesh,
-
-	/* BMESH ONLY - keeps getting bumped by new modifiers in trunk */
 	eModifierType_NgonInterp,
 	NUM_MODIFIER_TYPES
 } ModifierType;

Modified: trunk/blender/source/blender/makesrna/intern/rna_modifier.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-02-19 20:05:01 UTC (rev 44260)
+++ trunk/blender/source/blender/makesrna/intern/rna_modifier.c	2012-02-19 20:27:30 UTC (rev 44261)
@@ -73,6 +73,7 @@
 	{eModifierType_Screw, "SCREW", ICON_MOD_SCREW, "Screw", ""},
 	{eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""},
 	{eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""},
+	{eModifierType_NgonInterp, "NGONINTERP", ICON_MOD_LATTICE, "Precision UV Interpolation", ""},
 	{0, "", 0, "Deform", ""},
 	{eModifierType_Armature, "ARMATURE", ICON_MOD_ARMATURE, "Armature", ""},
 	{eModifierType_Cast, "CAST", ICON_MOD_CAST, "Cast", ""},
@@ -98,7 +99,6 @@
 	{eModifierType_Smoke, "SMOKE", ICON_MOD_SMOKE, "Smoke", ""},
 	{eModifierType_Softbody, "SOFT_BODY", ICON_MOD_SOFT, "Soft Body", ""},

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list