[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18983] branches/bmesh/blender/source/ blender/bmesh: another dissolve bugfix.

Joseph Eagar joeedh at gmail.com
Sun Feb 15 15:02:27 CET 2009


Revision: 18983
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18983
Author:   joeedh
Date:     2009-02-15 15:02:27 +0100 (Sun, 15 Feb 2009)

Log Message:
-----------
another dissolve bugfix.  commented out some code I put there for helping in debugging tracing, also added another case to conversion code.  I think I got the pocket case Briggs has always talked about, e.g. a three-edged face where two edges share the same verts. So that at least shouldn't crash, though not really sure if simply ignoring such faces is a good idea.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c
    branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c	2009-02-15 14:01:27 UTC (rev 18982)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_to_editmesh.c	2009-02-15 14:02:27 UTC (rev 18983)
@@ -152,6 +152,9 @@
 	else {
 		eve4= NULL;
 	}
+	
+	if (eve1==eve2 || eve1==eve3 || eve1==eve4 || eve2==eve3 || eve3==eve4
+	    || eve2==eve4) return NULL;
 
 	efa = addfacelist(em, eve1, eve2, eve3, eve4, NULL, NULL);
 	if (!efa) return NULL;

Modified: branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c	2009-02-15 14:01:27 UTC (rev 18982)
+++ branches/bmesh/blender/source/blender/bmesh/operators/dissolveops.c	2009-02-15 14:02:27 UTC (rev 18983)
@@ -84,23 +84,23 @@
 						bmesh_kf(bm, f);
 						bmesh_ke(bm, fe);
 					}
-				} else if (f->len == 3) {
+				} /*else if (f->len == 3) {
 					BMEdge *ed[3];
 					BMVert *vt[3];
 					BMLoop *lp[3];
 					int i=0;
 
-					/*check for duplicate edges*/
+					//check for duplicate edges
 					l = BMIter_New(&liter, bm, BM_LOOPS_OF_FACE, f);
 					for (; l; l=BMIter_Step(&liter)) {
-						ed[i++] = l->e;	
-						lp[i++] = l;
+						ed[i] = l->e;	
+						lp[i] = l;
 						vt[i++] = l->v;
 					}
 					if (vt[0] == vt[1] || vt[0] == vt[2]) {
 						i += 1;
 					}
-				}
+				}*/
 			}
 		}
 		if (oldlen == len) break;





More information about the Bf-blender-cvs mailing list