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");
}
}
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs