# encoding: UTF-8
begin
  puts "###DZW-SCAN-JEOLGOK-20260919"
  m = Sketchup.active_model
  got = m.path.to_s.tr("\\", "/")
  puts "PATH=#{got}"
  sel = m.selection.to_a
  if sel.empty?
    puts "STOP: 선택 0개"
  else
    puts "선택 개수: #{sel.length}"
    f = lambda { |b| "c=#{b.center.to_a.map { |v| v.to_mm.round(1) }.inspect} min=#{b.min.to_a.map { |v| v.to_mm.round(1) }.inspect} max=#{b.max.to_a.map { |v| v.to_mm.round(1) }.inspect}" }
    ub = Geom::BoundingBox.new
    sel.each_with_index do |e, i|
      nm = (e.respond_to?(:name) ? e.name.to_s : '')
      dn = (e.is_a?(Sketchup::ComponentInstance) ? e.definition.name.to_s : '')
      ub.add(e.bounds)
      puts "  SEL[#{i}] #{e.class} name='#{nm}' def='#{dn}' #{f.call(e.bounds)}"
    end
    puts "선택 전체 #{f.call(ub)}"
    puts "-- 활성 컨텍스트 이웃 (선택 제외) --"
    ctr = ub.center
    nbrs = []
    m.active_entities.each do |e|
      next unless e.is_a?(Sketchup::Group) || e.is_a?(Sketchup::ComponentInstance)
      next if sel.include?(e)
      b = e.bounds
      d = b.center.distance(ctr).to_mm
      nm = (e.respond_to?(:name) ? e.name.to_s : '')
      dn = (e.is_a?(Sketchup::ComponentInstance) ? e.definition.name.to_s : '')
      nbrs << [d, "  NB #{e.class} name='#{nm}' def='#{dn}' d=#{d.round(1)} #{f.call(b)}"]
    end
    nbrs.sort_by! { |a| a[0] }
    puts "이웃 총 #{nbrs.length}개, 가까운 25개:"
    nbrs.first(25).each { |a| puts a[1] }
  end
rescue Exception => e
  puts "EXC #{e.class}: #{e.message}"
end
nil
