[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15485] trunk/blender/source/blender/src/ editmesh_add.c: Bugfix #16535

Ton Roosendaal ton at blender.org
Tue Jul 8 13:47:30 CEST 2008


Revision: 15485
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15485
Author:   ton
Date:     2008-07-08 13:47:22 +0200 (Tue, 08 Jul 2008)

Log Message:
-----------
Bugfix #16535

The infamous Fkey 'make face' in editmode still failed in cases, giving
an annoying convex error popup.
Found two errors in this code:

- not all cases were evaluated to make a face of 4 vertices (6 cases)
- the function that makes always a face when the 4 edges already exist 
  failed when not in vertex-select mode.

I also removed the popup, but added a print... its still not perfect.

Modified Paths:
--------------
    trunk/blender/source/blender/src/editmesh_add.c

Modified: trunk/blender/source/blender/src/editmesh_add.c
===================================================================
--- trunk/blender/source/blender/src/editmesh_add.c	2008-07-08 10:18:34 UTC (rev 15484)
+++ trunk/blender/source/blender/src/editmesh_add.c	2008-07-08 11:47:22 UTC (rev 15485)
@@ -379,7 +379,7 @@
 	
 	/* find the 4 edges */
 	for(eed= em->edges.first; eed; eed= eed->next) {
-		if(eed->f & SELECT) {
+		if( (eed->f & SELECT) || (eed->v1->f & eed->v2->f & SELECT) ) {
 			if(eedar[0]==NULL) eedar[0]= eed;
 			else if(eedar[1]==NULL) eedar[1]= eed;
 			else if(eedar[2]==NULL) eedar[2]= eed;
@@ -765,6 +765,7 @@
 				/* if 4 edges exist, we just create the face, convex or not */
 					efa= addface_from_edges();
 					if(efa==NULL) {
+						
 						/* the order of vertices can be anything, 6 cases to check */
 						if( convex(neweve[0]->co, neweve[1]->co, neweve[2]->co, neweve[3]->co) ) {
 							efa= addfacelist(neweve[0], neweve[1], neweve[2], neweve[3], NULL, NULL);
@@ -775,17 +776,16 @@
 						else if( convex(neweve[0]->co, neweve[2]->co, neweve[1]->co, neweve[3]->co) ) {
 							efa= addfacelist(neweve[0], neweve[2], neweve[1], neweve[3], NULL, NULL);
 						}
-						
-						else if( convex(neweve[1]->co, neweve[2]->co, neweve[3]->co, neweve[0]->co) ) {
-							efa= addfacelist(neweve[1], neweve[2], neweve[3], neweve[0], NULL, NULL);
+						else if( convex(neweve[0]->co, neweve[1]->co, neweve[3]->co, neweve[2]->co) ) {
+							efa= addfacelist(neweve[0], neweve[1], neweve[3], neweve[2], NULL, NULL);
 						}
-						else if( convex(neweve[1]->co, neweve[3]->co, neweve[0]->co, neweve[2]->co) ) {
-							efa= addfacelist(neweve[1], neweve[3], neweve[0], neweve[2], NULL, NULL);
+						else if( convex(neweve[0]->co, neweve[3]->co, neweve[2]->co, neweve[1]->co) ) {
+							efa= addfacelist(neweve[0], neweve[3], neweve[2], neweve[1], NULL, NULL);
 						}
-						else if( convex(neweve[1]->co, neweve[3]->co, neweve[2]->co, neweve[0]->co) ) {
-							efa= addfacelist(neweve[1], neweve[3], neweve[2], neweve[0], NULL, NULL);
+						else if( convex(neweve[0]->co, neweve[3]->co, neweve[1]->co, neweve[2]->co) ) {
+							efa= addfacelist(neweve[0], neweve[3], neweve[1], neweve[2], NULL, NULL);
 						}
-						else error("The selected vertices form a concave quad");
+						else printf("cannot find nice quad from concave set of vertices\n");
 					}
 				}
 			}





More information about the Bf-blender-cvs mailing list