puts "TODO OCC23610 ALL: should be less then or equal to the minimal tolerance value of its sub-shapes"

puts "========"
puts "OCC23610"
puts "========"
puts ""
########################################################################################################
## checkshape command does not detect mismatch of the tolerance values among the sub-shapes of the shape
########################################################################################################

restore [locate_data_file buc60462b.brep] b

foreach Face [explode b f] {
  if {[checkshape $Face] == "This shape seems to be valid"} {
     set ToleranceList [tolerance $Face]
     regexp {FACE +: +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=([-0-9.+eE]+)} $ToleranceList full MaxTol_face AvgTol_face MinTol_face
     regexp {EDGE +: +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=([-0-9.+eE]+)} $ToleranceList full MaxTol_edge AvgTol_edge MinTol_edge
     regexp {VERTEX +: +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=([-0-9.+eE]+)} $ToleranceList full MaxTol_vertex AvgTol_vertex MinTol_vertex
     if {${MaxTol_face} > ${MinTol_edge} || ${MaxTol_face} > ${MinTol_vertex}} {
        puts "Error: the tolerance value of the FACE $Face should be less then or equal to the minimal tolerance value of its sub-shapes(EDGES and VERTICES)"
     }
  }
}

foreach Edge [explode b e] {
  if {[checkshape $Edge] == "This shape seems to be valid"} {
     set ToleranceList [tolerance $Edge]
     regexp {EDGE +: +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=([-0-9.+eE]+)} $ToleranceList full MaxTol_edge AvgTol_edge MinTol_edge
     regexp {VERTEX +: +MAX=([-0-9.+eE]+) +AVG=([-0-9.+eE]+) +MIN=([-0-9.+eE]+)} $ToleranceList full MaxTol_vertex AvgTol_vertex MinTol_vertex
     if {${MaxTol_edge} > ${MinTol_vertex}} {
        puts "Error: the tolerance value of the EDGE $Edge should be less then or equal to the minimal tolerance value of its sub-shapes(VERTICES)"
     }
  }
}
