# encoding: UTF-8
m = Sketchup.active_model
targets = ["하부마운트커버_v5_20260919","하부마운트커버_v5_구안_hidden","하부마운트커버_v6_20260919"]
targets.each do |nm|
  g = m.entities.grep(Sketchup::Group).find{|x| x.name==nm}
  if g.nil?; puts "  #{nm}: 없음(이미 삭제)"; next; end
  n = g.entities.grep(Sketchup::Group).length
  begin
    m.start_operation("삭제 #{nm}", true)
    g.erase!
    m.commit_operation
    puts "  #{nm}: 삭제완료 (하위 #{n}개) / 모델 살아있음 ents=#{m.entities.length}"
  rescue Exception => ex
    m.commit_operation rescue nil
    puts "  #{nm}: 삭제실패 #{ex.class}: #{ex.message}"
  end
end
# 잔여 v5/v6 흔적 확인
left = m.entities.grep(Sketchup::Group).select{|g| g.name =~ /v5|v6/}.map{|g| g.name}
puts "잔여 v5/v6 그룹 = #{left.inspect}"
# v4 복원
begin
  m.start_operation("v4 표시", true)
  v4 = m.entities.grep(Sketchup::Group).find{|g| g.name=="하부마운트커버_v4_20260919"}
  if v4
    v4.hidden = false
    m.commit_operation
    b=v4.bounds
    puts "v4 복원: hidden=#{v4.hidden?} bbox (#{(b.min.x*25.4).round(1)},#{(b.min.y*25.4).round(1)},#{(b.min.z*25.4).round(1)})..(#{(b.max.x*25.4).round(1)},#{(b.max.y*25.4).round(1)},#{(b.max.z*25.4).round(1)}) 하위=#{v4.entities.grep(Sketchup::Group).length}"
  else
    m.commit_operation; puts "v4 없음!"
  end
rescue Exception => ex
  m.commit_operation rescue nil; puts "ERR #{ex.message}"
end
puts "현재 최상위 ents=#{m.entities.length}  hidden그룹=#{m.entities.grep(Sketchup::Group).select{|g| g.hidden?}.map{|g| g.name}.inspect}"
"DEL1"
