# dae2skp.rb - SketchUp Pro 2021 용. 종합 DAE 를 임포트해 원점에 배치하고 .skp 로 저장.
# 사용법: 이 파일을 SketchUp Plugins 폴더에 복사한 뒤 SketchUp 을 .skp 인자와 함께 실행.
#   (주의) SketchUp 의 DAE 임포트는 컴포넌트 "정의"만 만들고 인스턴스를 배치하지 않는다.
#   그래서 화면에 아무것도 안 보인다 -> 아래처럼 add_instance 로 직접 배치해야 한다.
D   = 'E:/도진팩토리/3D스캔및티칭시스템/fab_models/sketchup/'
DAE = D + '500PRO_전체부재.dae'
SKP = D + '500PRO_전체부재.skp'
LOG = D + '_dae2skp.log'

def lg(m); File.open(LOG, 'a') { |f| f.puts("#{Time.now} #{m}") }; end

begin
  m = Sketchup.active_model
  m.entities.clear!
  before = m.definitions.map { |d| d.name }
  ok = m.import(DAE, false)
  newdefs = m.definitions.reject { |d| before.include?(d.name) }
  lg("import=#{ok} newdefs=#{newdefs.map { |d| "#{d.name}(#{d.entities.length})" }.join(' ')}")
  target = newdefs.max_by { |d| d.entities.length }
  target.name = '500PRO_전체부재' rescue nil
  inst = m.entities.add_instance(target, Geom::Transformation.new)
  inst.name = '500PRO_전체부재' rescue nil
  m.options['UnitsOptions']['LengthUnit'] = 2 rescue nil   # 십진 밀리미터
  m.options['UnitsOptions']['LengthFormat'] = 0 rescue nil
  bb = m.bounds
  lg("placed ents=#{m.entities.length} bbox_mm=#{bb.width.to_mm.round}x#{bb.height.to_mm.round}x#{bb.depth.to_mm.round} min=#{bb.min.to_a.map { |v| v.to_mm.round }}")
  m.active_view.zoom_extents
  m.save(SKP)
  lg("saved exists=#{File.exist?(SKP)} size=#{File.size(SKP)}")
rescue => e
  lg("ERROR #{e.class}: #{e.message}")
end
