# encoding: UTF-8
m = Sketchup.active_model
def r1(v); (v*25.4).round(1); end
sel = m.selection
puts "SEL=#{sel.length} : #{sel.map{|e| n=e.respond_to?(:name) ? e.name.to_s : ''; n.empty? ? e.definition.name : n}.inspect}"
g = m.entities.grep(Sketchup::Group).find{|x| x.name=="조립부원판_20260919"}
if g
  b=g.bounds
  puts "조립부원판_20260919 존재: 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)}) solid=#{g.manifold?}"
  hs=[]
  g.entities.grep(Sketchup::Face).each{|f| f.loops.each{|lp| next if lp.outer?
    pts=lp.vertices.map{|v| v.position.transform(g.transformation)}
    k=[(pts.map{|p| p.x}.inject(:+)/pts.length*25.4).round(1),(pts.map{|p| p.y}.inject(:+)/pts.length*25.4).round(1)]
    hs << k unless hs.any?{|a| (a[0]-k[0]).abs<1 && (a[1]-k[1]).abs<1}}}
  puts "  구멍 #{hs.length}개, Y그룹=#{hs.map{|k| k[1]}.uniq.sort.inspect}"
else
  puts "조립부원판_20260919 : 없음(삭제됨)"
end
puts "== SWD_06_b 계열 최상위 인스턴스 =="
m.entities.grep(Sketchup::Group).each{|x| next unless x.name =~ /SWD_06/
  b=x.bounds; t=x.transformation
  puts "  #{x.name} (#{r1(b.min.x)},#{r1(b.min.y)},#{r1(b.min.z)})..(#{r1(b.max.x)},#{r1(b.max.y)},#{r1(b.max.z)}) scale #{t.xscale.round(4)}/#{t.yscale.round(4)}/#{t.zscale.round(4)} sel=#{m.selection.include?(x)}"}
"CHK10"
