# -*- coding: utf-8 -*-
r"""step_to_web.py — 상청 STEP 파일을 웹 3D(STL)로 변환 [CEO 2026-07-19]
제관 뷰어가 브라우저에서 읽게. cadquery(OCP) import → STL export → trimesh 검증.
사용: python step_to_web.py "입력.stp" "출력.stl"
"""
import sys, os, time

def convert(src, dst):
    t0 = time.time()
    import cadquery as cq
    print('[변환] STEP 로드:', os.path.basename(src))
    shp = cq.importers.importStep(src)
    print('[변환] STL 내보내기(선형편차 0.5mm)...')
    cq.exporters.export(shp, dst, tolerance=0.5, angularTolerance=0.3)
    mb = os.path.getsize(dst) / 1024 / 1024
    # trimesh로 결과 확인
    try:
        import trimesh
        m = trimesh.load(dst)
        print('[검증] 면 %d개 · 크기(mm) %s' % (len(m.faces), [round(x, 1) for x in m.extents]))
    except Exception as e:
        print('[검증] trimesh 확인 실패(파일은 생성됨):', str(e)[:80])
    print('[완료] %s (%.1fMB, %.0f초)' % (dst, mb, time.time() - t0))

if __name__ == '__main__':
    src, dst = sys.argv[1], sys.argv[2]
    os.makedirs(os.path.dirname(dst) or '.', exist_ok=True)
    convert(src, dst)
