Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/bmesh/operators')
-rw-r--r--source/blender/bmesh/operators/bmo_dissolve.c22
-rw-r--r--source/blender/bmesh/operators/bmo_join_triangles.c12
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);
}
}