DiscussionsIssue archiveOCCT:Modeling Algorithms

Archived issue #0025890

Intersection algorithm produces curves overlaped

Open CASCADEOCCT:Modeling Algorithmsclosed21 public notes

Search issues

Description

Intersection algorithm produces curves overlapped

Steps to reproduce

restore Attachment 2 (BREP) f1
restore Attachment 3 (BREP) f2

set log [bopcurves f1 f2]
regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv

#NbCurv = 6

set nbshapes_expected "
Number of shapes in shape
 VERTEX : 0
 EDGE : 0
 WIRE : 0
 FACE : 0
 SHELL : 0
 SOLID : 0
 COMPSOLID : 0
 COMPOUND : 1
 SHAPE : 1
"

for {set i 1} {$i <= $NbCurv} {incr i} {
  for {set j [expr $i+1]} {$j <= $NbCurv} {incr j} {
    puts " Check c_$i and c_$j"
    mkedge e1 c_$i
    mkedge e2 c_$j
    bcommon rr e1 e2
    checknbshapes rr -ref "${nbshapes_expected}" -t -m "Partition of 2 shapes"
  }
}

##############
WRONG OUTPUT
##############
...
   Check c_5 and c_6
...
Error : Partition of 2 shapes is WRONG because number of VERTEX entities in shape "rr" is 2
Error : Partition of 2 shapes is WRONG because number of EDGE entities in shape "rr" is 1
Error : Partition of 2 shapes is WRONG because number of WIRE entities in shape "rr" is 1
OK : Partition of 2 shapes is GOOD because number of FACE entities is equal to number of expected FACE entities
OK : Partition of 2 shapes is GOOD because number of SHELL entities is equal to number of expected SHELL entities
OK : Partition of 2 shapes is GOOD because number of SOLID entities is equal to number of expected SOLID entities
OK : Partition of 2 shapes is GOOD because number of COMPSOLID entities is equal to number of expected COMPSOLID entities
OK : Partition of 2 shapes is GOOD because number of COMPOUND entities is equal to number of expected COMPOUND entities
Error : Partition of 2 shapes is WRONG because number of SHAPE entities in shape "rr" is 5


Word "Error" must be caught.

Public activity

21 archived notes

Participants are labeled by their role within this record.

01Commenter 2
Branch [archived branch] has been created by Participant.

[revision removed]


Detailed log of new commits:

Author: nbv
Date: Thu Mar 5 11:30:00 2015 +0300

    0025890: Exception is raised during intersection between faces
    
    The reason of the exception has been eliminated.
02Commenter 2
Branch [archived branch] has been updated forcibly by Participant.

[revision removed]
03Commenter 3
Dear Mikhail,

Please review CR25890 branch.
04Commenter 2
Branch [archived branch] has been updated by Participant.

[revision removed]


Detailed log of new commits:

Author: nbv
Date: Thu Apr 30 16:11:21 2015 +0300

    Code optimization.

05Commenter 2
Branch [archived branch] has been updated by Participant.

[revision removed]


Detailed log of new commits:

Author: nbv
Date: Thu Apr 30 16:22:16 2015 +0300

    2nd optimization

06Commenter 6
Reviewed.
07Commenter 7
Dear Commenter 1,
Branch CR25890 from occt git-repository (and master from products git-repository) was compiled on Linux, MacOS and Windows platforms and tested on Release mode.
[revision removed]

Number of compiler warnings:

occt component :
Linux: 18 (18 on master)
Windows: 0 (0 on master)

products component :
Linux: 4 (4 on master)
Windows: 0 (0 on master)

Regressions/Differences:
http://occt-tests/CR25890-master-occt-64/Debian60-64/bugs/moddata_3/bug23471.html
bugs moddata_3(014) bug23471: FAILED

Testing cases:
http://occt-tests/CR25890-master-occt-64/Windows-64-VC10/bugs/modalg_6/bug25890.html
http://occt-tests/CR25890-master-occt-64/Debian60-64/bugs/modalg_6/bug25890.html
bugs modalg_6(011) bug25890: OK

