fix [#28645] TODO: dissolve edges doesn't delete lonely vertices on edges

support for dissolving boundry & loose edges, previously this would only join adjacent faces,
now it collapses edge vertices when the edge has no face users.
This commit is contained in:
Campbell Barton
2011-12-01 02:20:24 +00:00
parent f06bbaed92
commit 78b60d3cbf

View File

@@ -194,11 +194,22 @@ void dissolveedges_exec(BMesh *bm, BMOperator *op)
/* int i; */
BMO_ITER(e, &oiter, bm, op, "edges", BM_EDGE) {
if (BM_Edge_FaceCount(e) == 2) {
const int edge_face_count= BM_Edge_FaceCount(e);
if (edge_face_count == 2) {
/* join faces */
BM_Join_TwoFaces(bm, e->l->f,
e->l->radial_next->f,
e);
}
else if (edge_face_count < 2) {
/* join verts, assign because first join frees the edge */
BMVert *v1= e->v1, *v2= e->v2;
/*collapse the vert*/
if (BM_Vert_EdgeCount(v1) == 2) BM_Collapse_Vert(bm, v1->e, v1, 0.5f);
if (BM_Vert_EdgeCount(v2) == 2) BM_Collapse_Vert(bm, v2->e, v2, 0.5f);
}
}
}