diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-05 05:53:30 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-05 05:53:30 +0400 |
commit | 4b940364a1dee78acdfe1ec319b35bb812faee29 (patch) | |
tree | 3097b5de3402f23260fcddaeffb02e6752654257 /source/blender/bmesh/operators | |
parent | 4d84e869a0fd540247a99edbfeca24ffb75644cd (diff) |
edge rotate now keeps edge properties (like seam, crease, bevel weight.. etc)
Diffstat (limited to 'source/blender/bmesh/operators')
-rw-r--r-- | source/blender/bmesh/operators/bmo_dissolve.c | 22 | ||||
-rw-r--r-- | source/blender/bmesh/operators/bmo_join_triangles.c | 12 |
2 files changed, 14 insertions, 20 deletions
diff --git a/source/blender/bmesh/operators/bmo_dissolve.c b/source/blender/bmesh/operators/bmo_dissolve.c index 9e07cb177dd..25eaab1740d 100644 --- a/source/blender/bmesh/operators/bmo_dissolve.c +++ b/source/blender/bmesh/operators/bmo_dissolve.c @@ -144,7 +144,7 @@ void bmo_dissolve_faces_exec(BMesh *bm, BMOperator *op) while (faces[tot]) tot++; - f = BM_faces_join(bm, faces, tot); + f = BM_faces_join(bm, faces, tot, TRUE); if (!f) { BMO_error_raise(bm, op, BMERR_DISSOLVEFACES_FAILED, "Could not create merged face"); @@ -198,17 +198,16 @@ void bmo_dissolve_edgeloop_exec(BMesh *bm, BMOperator *op) BMVert *v, **verts = NULL; BLI_array_declare(verts); BMEdge *e; - /* BMFace *f; */ + BMFace *fa, *fb; int i; + BMO_ITER(e, &oiter, bm, op, "edges", BM_EDGE) { - if (BM_edge_face_count(e) == 2) { + if (BM_edge_face_pair(e, &fa, &fb)) { BMO_elem_flag_enable(bm, e->v1, VERT_MARK); BMO_elem_flag_enable(bm, e->v2, VERT_MARK); - BM_faces_join_pair(bm, e->l->f, - e->l->radial_next->f, - e); + BM_faces_join_pair(bm, fa, fb, e, TRUE); } } @@ -256,13 +255,12 @@ void bmo_dissolve_edges_exec(BMesh *bm, BMOperator *op) } BMO_ITER(e, &eiter, bm, op, "edges", BM_EDGE) { - const int edge_face_count = BM_edge_face_count(e); - if (edge_face_count == 2) { + BMFace *fa, *fb; + + if (BM_edge_face_pair(e, &fa, &fb)) { /* join faces */ - BM_faces_join_pair(bm, e->l->f, - e->l->radial_next->f, - e); + BM_faces_join_pair(bm, fa, fb, e, TRUE); } } @@ -517,7 +515,7 @@ void bmo_dissolve_limit_exec(BMesh *bm, BMOperator *op) if (BM_edge_face_angle(bm, e) < angle_limit) { BMFace *nf = BM_faces_join_pair(bm, e->l->f, e->l->radial_next->f, - e); /* join faces */ + e, TRUE); /* join faces */ /* there may be some errors, we dont mind, just move on */ if (nf == NULL) { diff --git a/source/blender/bmesh/operators/bmo_join_triangles.c b/source/blender/bmesh/operators/bmo_join_triangles.c index 76e64aee821..433b91c198e 100644 --- a/source/blender/bmesh/operators/bmo_join_triangles.c +++ b/source/blender/bmesh/operators/bmo_join_triangles.c @@ -251,14 +251,11 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op) if (!BMO_elem_flag_test(bm, e, EDGE_MARK)) continue; - if (BM_edge_face_count(e) != 2) { + if (!BM_edge_face_pair(e, &f1, &f2)) { BMO_elem_flag_disable(bm, e, EDGE_MARK); continue; } - f1 = e->l->f; - f2 = e->l->radial_next->f; - if (f1->len != 3 || f2->len != 3) { BMO_elem_flag_disable(bm, e, EDGE_MARK); continue; @@ -332,10 +329,9 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op) if (!BMO_elem_flag_test(bm, e, EDGE_CHOSEN)) continue; - f1 = e->l->f; - f2 = e->l->radial_next->f; - BM_faces_join_pair(bm, f1, f2, e); + BM_edge_face_pair(e, &f1, &f2); /* checked above */ + BM_faces_join_pair(bm, f1, f2, e, TRUE); } BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) { @@ -367,7 +363,7 @@ void bmo_join_triangles_exec(BMesh *bm, BMOperator *op) continue; } - BM_faces_join_pair(bm, f1, f2, e); + BM_faces_join_pair(bm, f1, f2, e, TRUE); } } |