Commit: 06bd7b70fba132f7ad353731e50b24ecc8b6c6d1
Author: Campbell Barton
Date:   Fri Dec 4 11:40:25 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rB06bd7b70fba132f7ad353731e50b24ecc8b6c6d1

Fix for booleans with edges overlapping faces exactly

===================================================================

M       source/blender/bmesh/tools/bmesh_intersect.c

===================================================================

diff --git a/source/blender/bmesh/tools/bmesh_intersect.c 
b/source/blender/bmesh/tools/bmesh_intersect.c
index 639071d..b7a9e15 100644
--- a/source/blender/bmesh/tools/bmesh_intersect.c
+++ b/source/blender/bmesh/tools/bmesh_intersect.c
@@ -483,6 +483,10 @@ static BMVert *bm_isect_edge_tri(
 
 static bool bm_loop_filter_fn(const BMLoop *l, void *UNUSED(user_data))
 {
+       if (BM_elem_flag_test(l->e, BM_ELEM_TAG)) {
+               return false;
+       }
+
        if (l->radial_next != l) {
                BMLoop *l_iter = l->radial_next;
                const char hflag_test = BM_ELEM_DRAW;  /* XXX, set in 
MOD_boolean.c */
@@ -1566,6 +1570,16 @@ bool BM_mesh_intersect(
 
                BM_mesh_edgesplit(bm, false, true, false);
        }
+       else if (boolean_mode != BOOLEAN_NONE) {
+               GSetIterator gs_iter;
+
+               /* no need to clear for boolean */
+
+               GSET_ITER (gs_iter, s.wire_edges) {
+                       BMEdge *e = BLI_gsetIterator_getKey(&gs_iter);
+                       BM_elem_flag_enable(e, BM_ELEM_TAG);
+               }
+       }
 #else
        (void)use_separate;
 #endif  /* USE_SEPARATE */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to