92c39be9b00b07670b66b49b7c51306bf428692a
[occt.git] / tests / offset / end
1 set mist 0
2 if { [info exists command] && [string compare $command "mkoffset"] == 0 } {
3     regexp {Mass +: +([-0-9.+eE]+)} [lprops s] full sm
4     regexp {Tolerance +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=[-0-9.+eE]+} [tolerance s] full MaxTol_s AvgTol_s
5     puts "Length of shape a is equal to $sm"
6     set theOff [expr $sm * $off_param ]
7     puts [format "Considered Offset value is %s " $theOff]
8     if { ![catch { mkoffset result s 1 $theOff } catch_res] } {
9         renamevar result_1 result
10         if { ![catch { set chsh [checkshape result] } catch_chsh] } {
11             puts $chsh
12         } else {
13             puts "Error : $catch_chsh"
14             set mist 1
15         }
16     } 
17 }
18
19 if { [isdraw result] && $mist == 0} {
20     if { [info exists command] && [string compare $command "mkoffset"] == 0 } {
21         regexp {Mass +: +([-0-9.+eE]+)} [lprops result] full m
22
23         set vertex_list [explode result v]
24         set ll_v [llength $vertex_list]
25
26         set edge_list [explode result e]
27         set ll_e [llength $edge_list]
28
29         set wire_list [explode result w]
30         if { [string compare $wire_list ""] == 0} {
31             set wire_list result
32         }
33         set ll_w [llength $wire_list]
34
35         if { $ll_v == 0 } {
36             if { $theOff < 0 } {
37                 puts [format "Warning : The resulting shape is an empty COMPOUND"]
38             } else {
39                 puts [format "Error : The resulting shape is an empty COMPOUND"]
40             }
41             puts [whatis result]
42             puts [nbshapes result]
43             puts [checksection result]
44         } else {
45             puts [format "The resulting shape contains %s wires" $ll_w]
46             foreach wire $wire_list {
47                 puts "Info for $wire:"
48                 regexp {Tolerance +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=[-0-9.+eE]+} [tolerance $wire] full MaxTol_res AvgTol_res
49                 if { $MaxTol_res > $MaxTol_s } {
50                     puts "Error : big tolerance of shape $wire"
51                 }
52                 regexp {nb +alone +Vertices +: +([-0-9.+eE]+)} [checksection $wire] full num
53                 if { $num != 0 } {
54                     puts [format "Error : $wire is NOT a closed wire"]
55                 }
56                 mkplane res_plane $wire
57                 set chsh_res_plane [checkshape res_plane]
58                 if { [regexp {Faulty +shapes +in +variables +faulty_([-0-9.+eE]+) +to +faulty_([-0-9.+eE]+)} $chsh_res_plane full from_faulty to_faulty ] } {
59                     puts "Shape $wire has self-intersection"
60                 }
61             }
62         }
63
64         if { [string compare $length "empty"] != 0 } {
65             puts "The expected length is $length"
66             #check of change of length is < 1%
67             if { ($length != 0 && [expr 1.*abs($length - $m)/$length] > 0.01) || ($length == 0 && $m != 0) } {
68                 puts "Error : The length of the resulting shape is $m"
69             }
70         } else {
71             if { $m != 0 } {
72                 puts "Error : The offset is not valid. The length is $m"
73             }
74         }
75         # check for number of vertexes
76         if { [info exists nbsh_v ] } {
77             if { ($ll_v != $nbsh_v) || ($nbsh_v == 0 && $ll_v != 0) } {
78                 puts "Error : The resulting shape is WRONG because it must contain $nbsh_v vertexes instead of $ll_v"
79             } else {
80                 puts "The resulting shape contains $ll_v vertexes"
81             }
82         }
83         # check for number of edges
84         if { [info exists nbsh_e ] } {
85             if { ($ll_e != $nbsh_e) || ($nbsh_e == 0 && $ll_e != 0) } {
86                 puts "Error : The resulting shape is WRONG because it must contain $nbsh_e edges instead of $ll_e"
87             } else {
88                 puts "The resulting shape contains $ll_e edges"
89             }
90         }
91         # check for number of wires
92         if { [info exists nbsh_w ] } {
93             if { ($ll_w != $nbsh_w) || ($nbsh_w == 0 && $ll_w != 0) } {
94                 puts "Error : The resulting shape is WRONG because it must contain $nbsh_w wires instead of $ll_w"
95             } else {
96                 puts "The resulting shape contains $ll_w wires"
97             }
98         }
99     } else {
100         regexp {Mass +: +([-0-9.+eE]+)} [vprops s] full sm
101         regexp {Mass +: +([-0-9.+eE]+)} [vprops result] full m
102         
103         #check if result is valid
104         puts [checkshape result]
105         if { $m == 0 || $sm == $m } {
106             puts "Error : The offset is not valid. The volume is $m."
107         }
108         
109         #check of face's square value
110         foreach ResultFace [ explode result f ]  {
111             regexp {Mass +: +([-0-9.+eE]+)} [sprops $ResultFace] full fmass
112             if { $fmass < 0 } {
113                 puts "Error : The area of face $ResultFace of the resulting shape is negative."
114             }
115         }
116         #check for bsection
117         if { [info exists GlobFaces] && [llength $GlobFaces] == 0 } {
118             puts [ bsection re result s ]
119             if { [ isdraw re ] } {
120                 regexp {Mass +: +([-0-9.+eE]+)} [lprops $re] full remass 
121                 if { $remass != 0 } {
122                     puts "Error: bsection of the result and s is not equal to zero."
123                 }
124             }
125         }
126         
127         if { $volume > 0 } {
128             puts "The expected volume is $volume"
129         }
130         #check of change of volume is < 1%
131         if { ($volume > 0 && [expr 1.*abs($volume - $m)/$volume] > 0.01) || ($volume == 0 && $m != 0 && $sm != $m) } {
132             puts "Error : The volume of the resulting shape is $m"
133         }
134     }
135     if { $m > 0 } {
136         clear
137         smallview
138         donly result
139         fit
140         xwd $imagedir/${test_image}.png
141     } 
142 } else {
143     puts "Error : The offset cannot be built."
144 }
145
146 # to end a test script
147 puts "TEST COMPLETED"