add option to select face by matching number of sides.
authorCampbell Barton <ideasman42@gmail.com>
Tue, 30 Oct 2012 06:43:30 +0000 (06:43 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 30 Oct 2012 06:43:30 +0000 (06:43 +0000)
source/blender/bmesh/intern/bmesh_operators.h
source/blender/bmesh/operators/bmo_utils.c
source/blender/editors/mesh/editmesh_select.c

index b1da8ecb275424360494fc28a6c5610129a0a8c3..3341a7df6f702916531840b0b12d69710e2df0a0 100644 (file)
@@ -51,6 +51,7 @@ enum {
        SIMFACE_MATERIAL = 201,
        SIMFACE_IMAGE,
        SIMFACE_AREA,
+       SIMFACE_SIDES,
        SIMFACE_PERIMETER,
        SIMFACE_NORMAL,
        SIMFACE_COPLANAR
index 42c5557327b5e3c22c525fca4f9fdf9ab9e93c3a..c4626a429c325144ba188dbbc01cfe9aeb30d810 100644 (file)
@@ -542,7 +542,7 @@ void bmo_similar_faces_exec(BMesh *bm, BMOperator *op)
        SimSel_FaceExt *f_ext = NULL;
        int *indices = NULL;
        float t_no[3];  /* temporary normal */
-       int type = BMO_slot_int_get(op, "type");
+       const int type = BMO_slot_int_get(op, "type");
        const float thresh = BMO_slot_float_get(op, "thresh");
        const float thresh_radians = thresh * (float)M_PI;
 
@@ -662,6 +662,13 @@ void bmo_similar_faces_exec(BMesh *bm, BMOperator *op)
                                                }
                                                break;
 
+                                       case SIMFACE_SIDES:
+                                               if (fm->len == fs->len) {
+                                                       BMO_elem_flag_enable(bm, fm, FACE_MARK);
+                                                       cont = FALSE;
+                                               }
+                                               break;
+
                                        case SIMFACE_PERIMETER:
                                                if (fabsf(f_ext[i].perim - f_ext[indices[idx]].perim) <= thresh) {
                                                        BMO_elem_flag_enable(bm, fm, FACE_MARK);
index 03c88c4a9da0543d1a646cef7bd0db11de1f7d48..a8b72bee88f51eac3e682f8bddd0809dc40bfaa3 100644 (file)
@@ -690,6 +690,7 @@ static EnumPropertyItem prop_similar_types[] = {
        {SIMFACE_MATERIAL, "MATERIAL", 0, "Material", ""},
        {SIMFACE_IMAGE, "IMAGE", 0, "Image", ""},
        {SIMFACE_AREA, "AREA", 0, "Area", ""},
+       {SIMFACE_SIDES, "SIDES", 0, "Polygon Sides", ""},
        {SIMFACE_PERIMETER, "PERIMETER", 0, "Perimeter", ""},
        {SIMFACE_NORMAL, "NORMAL", 0, "Normal", ""},
        {SIMFACE_COPLANAR, "COPLANAR", 0, "Co-planar", ""},