MantisBT - Open CASCADE
View Issue Details
0027024Open CASCADE[OCCT] OCCT:Modeling Algorithmspublic2015-12-21 16:092017-12-05 17:08
[OCCT] 7.4.0* 
0027024: Regression in test cases bugs modalg_1 buc60462*
This regression is the result of fix to the issue #26717.
testgrid bugs modalg_1 buc60462*
No tags attached.
Issue History
2015-12-21 16:09nbvNew Issue
2015-12-21 16:09nbvAssigned To => msv
2015-12-23 09:51nbvRelationship addedchild of 0026717
2015-12-23 09:51nbvRelationship addedrelated to 0026132
2015-12-23 09:51msvPrioritynormal => high
2015-12-23 09:51msvTarget Version7.1.0 => 7.0.0
2015-12-23 10:34msvPriorityhigh => normal
2015-12-23 14:41nbvNote Added: 0049508
2015-12-23 14:42nbvNote Edited: 0049508bug_revision_view_page.php?bugnote_id=49508#r12645
2015-12-23 14:44nbvNote Edited: 0049508bug_revision_view_page.php?bugnote_id=49508#r12646
2015-12-23 15:02nbvNote Edited: 0049508bug_revision_view_page.php?bugnote_id=49508#r12647
2015-12-23 15:03nbvNote Edited: 0049508bug_revision_view_page.php?bugnote_id=49508#r12648
2015-12-23 15:04nbvNote Edited: 0049508bug_revision_view_page.php?bugnote_id=49508#r12649
2015-12-23 15:07msvAssigned Tomsv => nbv
2015-12-23 15:07msvStatusnew => assigned
2015-12-23 15:07msvTarget Version7.0.0 => 7.1.0
2016-10-25 19:04msvTarget Version7.1.0 => 7.2.0
2017-07-24 09:33msvTarget Version7.2.0 => 7.3.0
2017-12-05 17:08msvTarget Version7.3.0 => 7.4.0*

2015-12-23 14:41   
(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[]> ax
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[]> bclearobj
Draw[]> bcleartool
Draw[]> baddobj a
Draw[]> baddtool b
Draw[]> bfillds
Draw[]> bopds
Draw[]> bopindex b_46
# Index: 158

Draw[]> bopsp
#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.