puts "========================"
puts "OCC22804"
puts "========================"
puts ""
#######################################################################
# Sewing increases tolerance of vertices for redundant value.
#######################################################################

set BugNumber OCC22804

catch {pload XDE}

restore [locate_data_file OCC22804-sew_bug.brep] a 

set tol 200
sewing result ${tol} a

set ToleranceList [tolerance result]
regexp {Tolerance MAX=([-0-9.+eE]+)} $ToleranceList full oTolerance
regexp {FACE[ \t]*: MAX=([-0-9.+eE]+)} $ToleranceList full FaceTolerance
regexp {EDGE[ \t]*: MAX=([-0-9.+eE]+)} $ToleranceList full EdgeTolerance
regexp {VERTEX[ \t]*: MAX=([-0-9.+eE]+)} $ToleranceList full VertexTolerance

set percent_max 0.1

proc GetPercent {Value GoodValue} {
    set Percent 0.
    if {${GoodValue} != 0.} {
	set Percent [expr abs(${Value} - ${GoodValue}) / abs(double(${GoodValue})) * 100.]
    } elseif {${Value} != 0.} {
	set Percent [expr abs(${GoodValue} - ${Value}) / abs(double(${Value})) * 100.]
    } else {
	set Percent 0.
    }
    return ${Percent}
}
set IsOk 1

set minTolerance ${EdgeTolerance}
if { ${minTolerance}  > ${VertexTolerance} } {
   set minTolerance $(VertexTolerance)
}

set minTolerance_percent [GetPercent ${minTolerance} ${oTolerance}]
puts "minTolerance_percent = ${minTolerance_percent} %"
if { ${minTolerance_percent}  > ${percent_max} } {
   set IsOk 0
}

if { ${IsOk}  == 0 } {
   puts "${BugNumber}: Faulty"
} else {
   puts "${BugNumber}: OK"
}

checkmaxtol result 2279.641703013865
checknbshapes result -shell 1
checkfreebounds result 5

set square 1.22542e+09
set 2dviewer 0
