# encoding: UTF-8
# unhide1 — 원본 절곡판 2개 visible 복원 + 내 생성물(_6TB_) hidden
HB = 'E:/도진팩토리/3D스캔및티칭시스템/_자동화/inbox/_보류/_swap_heartbeat.txt'
def hb(s)
  begin
    File.open(HB, 'a:UTF-8') { |f| f.write("[#{Time.now.strftime('%H:%M:%S')}] #{s}\n"); f.flush }
  rescue Exception
    nil
  end
end
m = Sketchup.active_model
out = []
hb("START")
g2 = m.entities.grep(Sketchup::Group).find { |g| g.definition.name == "그룹#2" }
if g2.nil?
  out << "그룹#2 없음"
else
  kids = g2.entities.grep(Sketchup::Group)
  out << "그룹#2 자식 #{kids.length}개: #{kids.map { |g| [g.name, g.hidden?] }.inspect}"
  orig = kids.select { |g| ["SWD_02_t6_1000_jog30", "SWD_03_t6_1000_jog20"].include?(g.name) }
  mine = kids.select { |g| g.name.to_s.include?("_6TB_") }
  out << "원본 존재 #{orig.length}개 / 내 생성물 #{mine.length}개"
  begin
    base = File.basename(m.path, '.skp'); dir = File.dirname(m.path)
    bak = File.join(dir, "#{base}.bak_#{Time.now.strftime('%Y%m%d_%H%M%S')}_swap직전.skp")
    m.save_copy(bak)
    hb("BACKUP OK")
    m.start_operation("생성물 표시 / 원본 숨김", true)
    orig.each { |g| g.hidden = true }
    mine.each { |g| g.hidden = false; (g.visible = true rescue nil) }
    # 부모 그룹도 표시
    g2.hidden = false
    m.commit_operation
    hb("COMMIT OK")
  rescue Exception => e
    m.commit_operation rescue nil
    out << "ERR #{e.class}: #{e.message}"
    hb("ERR #{e.message}")
  end
end
# 검증
begin
  p2 = m.entities.grep(Sketchup::Group).find { |g| g.definition.name == "그룹#2" }
  if p2
    out << "검증: 그룹#2 hidden?=#{p2.hidden?} layer=#{p2.layer.name} layer_visible=#{p2.layer.visible?}"
    p2.entities.grep(Sketchup::Group).each do |g|
      out << "  #{g.name.inspect} hidden?=#{g.hidden?} visible?=#{(g.visible? rescue 'n/a')} layer=#{g.layer.name}(visible=#{g.layer.visible?}) bboxZ #{(g.bounds.min.z * 25.4).round(1)}..#{(g.bounds.max.z * 25.4).round(1)}"
    end
  end
  out << "모델 전체 hidden 그룹: #{m.entities.grep(Sketchup::Group).select { |g| g.hidden? }.map { |g| g.name }.inspect}"
rescue Exception => e
  out << "검증 실패 #{e.message}"
end
puts out.join("\n")
hb("END")
"SWAP"
