0014531: Boolean Operation Algorithm fails
[occt.git] / tests / bugs / modalg_5 / bug25292_34
1 puts "================"
2 puts "OCC25292"
3 puts "================"
4 puts ""
5 #######################################################################
6 # Face/Face intersection algorithm gives different results for different order of the arguments
7 #######################################################################
8
9 proc GetRange { curve } {
10   global U1
11   global U2
12   
13   set log [uplevel dump $curve]
14   
15   regexp {Degree +([-0-9.+eE]+), +([-0-9.+eE]+) Poles, +([-0-9.+eE]+)} ${log} full Degree Poles KnotsPoles
16   puts "Degree=${Degree}"
17   puts "Poles=${Poles}"
18   puts "KnotsPoles=${KnotsPoles}"
19   puts ""
20
21   set Knot 1
22   set exp_string "Knots :\n\n +${Knot} :  +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
23   regexp ${exp_string} ${log} full U1 Mult1
24
25   set Knot ${KnotsPoles}
26   set exp_string " +${Knot} :  +(\[-0-9.+eE\]+) +(\[-0-9.+eE\]+)"
27   regexp ${exp_string} ${log} full U2 Mult2
28 }
29
30 puts "##############################"
31 puts "#!!!Search \"Attention\" keyword on this web-page for additional checking!!!"
32 puts "##############################"
33 puts ""
34
35 # intersect command
36
37 #This value must be equal to the analogical value in bug25292_33 and bug25292_34 of "bugs modalg_5" testgrid. 
38 set GoodNbCurv 1
39
40 restore [locate_data_file bug25292_f1.brep] f1
41 restore [locate_data_file bug25292_f2.brep] f2
42
43 mksurface s1 f1
44 mksurface s2 f2
45
46 #################
47 intersect res s2 s1
48 #################
49
50 set che [whatis res]
51 set ind [string first "3d curve" $che]
52 if {${ind} >= 0} {
53   #Only variable "res" exists
54   
55   if { $GoodNbCurv == 1 } {
56     puts "OK: Curve Number is good!"
57   } else {
58     puts "Error: Curve Number is bad!"
59   }
60   
61   set U1 0.0
62   set U2 0.0
63   
64   GetRange res
65
66   puts "U1 = ${U1}"
67   puts "U2 = ${U2}"
68
69   if {[expr {$U2 - $U1}] < 1.0e-20} {
70     puts "Error: Wrong curve's range!"
71   }
72   
73   xdistcs res s1 ${U1} ${U2} 10 1e-6 1e-7
74   xdistcs res s2 ${U1} ${U2} 10 1e-6 1e-7
75 } else {
76   set ic 1
77   set AllowRepeate 1
78   while { $AllowRepeate != 0 } {
79     set che [whatis res_$ic]
80     set ind [string first "3d curve" $che]
81     if {${ind} < 0} {
82       set AllowRepeate 0
83     } else {
84       set U1 0.0
85       set U2 0.0
86       
87       GetRange res_$ic
88       
89       puts "U1 = ${U1}"
90       puts "U2 = ${U2}"
91       
92       if {[expr {$U2 - $U1}] < 1.0e-20} {
93         puts "Error: Wrong curve's range!"
94       }
95       
96       xdistcs res_$ic s1 ${U1} ${U2} 10 1e-6 1e-7
97       xdistcs res_$ic s2 0 1 10 1e-6 1e-7
98       
99       incr ic
100     }
101   }
102   
103   if {[expr {$ic - 1}] == $GoodNbCurv} {
104     puts "OK: Curve Number is good!"
105   } else {
106     puts "Error: Curve Number is bad!"
107   }
108 }