[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