# encoding: UTF-8
begin
  puts "###DZW-SCAN-BEND-20260919"
  m = Sketchup.active_model
  sel = m.selection.to_a
  if sel.length != 1
    puts "STOP: 선택 #{sel.length}개"
  else
    g = sel[0]
    puts "대상='#{g.name}' #{g.class}"
    ents = g.entities
    puts "엔티티수=#{ents.length} 클래스=#{ents.map { |e| e.class.to_s }.uniq.inspect}"
    ents.grep(Sketchup::Group).each { |sg| puts "  하위그룹 '#{sg.name}' ents=#{sg.entities.length}" }
    ents.grep(Sketchup::ComponentInstance).each { |ci| puts "  하위컴포넌트 '#{ci.definition.name}'" }
    faces = ents.grep(Sketchup::Face)
    puts "면 수=#{faces.length}"
    xs = []
    faces.each_with_index do |f, i|
      n = f.normal
      b = f.bounds
      f.vertices.each { |v| xs << v.position.x.to_mm }
      puts "  F[#{i}] area=#{(f.area * 0.00064516).round(1)}cm2 n=[#{n.x.round(3)},#{n.y.round(3)},#{n.z.round(3)}] x=[#{b.min.x.to_mm.round(1)},#{b.max.x.to_mm.round(1)}] y=[#{b.min.y.to_mm.round(1)},#{b.max.y.to_mm.round(1)}] z=[#{b.min.z.to_mm.round(1)},#{b.max.z.to_mm.round(1)}] nv=#{f.vertices.length}" if i < 40
    end
    puts "정점 X 고유값(mm, 반올림0.1) 정렬: #{xs.map { |v| v.round(1) }.uniq.sort.inspect}"
    ys = []
    zs = []
    ents.grep(Sketchup::Face).each { |f| f.vertices.each { |v| ys << v.position.y.to_mm.round(1); zs << v.position.z.to_mm.round(1) } }
    puts "정점 Y 고유값: #{ys.uniq.sort.inspect}"
    puts "정점 Z 고유값: #{zs.uniq.sort.inspect}"
    puts "변환행렬 원점=#{g.transformation.origin.to_a.map { |v| v.to_mm.round(1) }.inspect}"
  end
rescue Exception => e
  puts "EXC #{e.class}: #{e.message}"
end
nil
