Revision: 44846
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44846
Author: campbellbarton
Date: 2012-03-13 02:18:46 +0000 (Tue, 13 Mar 2012)
Log Message:
-----------
bmesh: Pressing Fkey when a face cant be made falls back to the selection
history and creates edges in the order of verts selected, pressing F again will
make an NGon.
(fun feature while our bug tracker is down)
Modified Paths:
--------------
trunk/blender/source/blender/bmesh/operators/bmo_create.c
Modified: trunk/blender/source/blender/bmesh/operators/bmo_create.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_create.c 2012-03-13
01:55:25 UTC (rev 44845)
+++ trunk/blender/source/blender/bmesh/operators/bmo_create.c 2012-03-13
02:18:46 UTC (rev 44846)
@@ -1428,4 +1428,49 @@
BMO_elem_flag_enable(bm, f, ELE_OUT);
}
}
+ else {
+ /* tricky feature for making a line/edge from selection
history...
+ *
+ * Rather then do nothing, when 5+ verts are selected, check if
they are in our history,
+ * when this is so, we can make edges from them, but _not_ a
face,
+ * if it is the intention to make a face the user can just hit
F again since there will be edges next
+ * time around.
+ *
+ * if all history verts have ELE_NEW flagged and the total
number of history verts == totv,
+ * then we know the history contains all verts here and we can
continue...
+ */
+
+ BMEditSelection *ese;
+ int tot_ese_v = 0;
+
+ for (ese = bm->selected.first; ese; ese = ese->next) {
+ if (ese->htype == BM_VERT) {
+ if (BMO_elem_flag_test(bm, (BMElemF *)ese->ele,
ELE_NEW)) {
+ tot_ese_v++;
+ }
+ else {
+ /* unflagged vert means we are not in
sync */
+ tot_ese_v = -1;
+ break;
+ }
+ }
+ }
+
+ if (tot_ese_v == totv) {
+ BMVert *v_prev = NULL;
+ /* yes, all select-history verts are accounted for, now
make edges */
+
+ for (ese = bm->selected.first; ese; ese = ese->next) {
+ if (ese->htype == BM_VERT) {
+ v = (BMVert *)ese->ele;
+ if (v_prev) {
+ e = BM_edge_create(bm, v,
v_prev, NULL, TRUE);
+ BMO_elem_flag_enable(bm, e,
ELE_OUT);
+ }
+ v_prev = v;
+ }
+ }
+ }
+ /* done creating edges */
+ }
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs