0025890: Intersection algorithm produces curves overlaped
[occt.git] / tests / bugs / moddata_3 / bug25782_1
CommitLineData
b70d2b09 1puts "========"
2puts "OCC25782"
3puts "========"
4puts ""
5######################################################
6# The result of intersection between two cylinders is incorrect
7# Algorithm must find one curves only
8######################################################
9
10set GoodNbCurv 1
11
12restore [locate_data_file bug25782_fz19.brep] b1
13restore [locate_data_file bug25782_fz53.brep] b2
14
15mksurface s1 b1
16mksurface s2 b2
17
18intersect res s1 s2
19
20set che [whatis res]
21set ind [string first "3d curve" $che]
22if {${ind} >= 0} {
23 #Only variable "res" exists
24
25 copy res res_1
26}
27
28set ic 1
29set AllowRepeate 1
30while { $AllowRepeate != 0 } {
31 set che [whatis res_$ic]
32 set ind [string first "3d curve" $che]
33 if {${ind} < 0} {
34 set AllowRepeate 0
35 } else {
36 dlog reset
37 dlog on
38 xdistcs res_$ic s1 0 100 10
39 set Log1 [dlog get]
40 set List1 [split ${Log1} {TD= \t\n}]
41 set Tolerance 1.0e-7
42 set Limit_Tol 1.0e-7
43 set D_good 0.
44 checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
45
46 dlog reset
47 dlog on
48 xdistcs res_$ic s2 0 100 10
49 set Log1 [dlog get]
50 set List1 [split ${Log1} {TD= \t\n}]
51 set Tolerance 1.0e-7
52 set Limit_Tol 1.0e-7
53 set D_good 0.
54 checkList ${List1} ${Tolerance} ${D_good} ${Limit_Tol}
55
56 incr ic
57 }
58}
59
60if {[expr {$ic - 1}] == $GoodNbCurv} {
61 puts "OK: Curve Number is good!"
62} else {
63 puts "Error: Curves Number is bad!"
64}
65
66set log [bopcurves b1 b2]
67
68regexp {Tolerance Reached=+([-0-9.+eE]+)\n+([-0-9.+eE]+)} ${log} full Toler NbCurv
69set MaxTol 1.e-7
70if {${Toler} > ${MaxTol}} {
71 puts "Error: Tolerance is too big!"
72}
73
74if {$NbCurv != $GoodNbCurv} {
75 puts "Error: Curves Number is bad!"
76}
77
78for {set i 1} {$i <= ${NbCurv}} {incr i} {
79 bounds c_$i U1 U2
80
81 if {[dval U2-U1] < 1.0e-9} {
82 puts "Error: Wrong curve's range!"
83 }
84
85 dlog reset
86 dlog on
87 xdistcs c_$i s1 U1 U2 10
88 set Log2 [dlog get]
89 set List2 [split ${Log2} {TD= \t\n}]
90 set Tolerance 1.0e-7
91 set Limit_Tol 1.0e-7
92 set D_good 0.
93 checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
94
95 dlog reset
96 dlog on
97 xdistcs c_$i s2 U1 U2 10
98 set Log2 [dlog get]
99 set List2 [split ${Log2} {TD= \t\n}]
100 set Tolerance 1.0e-7
101 set Limit_Tol 1.0e-7
102 set D_good 0.
103 checkList ${List2} ${Tolerance} ${D_good} ${Limit_Tol}
104}