# encoding: UTF-8
m = Sketchup.active_model
def mmv(p); [(p.x*25.4).round(1),(p.y*25.4).round(1),(p.z*25.4).round(1)]; end
["RJ102-0604_LH_20260918","RJ102-0602_RH_20260918"].each do |nm|
  g = m.entities.grep(Sketchup::Group).find{|x| x.name==nm}
  next unless g
  tr = g.transformation
  puts "== #{nm} inner loops (X 3700-4700) =="
  seen = []
  g.entities.grep(Sketchup::Face).each do |f|
    f.loops.each do |lp|
      next if lp.outer?
      pts = lp.vertices.map{|v| v.position.transform(tr)}
      cx = pts.map{|p| p.x}.inject(:+)/pts.length*25.4
      cy = pts.map{|p| p.y}.inject(:+)/pts.length*25.4
      cz = pts.map{|p| p.z}.inject(:+)/pts.length*25.4
      next unless cx > 3700 && cx < 4700
      xs=pts.map{|p| p.x*25.4}; ys=pts.map{|p| p.y*25.4}; zs=pts.map{|p| p.z*25.4}
      dim = [xs.max-xs.min, ys.max-ys.min, zs.max-zs.min].map{|v| v.round(1)}
      key = [cx.round(1),cy.round(1),cz.round(1)]
      next if seen.any?{|s| (s[0]-key[0]).abs<1 && (s[1]-key[1]).abs<1 && (s[2]-key[2]).abs<1}
      seen << key
      puts "  ctr=#{key.inspect} dim=#{dim.inspect} edges=#{lp.edges.length}"
    end
  end
  puts "  (none)" if seen.empty?
  puts "  total=#{seen.length}"
end
"SURVEY4"
