[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50195] trunk/blender/source/blender: mesh bridge tool now leaves bridge faces selected.

Campbell Barton ideasman42 at gmail.com
Fri Aug 24 19:58:50 CEST 2012


Revision: 50195
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50195
Author:   campbellbarton
Date:     2012-08-24 17:58:49 +0000 (Fri, 24 Aug 2012)
Log Message:
-----------
mesh bridge tool now leaves bridge faces selected.

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

Modified: trunk/blender/source/blender/bmesh/operators/bmo_connect.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_connect.c	2012-08-24 17:01:35 UTC (rev 50194)
+++ trunk/blender/source/blender/bmesh/operators/bmo_connect.c	2012-08-24 17:58:49 UTC (rev 50195)
@@ -39,6 +39,7 @@
 #define FACE_NEW	2
 #define EDGE_MARK	4
 #define EDGE_DONE	8
+#define FACE_OUT	16
 
 void bmo_connect_verts_exec(BMesh *bm, BMOperator *op)
 {
@@ -514,6 +515,8 @@
 					fprintf(stderr, "%s: in bridge! (bmesh internal error)\n", __func__);
 				}
 				else {
+					BMO_elem_flag_enable(bm, f, FACE_OUT);
+
 					l_iter = BM_FACE_FIRST_LOOP(f);
 
 					if (l_1)      BM_elem_attrs_copy(bm, bm, l_1,      l_iter); l_iter = l_iter->next;
@@ -525,6 +528,8 @@
 		}
 	}
 
+	BMO_slot_buffer_from_enabled_flag(bm, op, "faceout", BM_FACE, FACE_OUT);
+
 cleanup:
 	BLI_array_free(ee1);
 	BLI_array_free(ee2);

Modified: trunk/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-08-24 17:01:35 UTC (rev 50194)
+++ trunk/blender/source/blender/editors/mesh/editmesh_tools.c	2012-08-24 17:58:49 UTC (rev 50195)
@@ -4802,19 +4802,32 @@
 
 static int edbm_bridge_edge_loops_exec(bContext *C, wmOperator *op)
 {
+	BMOperator bmop;
 	Object *obedit = CTX_data_edit_object(C);
 	BMEditMesh *em = BMEdit_FromObject(obedit);
+	const int use_merge = RNA_boolean_get(op->ptr, "use_merge");
+	const float merge_factor = RNA_float_get(op->ptr, "merge_factor");
 	
-	if (!EDBM_op_callf(em, op,
-	                   "bridge_loops edges=%he use_merge=%b merge_factor=%f",
-	                   BM_ELEM_SELECT, RNA_boolean_get(op->ptr, "use_merge"), RNA_float_get(op->ptr, "merge_factor")))
-	{
+	EDBM_op_init(em, &bmop, op,
+	             "bridge_loops edges=%he use_merge=%b merge_factor=%f",
+	             BM_ELEM_SELECT, use_merge, merge_factor);
+
+	BMO_op_exec(em->bm, &bmop);
+
+	/* when merge is used the edges are joined and remain selected */
+	if (use_merge == FALSE) {
+		EDBM_flag_disable_all(em, BM_ELEM_SELECT);
+		BMO_slot_buffer_hflag_enable(em->bm, &bmop, "faceout", BM_FACE, BM_ELEM_SELECT, TRUE);
+	}
+
+	if (!EDBM_op_finish(em, &bmop, op, TRUE)) {
 		return OPERATOR_CANCELLED;
+
 	}
-	
-	EDBM_update_generic(C, em, TRUE);
-
-	return OPERATOR_FINISHED;
+	else {
+		EDBM_update_generic(C, em, TRUE);
+		return OPERATOR_FINISHED;
+	}
 }
 
 void MESH_OT_bridge_edge_loops(wmOperatorType *ot)




More information about the Bf-blender-cvs mailing list