# encoding: UTF-8
begin
  puts "###DZW-REVERT-STEP2-20260920"
  m = Sketchup.active_model
  bk = 'E:/도진팩토리/3D스캔및티칭시스템/_자동화/autosave/BACKUP_before_revertstep2.skp'
  m.save_copy(bk)
  puts "BACKUP=#{bk}"
  ents = lambda { |s| s.is_a?(Sketchup::Group) ? s.entities : s.definition.entities }
  cov = nil
  m.entities.each do |e|
    next unless e.is_a?(Sketchup::Group) || e.is_a?(Sketchup::ComponentInstance)
    cov = e if (e.respond_to?(:name) ? e.name.to_s : '') == '하부프레임커버'
  end
  if cov.nil?
    puts "STOP: 커버 미발견"
  else
    newone = nil
    oldp = nil
    ents.call(cov).each do |s|
      next unless s.is_a?(Sketchup::Group) || s.is_a?(Sketchup::ComponentInstance)
      nm = (s.respond_to?(:name) ? s.name.to_s : '')
      newone = s if nm == 'SWD_04_t9_240x1046_정배율'
      ents.call(s).each do |q|
        next unless q.is_a?(Sketchup::Group) || q.is_a?(Sketchup::ComponentInstance)
        oldp = q if (q.respond_to?(:name) ? q.name.to_s : '') == 'SWD_04_t9_240x1046'
      end
    end
    m.start_operation('② 되돌리기', true)
    if newone && newone.valid?
      newone.erase!
      puts "삭제 'SWD_04_t9_240x1046_정배율'"
    else
      puts "미발견: SWD_04_t9_240x1046_정배율"
    end
    if oldp && oldp.valid?
      oldp.hidden = false
      puts "hidden 해제 'SWD_04_t9_240x1046' hidden=#{oldp.hidden?}"
    else
      puts "미발견: 원래 SWD_04"
    end
    m.commit_operation
    b = cov.bounds
    puts "커버 bbox(부모=월드) 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}"
    vw = m.active_view
    cam0 = vw.camera
    begin
      c = cov.bounds.center
      [['iso', Geom::Point3d.new(c.x - 3500.mm, c.y - 4500.mm, c.z + 2200.mm)],
       ['side', Geom::Point3d.new(c.x, c.y - 6000.mm, c.z + 300.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/_revert2_#{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"
  end
rescue Exception => e
  puts "EXC #{e.class}: #{e.message}"
  puts e.backtrace.first(5).join(" | ")
end
nil
