
    j\j?                     >   d Z ddlZddlZddlZddlZddlZddlZdZej                  j                  ej                  j                  ej                  j                  e            d      Zej                  j                  ed      ZdZdZd Zd	 Zed
k(  r e        yy)u  convert_all.py — 상청 STEP 일괄 변환 → fab_models/ 한 곳에 모으기 [CEO 2026-07-19]
F:\설우 의 STEP(.stp/.step)을 웹용 OBJ로 변환. 파일명은 영문(m001..)로(한글 404 방지),
표시이름은 한글 유지해 fab_models/manifest.json 에 목록 기록. 제관 웹이 이 목록으로 부재 선택.
큰 STEP은 거친 tolerance로 속도↑. 이미 있으면 건너뜀(재개 가능).
실행: python convert_all.py
    Nu	   F:\설우
fab_modelszmanifest.json-   <   c                     | j                  dd      j                  d      }t        j                  j	                  |d         d   }t        |      dk\  r|d   nd}|dz   |z   j                  d	      d d
 S )N/\r       z / z /P   )replacesplitospathsplitextlenstrip)r   pfnctxs       convert_all.pydisplay_namer      sp    S$%%d+A			!B%	 	#Bq6Q;!B%BC%K"##D)#2..    c                  l   t        j                  t        d       g } t         j                  j	                  t
              r>t        j                  t        j                  t
        d            j                  dg       } | D ch c]  }|d   	 }}t        j                  t         j                  j                  t        dd      d	      D cg c]E  }|j                         j!                  d
      r$t         j                  j#                  |      dkD  r|G }}|j%                  d        dd l}t)        | D cg c]  }|j                  d      s| c}      }d}|D ]=  }||v r	|t*        k\  r n,t         j                  j#                  |      dz  dz  }	||z   dz   }
d|
z  }t         j                  j                  t        |      }	 t-        j,                         }|j.                  j1                  |      }|	t2        kD  rdnd}|j5                  dd      }|j6                  j9                  |||d       dd l}|j                  |      }|j9                  |       t        j<                  |       |j>                  D cg c]  }tA        |d       }}| jC                  tE        |      d|z   |tA        t         j                  j#                  |      dz  dz  d      |t)        |jF                        d       t        j                  t
        dd      jI                  t        jJ                  | t-        jL                  d      ddd             |dz  }tO        d|
tE        |      d d  |t-        j,                         |z
  t)        |jF                        fz         @ tO        d$|t)        |       t
        fz         y # t        $ r g } Y Nw xY wc c}w c c}w c c}w c c}w # t        $ rE}tO        d!t         j                  jQ                  |      d"tS        |      d d#        Y d }~d }~ww xY w)%NT)exist_okzutf-8)encodingitemssrcz**z*.st*p)	recursive)z.stpz.stepi  c                 @    t         j                  j                  |       S )N)r   r   getsize)fs    r   <lambda>zmain.<locals>.<lambda>    s    RWW__Q/r   )keyr   filei      z	m%03d.objg      ?g?z.objz.stl)	toleranceangularTolerancezfab_models/)namer&   r   mbsize_mmfaceswz%Y-%m-%d %H:%M)r   updatedF)ensure_asciiindentu    [%d] %s → %s (%.0f초, 면 %d)(   z[skip] z: r   u:   완료 — 이번 변환 %d개, 누적 %d개. manifest: %s)*r   makedirsOUTr   existsMANIFESTjsonloadioopenget	ExceptionglobjoinSRC_ROOTlowerendswithr"   sortcadqueryr   LIMITtime	importers
importStepMAX_MBr   	exportersexporttrimeshremoveextentsroundappendr   r-   writedumpsstrftimeprintbasenamestr)manmdone_srcr#   filescqnmader   r+   idxoutfoutpt0shptoltmp_stlrK   xextes                        r   mainrg      su   KKd#
C	ww~~h99RWWX@AEEgrRS"%&#Q%#H&		"'',,xx"HTXY YY1	""#45"''//!:Lx:W YE Y	JJ/J0-1quuV}Q-.AD(?H5=%WW__S!$&t+$hlS ww||C&	JB,,))#.Cf##Cll662GLLWcRW%Aqxx~ryy7I'(yy1y!51:yC1JJS 1=;M"%0Ed0J40OPQ*R#&QWW? @ GGHcG4::4::PS`d`m`mn~`  GA  PU  ^_  <`  aAID4\#=NsPR=SUY[_[d[d[fgi[iknopovovkw7xxy+ 0 

F$PSTWPXZbIc
cdA "#"&Y ." 2  	JRWW%5%5c%:CF3BKHII	JsW   >N? OA
O9OOB6O%O D	O%?OO O%%	P3.:P..P3__main__)__doc__r   r9   r7   rE   r=   	tracebackr?   r   r>   dirnameabspath__file__r4   r6   rH   rD   r   rg   __name__ r   r   <module>rp      s    + * *ggll277??277??8#<=|L77<<_-	
/%eN zF r   