[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