[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20967] branches/bmesh/blender/source/ blender: Turned delkey->Dissolve Verts into delkey->Dissolve,
Joseph Eagar
joeedh at gmail.com
Thu Jun 18 06:39:33 CEST 2009
Revision: 20967
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20967
Author: joeedh
Date: 2009-06-18 06:39:33 +0200 (Thu, 18 Jun 2009)
Log Message:
-----------
Turned delkey->Dissolve Verts into delkey->Dissolve,
and made it sensitive to the selection mode. Also
coded dissolve edges, since that was missing.
Removed the old "Delete Edge Loop", since dissolve
edges pretty much replaces that :)
Modified Paths:
--------------
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h
branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c
branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c 2009-06-18 04:36:45 UTC (rev 20966)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c 2009-06-18 04:39:33 UTC (rev 20967)
@@ -318,7 +318,7 @@
src[0] = kvloop->data;
src[1] = tvloop->data;
- CustomData_bmesh_interp(&bm->ldata, src,w, NULL, 2, kvloop->data);
+ CustomData_bmesh_interp(&bm->ldata, src,w, NULL, 2, kvloop->data);
}
l=l->radial.next->data;
}while(l!=ke->loop);
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c 2009-06-18 04:36:45 UTC (rev 20966)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c 2009-06-18 04:39:33 UTC (rev 20967)
@@ -148,6 +148,15 @@
0
};
+BMOpDefine def_dissolveedgessop = {
+ "dissolveedges",
+ {{BMOP_OPSLOT_ELEMENT_BUF, "edges"},
+ {BMOP_OPSLOT_ELEMENT_BUF, "regionout"},
+ {0} /*null-terminating sentinel*/},
+ dissolveedges_exec,
+ 0
+};
+
BMOpDefine def_dissolvefacesop = {
"dissolvefaces",
{{BMOP_OPSLOT_ELEMENT_BUF, "faces"},
@@ -243,6 +252,7 @@
&def_subdop,
&def_triangop,
&def_dissolvefacesop,
+ &def_dissolveedgessop,
&def_dissolvevertsop,
&def_makefgonsop,
&def_extrudefaceregion,
Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h 2009-06-18 04:36:45 UTC (rev 20966)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators_private.h 2009-06-18 04:39:33 UTC (rev 20967)
@@ -29,6 +29,6 @@
void bmesh_edgenet_fill_exec(BMesh *bm, BMOperator *op);
void bmesh_rotate_exec(BMesh *bm, BMOperator *op);
void bmesh_makevert_exec(BMesh *bm, BMOperator *op);
+void dissolveedges_exec(BMesh *bm, BMOperator *op);
-
#endif
Modified: branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c 2009-06-18 04:36:45 UTC (rev 20966)
+++ branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c 2009-06-18 04:39:33 UTC (rev 20967)
@@ -188,6 +188,51 @@
V_FREE(regions);
}
+void dissolveedges_exec(BMesh *bm, BMOperator *op)
+{
+ BMOperator fop;
+ BMOIter oiter;
+ BMIter iter;
+ BMVert *v, **verts = NULL;
+ V_DECLARE(verts);
+ BMEdge *e;
+ BMFace *f;
+ int i;
+
+ BMO_ITER(e, &oiter, bm, op, "edges") {
+ if (BM_Edge_FaceCount(e) == 2) {
+ BMO_SetFlag(bm, e->v1, VERT_MARK);
+ BMO_SetFlag(bm, e->v2, VERT_MARK);
+
+ BM_Join_Faces(bm, e->loop->f,
+ ((BMLoop*)e->loop->radial.next->data)->f,
+ e);
+ }
+ }
+
+ BM_ITER(v, &iter, bm, BM_VERTS_OF_MESH, NULL) {
+ if (BMO_TestFlag(bm, v, VERT_MARK) &&
+ BM_Vert_EdgeCount(v) == 2)
+ {
+ V_GROW(verts);
+ verts[V_COUNT(verts)-1] = v;
+ }
+ }
+
+ for (i=0; i<V_COUNT(verts); i++) {
+ BM_Collapse_Vert(bm, verts[i]->edge, verts[i], 1.0);
+ }
+
+ V_FREE(verts);
+
+ //BMO_InitOpf(bm, &fop, "dissolvefaces faces=%ff", FACE_MARK);
+ //BMO_Exec_Op(bm, &fop);
+
+ //BMO_CopySlot(op, &fop, "regionout", "regionout");
+
+ //BMO_Finish_Op(bm, &fop);
+}
+
static int test_extra_verts(BMesh *bm, BMVert *v)
{
BMIter iter, liter, iter2, iter3;
Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2009-06-18 04:36:45 UTC (rev 20966)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c 2009-06-18 04:39:33 UTC (rev 20967)
@@ -967,13 +967,18 @@
return OPERATOR_CANCELLED;
}
else if(event==7) {
- //"Dissolve Verts"
- if (!EDBM_CallOpf(bem, op, "dissolveverts verts=%hv",BM_SELECT))
- return OPERATOR_CANCELLED;
+ //"Dissolve"
+ if (bem->selectmode & SCE_SELECT_FACE) {
+ if (!EDBM_CallOpf(bem, op, "dissolvefaces faces=%hf",BM_SELECT))
+ return OPERATOR_CANCELLED;
+ } else if (bem->selectmode & SCE_SELECT_EDGE) {
+ if (!EDBM_CallOpf(bem, op, "dissolveedges edges=%he",BM_SELECT))
+ return OPERATOR_CANCELLED;
+ } else if (bem->selectmode & SCE_SELECT_VERTEX) {
+ if (!EDBM_CallOpf(bem, op, "dissolveverts verts=%hv",BM_SELECT))
+ return OPERATOR_CANCELLED;
+ }
}
- else if(event==6) {
- //"Erase Edge Loop";
- }
else if(event==4) {
if (!EDBM_CallOpf(bem, op, "del geom=%hef context=%i", BM_SELECT, DEL_EDGESFACES))
return OPERATOR_CANCELLED;
@@ -1002,13 +1007,12 @@
/* Note, these values must match delete_mesh() event values */
static EnumPropertyItem prop_mesh_delete_types[] = {
- {7, "DISSOLVE", "Dissolve Verts", ""},
+ {7, "DISSOLVE", "Dissolve", ""},
{10,"VERT", "Vertices", ""},
{1, "EDGE", "Edges", ""},
{2, "FACE", "Faces", ""},
{4, "EDGE_FACE","Edges & Faces", ""},
{5, "ONLY_FACE","Only Faces", ""},
- {6, "EDGE_LOOP","Edge Loop", ""},
{0, NULL, NULL, NULL}
};
More information about the Bf-blender-cvs
mailing list