[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50034] trunk/blender/source/blender/ editors/mesh/editmesh_tools.c: added 'Unselected' option to remove doubles, merges selected vertices into unselected ones, but not each other.

Campbell Barton ideasman42 at gmail.com
Mon Aug 20 02:11:13 CEST 2012


Revision: 50034
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50034
Author:   campbellbarton
Date:     2012-08-20 00:11:13 +0000 (Mon, 20 Aug 2012)
Log Message:
-----------
added 'Unselected' option to remove doubles, merges selected vertices into unselected ones, but not each other.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_tools.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-08-20 00:10:44 UTC (rev 50033)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-08-20 00:11:13 UTC (rev 50034)
@@ -2042,22 +2042,38 @@
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BMEdit_FromObject(obedit);
 	BMOperator bmop;
+	const float mergedist = RNA_float_get(op->ptr, "mergedist");
+	int use_unselected = RNA_boolean_get(op->ptr, "use_unselected");
+	int totvert_orig = em->bm->totvert;
 	int count;
 
-	EDBM_op_init(em, &bmop, op, "find_doubles verts=%hv dist=%f", BM_ELEM_SELECT, RNA_float_get(op->ptr, "mergedist"));
-	BMO_op_exec(em->bm, &bmop);
+	if (use_unselected) {
+		EDBM_op_init(em, &bmop, op,
+		             "automerge verts=%hv dist=%f",
+		             BM_ELEM_SELECT, mergedist);
+		BMO_op_exec(em->bm, &bmop);
 
-	count = BMO_slot_map_count(em->bm, &bmop, "targetmapout");
-
-	if (!EDBM_op_callf(em, op, "weld_verts targetmap=%s", &bmop, "targetmapout")) {
-		BMO_op_finish(em->bm, &bmop);
-		return OPERATOR_CANCELLED;
+		if (!EDBM_op_finish(em, &bmop, op, TRUE)) {
+			return OPERATOR_CANCELLED;
+		}
 	}
+	else {
+		EDBM_op_init(em, &bmop, op,
+		             "find_doubles verts=%hv dist=%f",
+		             BM_ELEM_SELECT, mergedist);
+		BMO_op_exec(em->bm, &bmop);
 
-	if (!EDBM_op_finish(em, &bmop, op, TRUE)) {
-		return OPERATOR_CANCELLED;
+		if (!EDBM_op_callf(em, op, "weld_verts targetmap=%s", &bmop, "targetmapout")) {
+			BMO_op_finish(em->bm, &bmop);
+			return OPERATOR_CANCELLED;
+		}
+
+		if (!EDBM_op_finish(em, &bmop, op, TRUE)) {
+			return OPERATOR_CANCELLED;
+		}
 	}
 	
+	count = totvert_orig - em->bm->totvert;
 	BKE_reportf(op->reports, RPT_INFO, "Removed %d vert%s", count, (count == 1) ? "ex" : "ices");
 
 	EDBM_update_generic(C, em, TRUE);
@@ -2082,6 +2098,7 @@
 	RNA_def_float(ot->srna, "mergedist", 0.0001f, 0.000001f, 50.0f, 
 	              "Merge Distance",
 	              "Minimum distance between elements to merge", 0.00001, 10.0);
+	RNA_def_boolean(ot->srna, "use_unselected", 1, "Unselected", "Merge selected to other unselected vertices");
 }
 
 /************************ Vertex Path Operator *************************/




More information about the Bf-blender-cvs mailing list