# encoding: UTF-8
m = Sketchup.active_model
def r1(v); (v*25.4).round(1); end
sel = m.selection
puts "SEL COUNT=#{sel.length}"
sel.each_with_index do |e,i|
  nm = e.respond_to?(:name) ? e.name.to_s : ""
  nm = e.definition.name.to_s if nm.empty? && e.respond_to?(:definition)
  puts "[#{i}] #{e.class} name=#{nm.inspect}"
  next unless e.respond_to?(:bounds)
  b = e.bounds
  puts "    bbox (#{r1(b.min.x)},#{r1(b.min.y)},#{r1(b.min.z)})..(#{r1(b.max.x)},#{r1(b.max.y)},#{r1(b.max.z)})  size #{((b.max.x-b.min.x)*25.4).round(1)} x #{((b.max.y-b.min.y)*25.4).round(1)} x #{((b.max.z-b.min.z)*25.4).round(1)}"
  if e.respond_to?(:transformation)
    t=e.transformation
    puts "    scale #{t.xscale.round(5)}/#{t.yscale.round(5)}/#{t.zscale.round(5)} solid=#{(e.manifold? rescue 'n/a')}"
  end
  ents = e.respond_to?(:definition) ? e.definition.entities : nil
  next unless ents
  puts "    ents=#{ents.length} faces=#{ents.grep(Sketchup::Face).length} edges=#{ents.grep(Sketchup::Edge).length} groups=#{ents.grep(Sketchup::Group).length} comps=#{ents.grep(Sketchup::ComponentInstance).length}"
  ents.grep(Sketchup::Group).each{|s| sb=s.bounds; puts "      sub #{s.name.inspect} (#{r1(sb.min.x)},#{r1(sb.min.y)},#{r1(sb.min.z)})..(#{r1(sb.max.x)},#{r1(sb.max.y)},#{r1(sb.max.z)}) solid=#{(s.manifold? rescue '?')}"}
  ents.grep(Sketchup::ComponentInstance).each{|s| sb=s.bounds; puts "      cmp #{s.definition.name.inspect} (#{r1(sb.min.x)},#{r1(sb.min.y)},#{r1(sb.min.z)})..(#{r1(sb.max.x)},#{r1(sb.max.y)},#{r1(sb.max.z)})"}
end
"RD1"
