# encoding: UTF-8
m = Sketchup.active_model
targets = ["하부마운트커버_v4R_20260919","하부마운트커버_v4_20260919","하부마운트커버_v3_20260919",
           "하부마운트커버_v2_20260919","하부마운트커버_20260919","사이드채널_H100_20260919",
           "사이드채널_구안_C100x50_hidden","오일탱크하부프레임_20260919","윈치하부보강_제안_20260918"]
n = 0
targets.each do |nm|
  g = m.entities.grep(Sketchup::Group).find{|x| x.name==nm}
  if g.nil?; puts "  #{nm}: 없음"; next; end
  sub = g.entities.grep(Sketchup::Group).length
  begin
    m.start_operation("삭제 #{nm}", true)
    g.erase!
    m.commit_operation
    n += 1
    puts "  [#{n}] #{nm} 삭제 (하위 #{sub}) / 하트비트 ents=#{m.entities.length}"
  rescue Exception => ex
    m.commit_operation rescue nil
    puts "  #{nm} 실패: #{ex.class}: #{ex.message}"
  end
end
puts "삭제 완료 #{n}개"
left = m.entities.grep(Sketchup::Group).select{|g| g.name =~ /커버|채널|보강|오일탱크/}.map{|g| g.name}
puts "잔여 커버/채널/보강 그룹 = #{left.inspect}"
# CEO 원본 보존 확인
["그룹#2"].each{|d| g=m.entities.grep(Sketchup::Group).find{|x| x.definition.name==d}
  puts "CEO 원본 #{d}: #{g ? '보존됨' : '없음!'}"}
ci = m.entities.grep(Sketchup::ComponentInstance).find{|c| c.definition.name =~ /그룹#2/}
puts "정배율 복원체: #{ci ? '보존됨' : '확인필요'}"
puts "트랙/RJ102/SWD 보존: #{m.entities.grep(Sketchup::Group).count{|g| g.name =~ /트랙|RJ102|SWD_/}}개"
"DEL2"
