[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53335] trunk/blender/source/blender/bmesh /operators: fix [#33651] Spin tool destroys unselected loose vertex

Campbell Barton ideasman42 at gmail.com
Thu Dec 27 02:02:36 CET 2012


Revision: 53335
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53335
Author:   campbellbarton
Date:     2012-12-27 01:02:32 +0000 (Thu, 27 Dec 2012)
Log Message:
-----------
fix [#33651] Spin tool destroys unselected loose vertex

bmesh.ops.extrude_face_region() didn't check for isolated verts (not connected to geometry), and removed them, happened for Ctrl+LMB extrude too.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
    trunk/blender/source/blender/bmesh/operators/bmo_extrude.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_dupe.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2012-12-26 20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_dupe.c	2012-12-27 01:02:32 UTC (rev 53335)
@@ -483,7 +483,7 @@
 {
 	BMOperator dupop, extop;
 	float cent[3], dvec[3];
-	float axis[3] = {0.0f, 0.0f, 1.0f};
+	float axis[3];
 	float rmat[3][3];
 	float phi;
 	int steps, do_dupli, a, usedvec;

Modified: trunk/blender/source/blender/bmesh/operators/bmo_extrude.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-12-26 20:59:35 UTC (rev 53334)
+++ trunk/blender/source/blender/bmesh/operators/bmo_extrude.c	2012-12-27 01:02:32 UTC (rev 53335)
@@ -315,27 +315,29 @@
 
 	/* calculate verts to delete */
 	BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
-		found = FALSE;
+		if (v->e) {  /* only deal with verts attached to geometry [#33651] */
+			found = FALSE;
 
-		BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
-			if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || !BMO_elem_flag_test(bm, e, EXT_DEL)) {
-				found = TRUE;
-				break;
-			}
-		}
-
-		/* avoid an extra loop */
-		if (found == TRUE) {
-			BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
-				if (!BMO_elem_flag_test(bm, f, EXT_INPUT)) {
+			BM_ITER_ELEM (e, &viter, v, BM_EDGES_OF_VERT) {
+				if (!BMO_elem_flag_test(bm, e, EXT_INPUT) || !BMO_elem_flag_test(bm, e, EXT_DEL)) {
 					found = TRUE;
 					break;
 				}
 			}
-		}
 
-		if (found == FALSE) {
-			BMO_elem_flag_enable(bm, v, EXT_DEL);
+			/* avoid an extra loop */
+			if (found == TRUE) {
+				BM_ITER_ELEM (f, &viter, v, BM_FACES_OF_VERT) {
+					if (!BMO_elem_flag_test(bm, f, EXT_INPUT)) {
+						found = TRUE;
+						break;
+					}
+				}
+			}
+
+			if (found == FALSE) {
+				BMO_elem_flag_enable(bm, v, EXT_DEL);
+			}
 		}
 	}
 	




More information about the Bf-blender-cvs mailing list