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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs