(edited on: 2015-12-23 15:04)
After integration the fix for issue #26132, test case bugs modalg_1 buc60462_2 changed its behavior. Now it throws an exception.
The main reason of the exception is creation not same-ranged edge by Boolean operation.
The algorithm cannot find interference between the seam-edge of one face and the edge of another face. Try the following script for clarifying:
Draw> restore [locate_data_file buc60462c.brep] a
Draw> restore [locate_data_file buc60462d.brep] b
Draw> explode a f
Draw> explode b e
Draw> donly a_9 b_46
Draw> toler b_46
Draw> distmini dd a_9 b_46
#0.00167963807727123 ==> b_46 "intersects" the seam of a_9
Draw> baddobj a
Draw> baddtool b
Draw> bopindex b_46
# Index: 158
#Edge 158: z158_158 ==> b_46 were not split.
Later, 2D-curve (on a_9 face) with range [0, 0.0336066450154111] will be added in z158. At that, 3D-curve of z158 already has range [0, 1]. As result, z158 will become invalid.
In short, edge b_46 is coincided with face a_9. Therefore, in IntTools_EdgeFace::Perform() method, full range of b_46 edge is used as common-block between b_46 and a_9 (range is [0, 1]). And edge b_46 is not split. Before fix (on the current MASTER) b_46 edge was split by the point found by IntTools_BeanFaceIntersector and result seamed to be valid.
The good idea of the fix is that the reason of failing Edge-Edge intersection (between b_46 and seam of a_9) algorithm must be clarified. If edge-edge intersection find intersection point then myRange in IntTools_EdgeFace::Perform() method will contain correct range for checking coincidence.