Testing on Linux:
occt component :
Total MEMORY difference: 94963964 / 94619720 [+0.36%]
Total CPU difference: 56571.20999999974 / 51017.05999999946 [+10.89%]
products component :
Total MEMORY difference: 23760015 / 23780860 [-0.09%]
Total CPU difference: 18598.53 / 17217.47999999996 [+8.02%]

Testing on Windows:
occt component :
Total MEMORY difference: 57253533 / 57266778 [-0.02%]
Total CPU difference: 15692.873794698922 / 15810.99775189897 [-0.75%]
products component :
Total MEMORY difference: 15601310 / 15605919 [-0.03%]
Total CPU difference: 6189.916878699971 / 6275.40542669997 [-1.36%]

There are no differences in images found by testdiff.
08Commenter 2
Branch [archived branch] has been updated by Participant.

[revision removed]


Detailed log of new commits:

Author: mkv
Date: Tue May 5 19:54:27 2015 +0300

    Test case for issue CR25890

09Commenter 9
Dear nbv,
could you please review following test case
bugs modalg_6(011) bug25890
10Commenter 10
OK!
11Commenter 11
About regression in "bugs moddata_3(014) bug23471".

Test is BAD on the current MASTER (IR-2015-04-23). Try the following script to prove:

Draw[]> restore [locate_data_file OCC22790-cx.brep] b
Draw[]> explode b
Draw[]> mksurface s1 b_1
Draw[]> mksurface s2 b_3

Draw[]> viso c1v s1 0
Draw[]> uiso c1u s1 0

Draw[]> viso c2v s2 0
Draw[]> uiso c2u s2 0

Draw[]> bounds c1v u1 u2
#u1 = 0 u2 = 74350.7519540878

Draw[]> xdistcc c1v c2u u1 u2 100
#Max distance = 3.96773050108729e-012

Draw[]> bounds c2v u1 u2
#u1 = 0 u2 = 24095.0965554287

Draw[]> xdistcc c2v c1u u1 u2 100
#Max distance = 0

I.e. single intersection line must cover two iso-lines: U=0 and V=0 in the s1 surface AND U=0 and V=0 in the s2 surface. Nevertheless, it does not on the MASTER. Fix in CR25890 is not the reason of this problem.

CONCLUSION:
1. This test should be market by "TODO" and must be fixed later (in bug #0026190).
2. There are two bugs related to this: bug #0026190 and #0026191.
12Commenter 12
Dear Mikhail!

Please confirm above said.

Test bugs moddata_3(014) bug23471 has been amended (improved) - see attached file "bug23471". It must be added to the branch and retested.

13Commenter 13
I agree. Please update the test script.
14Commenter 2
Branch [archived branch] has been created by Participant.

[revision removed]


Detailed log of new commits:

Author: nbv
Date: Wed May 6 11:48:11 2015 +0300

    Test bugs/moddata_3/bug23471 has been corrected.

Author: nbv
Date: Wed May 6 11:46:18 2015 +0300

    0025890: Intersection algorithm produces curves overlaped
    
    1. Function IntImp_Int2S::ChangePoint() has been added (see cdl for detail information).
    2. Attempt to forbidden break WLine if it goes along surface boundary.
    
    Test case for issue CR25890
15Commenter 15
Script "bug23471" is pushed to the branch CR25890_1.
16Commenter 16
Dear Mikhail,

Branch CR25890_1 differs from CR25890 only bug23471 test case.

Therefore, there is no point in testing CR25890_1. Or you can add this script in the branch CR25890 without any testing.
17Commenter 2
Branch [archived branch] has been updated by Participant.

[revision removed]


Detailed log of new commits:

Author: mkv
Date: Wed May 6 20:49:54 2015 +0300

    Test case correction

18Commenter 18
Dear Commenter 1,
following test case is corrected, retested and pushed to branch CR25890 of occt git-repository
http://occt-tests/CR25890-master-occt-64/Debian60-64/bugs/moddata_3/bug23471.html
http://occt-tests/CR25890-master-occt-64/Windows-64-VC10/bugs/moddata_3/bug23471.html
bugs moddata_3(014) bug23471: BAD (known problem)
19Commenter 19
Branch CR25890 is TESTED.
20Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]
21Commenter 2
Branch [archived branch] has been deleted by Participant.

[revision removed]

Related records