61c421bf |
1 | puts "============" |
2 | puts "OCC2755" |
3 | puts "============" |
4 | puts "" |
5 | ###################################################### |
6 | # Boolean Bug in OCC5.0 with the shape having a ellipse curve |
7 | ###################################################### |
8 | |
9 | restore [locate_data_file OCC2755.brep] a |
10 | |
11 | checkshape a |
12 | |
13 | explode a f |
14 | mksurface gs a_1 |
15 | set list [proj gs 0 10 50] |
16 | set ll 4 |
17 | |
18 | set good_Parameter1List [list 0 0 0 0] |
19 | set good_Parameter2List [list 40.4616826479819 211.944716681974 64.3186164305428 81.0582330575794] |
20 | set good_OriginXList [list 0 0 0 0] |
21 | set good_OriginYList [list 10 10 10 10] |
22 | set good_OriginZList [list 50 50 50 50] |
23 | set good_AxisXList [list -0.0300865818651084 -0.941236271764613 0.534306660761684 0.998573938898137] |
24 | set good_AxisYList [list 0.999547296325529 -0.337748842654791 -0.845290714645381 0.0533862206328518] |
25 | set good_AxisZList [list 0 0 0 0] |
26 | |
27 | proc CalculatePercent {value good_value} { |
28 | if {${good_value} == 0. && ${value} == 0.} { |
29 | set percent 0. |
30 | } else { |
31 | set percent [expr abs(${value} - ${good_value}) / double(${good_value}) * 100.] |
32 | } |
33 | return ${percent} |
34 | } |
35 | |
36 | if {[llength ${list}] != ${ll}} { |
37 | puts "Faulty OCC2755" |
38 | } else { |
39 | set percent_max 0.1 |
40 | set IsGood 1 |
41 | for {set i 0} {$i < ${ll}} {incr i} { |
42 | set dump_list [dump [lindex ${list} $i]] |
43 | regexp { *Parameters *: *([-0-9.+eE]+) *([-0-9.+eE]+)} $dump_list full Parameter1 Parameter2 |
44 | regexp { *Origin *:([-0-9.+eE]+), *([-0-9.+eE]+), *([-0-9.+eE]+)} $dump_list full OriginX OriginY OriginZ |
45 | regexp { *Axis *:([-0-9.+eE]+), *([-0-9.+eE]+), *([-0-9.+eE]+)} $dump_list full AxisX AxisY AxisZ |
46 | |
47 | set good_Parameter1 [lindex ${good_Parameter1List} $i] |
48 | set good_Parameter2 [lindex ${good_Parameter2List} $i] |
49 | set good_OriginX [lindex ${good_OriginXList} $i] |
50 | set good_OriginY [lindex ${good_OriginYList} $i] |
51 | set good_OriginZ [lindex ${good_OriginZList} $i] |
52 | set good_AxisX [lindex ${good_AxisXList} $i] |
53 | set good_AxisY [lindex ${good_AxisYList} $i] |
54 | set good_AxisZ [lindex ${good_AxisZList} $i] |
55 | |
56 | set Parameter1_percent [CalculatePercent ${Parameter1} ${good_Parameter1}] |
57 | set Parameter2_percent [CalculatePercent ${Parameter2} ${good_Parameter2}] |
58 | set OriginX_percent [CalculatePercent ${OriginX} ${good_OriginX}] |
59 | set OriginY_percent [CalculatePercent ${OriginY} ${good_OriginY}] |
60 | set OriginZ_percent [CalculatePercent ${OriginZ} ${good_OriginZ}] |
61 | set AxisX_percent [CalculatePercent ${AxisX} ${good_AxisX}] |
62 | set AxisY_percent [CalculatePercent ${AxisY} ${good_AxisY}] |
63 | set AxisZ_percent [CalculatePercent ${AxisZ} ${good_AxisZ}] |
64 | |
65 | puts "good_Parameter1 = ${good_Parameter1}" |
66 | puts "Parameter1 = ${Parameter1}" |
67 | puts "Parameter1_percent = ${Parameter1_percent}\n" |
68 | |
69 | puts "good_Parameter2 = ${good_Parameter2}" |
70 | puts "Parameter2 = ${Parameter2}" |
71 | puts "Parameter2_percent = ${Parameter2_percent}\n" |
72 | |
73 | puts "good_OriginX = ${good_OriginX}" |
74 | puts "OriginX = ${OriginX}" |
75 | puts "OriginX_percent = ${OriginX_percent}\n" |
76 | |
77 | puts "good_OriginY = ${good_OriginY}" |
78 | puts "OriginY = ${OriginY}" |
79 | puts "OriginY_percent = ${OriginY_percent}\n" |
80 | |
81 | puts "good_OriginZ = ${good_OriginZ}" |
82 | puts "OriginZ = ${OriginZ}" |
83 | puts "OriginZ_percent = ${OriginZ_percent}\n" |
84 | |
85 | puts "good_AxisX = ${good_AxisX}" |
86 | puts "AxisX = ${AxisX}" |
87 | puts "AxisX_percent = ${AxisX_percent}\n" |
88 | |
89 | puts "good_AxisY = ${good_AxisY}" |
90 | puts "AxisY = ${AxisY}" |
91 | puts "AxisY_percent = ${AxisY_percent}\n" |
92 | |
93 | puts "good_AxisZ = ${good_AxisZ}" |
94 | puts "AxisZ = ${AxisZ}" |
95 | puts "AxisZ_percent = ${AxisZ_percent}\n" |
96 | |
97 | if {${Parameter1_percent} > ${percent_max}} { |
98 | puts "OCC2755 Faulty (case 3 / $i)" |
99 | set IsGood 0 |
100 | } |
101 | if {${Parameter2_percent} > ${percent_max}} { |
102 | puts "OCC2755 Faulty (case 3 / $i)" |
103 | set IsGood 0 |
104 | } |
105 | if {${OriginX_percent} > ${percent_max}} { |
106 | puts "OCC2755 Faulty (case 3 / $i)" |
107 | set IsGood 0 |
108 | } |
109 | if {${OriginY_percent} > ${percent_max}} { |
110 | puts "OCC2755 Faulty (case 3 / $i)" |
111 | set IsGood 0 |
112 | } |
113 | if {${OriginZ_percent} > ${percent_max}} { |
114 | puts "OCC2755 Faulty (case 3 / $i)" |
115 | set IsGood 0 |
116 | } |
117 | if {${AxisX_percent} > ${percent_max}} { |
118 | puts "OCC2755 Faulty (case 3 / $i)" |
119 | set IsGood 0 |
120 | } |
121 | if {${AxisY_percent} > ${percent_max}} { |
122 | puts "OCC2755 Faulty (case 3 / $i)" |
123 | set IsGood 0 |
124 | } |
125 | if {${AxisZ_percent} > ${percent_max}} { |
126 | puts "OCC2755 Faulty (case 3 / $i)" |
127 | set IsGood 0 |
128 | } |
129 | |
130 | } |
131 | |
132 | if {${IsGood} == 1} { |
133 | puts "OCC2755 OK" |
134 | } |
135 | |
136 | } |
137 | |
138 | set 3dviewer 0 |
139 | |