# encoding: UTF-8
begin
  puts "###DZW-SHOW-TRACK-20260920"
  m = Sketchup.active_model
  bk = 'E:/도진팩토리/3D스캔및티칭시스템/_자동화/autosave/BACKUP_before_showtrack.skp'
  m.save_copy(bk)
  puts "BACKUP=#{bk}"
  ents = lambda { |s| s.is_a?(Sketchup::Group) ? s.entities : s.definition.entities }
  found = []
  walk = nil
  walk = lambda do |ent, path, depth|
    (ent.grep(Sketchup::Group) + ent.grep(Sketchup::ComponentInstance)).each do |s|
      nm = (s.respond_to?(:name) ? s.name.to_s : '')
      dn = s.is_a?(Sketchup::ComponentInstance) ? s.definition.name.to_s : ''
      lbl = nm.empty? ? (dn.empty? ? '(무명)' : dn) : nm
      up = lbl.upcase
      if lbl.include?('트랙') || up.include?('TRACK')
        found << ["#{path}/#{lbl}", s]
      end
      walk.call(ents.call(s), "#{path}/#{lbl}", depth + 1) if depth < 3
    end
  end
  walk.call(m.entities, '', 0)
  puts "트랙 관련 부재 #{found.length}개"
  changed = []
  layers = {}
  m.start_operation('트랙 표시 복구', true)
  found.each do |p, s|
    next unless s.valid?
    ly = s.layer
    layers[ly.name] = ly if ly
    h = s.hidden?
    vis_layer = ly.nil? ? true : ly.visible?
    if h
      s.hidden = false
      changed << "#{p} (hidden true->false)"
    end
    if ly && !ly.visible?
      ly.visible = true
      changed << "#{p} 태그 '#{ly.name}' 표시 ON"
    end
    puts "  #{p} hidden(전)=#{h} 태그='#{ly ? ly.name : 'nil'}' 태그표시(전)=#{vis_layer}"
  end
  m.commit_operation
  puts "변경 #{changed.length}건"
  changed.each { |c| puts "  #{c}" }
  # 트랙 현재 상태
  found.each do |p, s|
    next unless s.valid?
    b = s.bounds
    puts "  상태 #{p} hidden=#{s.hidden?} 태그표시=#{s.layer ? s.layer.visible? : 'n/a'} bbox min=#{b.min.to_a.map { |v| v.to_mm.round(0) }.inspect} max=#{b.max.to_a.map { |v| v.to_mm.round(0) }.inspect}"
  end
  vw = m.active_view
  cam0 = vw.camera
  begin
    c = m.bounds.center
    [['iso', Geom::Point3d.new(c.x - 6000.mm, c.y - 7000.mm, c.z + 3500.mm)],
     ['side', Geom::Point3d.new(c.x, c.y - 9000.mm, c.z + 500.mm)]].each do |tag, eye|
      vw.camera = Sketchup::Camera.new(eye, c, Geom::Vector3d.new(0, 0, 1))
      vw.zoom_extents
      f = "E:/도진팩토리/3D스캔및티칭시스템/_자동화/inbox/_track_#{tag}.png"
      vw.write_image(f, 1600, 1000, true)
      puts "캡처 #{tag}=#{f} 존재=#{File.exist?(f)}"
    end
  rescue Exception => e3
    puts "캡처 실패 #{e3.message}"
  ensure
    vw.camera = cam0
  end
  ok = m.save
  puts "SAVE=#{ok.inspect} modified?=#{m.modified?.inspect}"
  puts "DONE"
rescue Exception => e
  puts "EXC #{e.class}: #{e.message}"
  puts e.backtrace.first(6).join(" | ")
end
nil
