puts "========"
puts "OCC29734"
puts "========"
puts ""
#######################
# Compute global properties of tessellated shape
#######################
proc compmass { mass props1 props2 } {
  regexp {Mass +: +([-0-9.+eE]+)} ${props1} full m1
  regexp {Mass +: +([-0-9.+eE]+)} ${props2} full m2 
  if { abs ($m1 - $m2) > 1.e-7  } {
    puts "Error : The $mass by geometry is $m1, by triangulation is  $m2"
  } else {
    puts "The $mass are equal  $m1"
  }
}
#
proc compmoms { props1 props2 } {
  set moments {"IX" "IY" "IZ"}
  foreach moment $moments {
    set exp_string "${moment} = +(\[-0-9.+eE\]+)" 
    regexp "${exp_string}" ${props1} full m1
    regexp "${exp_string}" ${props2} full m2
    if { abs ($m1 - $m2) > 1.e-7  } {
      puts "Error : The ${moment} by geometry is $m1, by triangulation is  $m2"
    } else {
      puts "The moments ${moment} are equal  $m1"
    }
  }
}
#
proc compprops { shape } {
  upvar ${shape} ${shape}
  set commands {"lprops" "sprops" "vprops"}
  foreach command ${commands} {
    switch $command {
      "lprops"    { set mass "length" }
      "sprops"    { set mass "area" }
      "vprops"    { set mass "volume" }
    }
    puts ""
    set props1 [eval $command ${shape} -full]
    set props2 [eval $command ${shape} -full -tri]
    compmass $mass $props1 $props2
    compmoms $props1 $props2
  }
}

#For shapes consisted from planar polygonal faces 
#results of computation of global properties using exact geometry 
#and using triangulations must be the same
#It is checked by this test
box b1 1 2 3
box b2 3 2 1
ttranslate b2 .5 .5 .5
trotate b2 0 0 0 1 1 1 30
bfuse ff b1 b2
incmesh ff .01
set tri_info [eval trinfo ff]
puts $tri_info

# check of equality calculations by triangulation and exact geometry
#set shape "ff"
compprops ff
