Ë
    !¢j­  ã                   óŠ   — d Z ddl­ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dd	lZd
„ Zedk(  r e«        y	y	)zNRe-tessellate original STEP; retain mesh topology for inspection and GNN data.é    )Ú*)ÚSTEPControl_Reader)ÚIFSelect_RetDone)ÚBRepMesh_IncrementalMesh)ÚStlAPI_Writer)ÚTopExp_Explorer)ÚTopAbs_SOLIDÚTopAbs_SHELLÚTopAbs_FACENc                  ó0  — t        «       } | j                  t        t        t        j                  d«      «      «      «      t        k(  sJ ‚| j                  «        | j                  «       }i }dt        fdt        fdt        ffD ]N  \  }}t        ||«      }d}|j                  «       r&|dz  }|j                  «        |j                  «       rŒ&|||<   ŒP t        |dddd	«       t!        «       }d|_        |j%                  |t        t&        d
z  «      «      sJ ‚t(        j*                  j-                  t        t&        d
z  «      «      }|j/                  «        |j1                  «        |j3                  «        |j5                  «        |j7                  d«      }	|	j9                  «        |	j5                  «        |	j;                  «        t<        j?                  |	j@                  «      }
t<        j?                  |	jB                  «      }t<        j?                  |	jD                  «      }t<        jG                  t<        jI                  t<        jK                  |d d …ddgf   |d d …ddgf   |d d …ddgf   g«      d¬«      d¬«      }t<        jL                  jO                  |
|d d …df      |
|d d …df      z
  d¬«      }t<        jQ                  t<        jS                  t<        jU                  ||d d …df      ||d d …df      z  d¬«      dd«      «      }t<        jW                  tY        |
«      «      }t<        jW                  tY        |
«      «      }dD ]R  }t<        jZ                  j]                  ||d d …|f   |«       t<        jZ                  j]                  ||d d …|f   d«       ŒT t<        j_                  |t<        ja                  |d«      z  «      }t<        jK                  ||d d …d d d…f   gd¬«      }t<        jc                  t&        dz  |
je                  d«      |je                  d«      |jf                  je                  d«      |jf                  je                  d«      t<        ji                  |d«      je                  d«      |je                  d«      ¬«       t&        dz  jk                  tl        jo                  |
jq                  «       js                  d«      ju                  «       |jq                  «       js                  d«      ju                  «       |jq                  «       ju                  «       |js                  d«      ju                  «       dœd¬«      «       |jw                  tY        |j@                  «      tY        |jB                  «      tY        |
«      tY        |«      dd|jy                  «       |
j{                  d«      ju                  «       |
j}                  d«      ju                  «       gdœ«       t&        dz  jk                  tl        jo                  |d¬«      «       t        |d	¬«       i }t        j                  d«      D �]  }d|j€                  v rd nd!}tƒ        j„                  |«      j‡                  d«      }t‰        d|jŠ                  «      D �cg c]”  }|dz   |j�                  |d«      |j�                  |d«      |j�                  |d«      |j�                  |d"«      |j�                  |d«      d#k(  rd n|j�                  |d«      |j�                  |d«      j�                  «       d$œ‘Œ– }}t        |j‘                  t’        «      «      |j€                  |d%œ||<   �Œ t&        d&z  jk                  tl        jo                  |dd¬'«      «       y c c}w )(Nz*.stpÚsolidsÚshellsÚfacesr   é   g333333Ã?FTzdesign_fine.stliÀ]  é   )Úaxiséÿÿÿÿ)r   r   zcad_graph.npzÚfloat32Úint64)Úpos_mmÚnormalÚfaceÚ
edge_indexÚedge_length_mmÚnormal_turn_degzdesign_graph.jsoné   é   )Ú	positionsÚnormalsÚ	trianglesr   )Ú,Ú:)Ú
separators)Úmesh_verticesÚmesh_trianglesÚgraph_nodesÚgraph_directed_edgesÚlinear_deflection_mmÚangular_deflection_radÚ
watertightÚbbox_mmzdesign_metadata.json)Úindent)Úflushz2*/*.XlsÚ18Ú18h01Ú16hé   Ú )ÚrowÚmachineÚchannelÚunitÚtypeÚvalueÚ	timestamp)ÚsourceÚsheetÚrowszprocess.json)r,   Úensure_ascii)Jr   ÚReadFileÚstrÚnextÚDATAÚglobr   ÚTransferRootsÚOneShaper	   r
   r   r   ÚMoreÚNextr   r   Ú	ASCIIModeÚWriteÚOUTÚo3dÚioÚread_triangle_meshÚremove_duplicated_verticesÚremove_degenerate_trianglesÚremove_duplicated_trianglesÚcompute_vertex_normalsÚsimplify_quadric_decimationÚremove_unreferenced_verticesÚcompute_triangle_normalsÚnpÚasarrayÚverticesr    Úvertex_normalsÚuniqueÚsortÚconcatenateÚlinalgÚnormÚarccosÚclipÚsumÚzerosÚlenÚaddÚatÚrad2degÚmaximumÚsavez_compressedÚastypeÚTÚtileÚ
write_textÚjsonÚdumpsÚflattenÚroundÚtolistÚupdateÚis_watertightÚminÚmaxÚprintÚnameÚxlrdÚopen_workbookÚsheet_by_indexÚrangeÚnrowsÚ
cell_valueÚstripÚrelative_toÚROOT)ÚreaderÚshapeÚcountsru   ÚkindÚexÚnÚwÚmeshÚsmallÚpr   r\   ÚedgesÚedge_lengthÚangleÚturnÚcountÚiÚdirectedÚprocessÚpathr;   Úrr<   s                            úanalysis/prepare_design.pyÚmainr”      s  € ÜÓ€F v§¡´s¼4ÄÇ	Á	È'Ó@RÓ;SÓ7TÓ'UÔWgÒ'gÐ gÐ'gØ
×ÑÔ §¡Ó!2˜5¸"°6Ø¤Ð-¨x¼Ð.EÀwÌ{ÐF[Ó\‰	ˆˆTÜ˜5 Ó&ˆ¨ qØ�g‰gŒi˜˜1™˜˜RŸW™WœYˆb�g‰g�iØˆˆtŠð ]ô ˜U 3 u¨S°Ô6Üƒo€A %�a”k¨q¯w©w°u¼SÄÐEVÑAVÓ=WÔ/XÐ(XÐ/XÜ	�‰×	"Ñ	"¤3¤sÐ+<Ñ'<Ó#=Ó	>€DØ×#Ñ#Ô% d×&FÑ&FÔ&HÈ×IiÑIiÔIkÐlp÷  mHñ  mHô  mJà
×
*Ñ
*¨5Ó
1€E°%×2TÑ2TÔ2VÐW\×WsÑWsÔWuÐv{÷  wUñ  wUô  wWÜ‡j�j�—‘Ó €A¤r§z¡z°%·/±/Ó'B ÌÏ
É
ÐSX×SgÑSgÓHhÀ4Ü
�)‰)”B—G‘GœBŸN™N¨E²!°Q°q°E°'©N¸5ÂÀAÀaÀ5À¹>È%ÒPQÐSTÐUVÐRWÐPWÉ.Ð+YÓZÐ`a�GÓbÐhiˆ)Ó
j€EÜ—	‘	—‘˜q ¢q¨ s¡™}¨Q¨u²Q°q°S©z©]Ñ:À�ÓB€KÜ
�)‰)”B—G‘GœBŸF™F 4¨ªa°¨c©
Ñ#3°D¸ºqÀ¸s¹Ñ4DÑ#DÈ!˜FÓLÈRÐPQÓRÓ
S€EÜ	�‰”#�a“&Ó	€D¤§¡¬¨Q«Ó 0˜%Ûˆ”2—6‘6—9‘9˜T %ª¨!¨¡*¨UÔ3´B·F±F·I±I¸eÀEÊ!ÈAÈ#ÁJÈqÕ4QˆUÜ	�‰�DœŸ™ E¨!Ó,Ñ,Ó	-€DÜ�^‰^˜U 5ª©4¨R¨4¨¡=Ð1°qˆ^Ó9€HÜ×Ñœ˜OÑ+°1·8±8¸IÓ3FÈdÏkÉkÐZcÓNdÐjo×jqÑjq×jxÑjxð  zAó  kBð  NV÷  NXñ  NX÷  N_ñ  N_ð  `gó  Nhô  xz÷  xñ  xð  @Kð  LMó  xN÷  xUñ  xUð  V_ó  x`ð  qu÷  q|ñ  q|ð  }Fó  qGÐô  HÜÐ	Ñ×(Ñ(¬¯©ÀÇÁÃ×ARÑARÐSTÓAU×A\ÑA\ÓA^Ðim×iuÑiuÓiw×i}Ñi}Ð~ó  jA÷  jHñ  jHó  jJð  W\÷  Wdñ  Wdó  Wf÷  Wmñ  Wmó  Woð  BF÷  BLñ  BLð  MNó  BO÷  BVñ  BVó  BXñ  5Yð  en¨ó  *oô  pØ
‡M�M¤3 t§}¡}Ó#5ÄsÈ4Ï>É>ÓGZÔilÐmnÓioô  HKð  LTó  HUð  mpð  JMð  [_÷  [mñ  [mó  [oð  {|÷  {@ñ  {@ð  ABó  {C÷  {Jñ  {Jó  {Lð  MN÷  MRñ  MRð  STó  MU÷  M\ñ  M\ó  M^ð  z_ñ  `ô  aÜÐ	Ñ×+Ñ+¬D¯J©J°vÀQ¨JÓ,GÔHÌÈvÐ\`ÕIaØ€GÜ—	‘	˜*×%ˆØ §	¡	Ñ)‰W¨uˆ¼4×;MÑ;MÈdÓ;S×;bÑ;bÐcdÓ;e°Uô MRð  STð  UZ÷  U`ñ  U`ô  Maó  bñ  Mað  HI�Q�q‘S 5×#3Ñ#3°A°aÓ#8À5×CSÑCSÐTUÐVWÓCXÐ`e×`pÑ`pÐqrÐstÓ`uð  ~C÷  ~Nñ  ~Nð  OPð  QRó  ~Sð  di÷  dtñ  dtð  uvð  wxó  dyð  {}ò  d}ñ  \`ð  CH÷  CSñ  CSð  TUð  VWó  CXð  ej÷  euñ  euð  vwð  xyó  ez÷  e@ñ  e@ó  eBó  Cð  Maˆð  bÜ # D×$4Ñ$4´TÓ$:Ó ;ÀEÇJÁJÐVZÑ[ˆ�‹ð &ô 	ˆÑ×#Ñ#¤D§J¡J¨w¸aÈU JÓ$SÕTùò bs   ÚB^Ú__main__)Ú__doc__Ú
ac28_auditÚOCP.STEPControlr   ÚOCP.IFSelectr   ÚOCP.BRepMeshr   Ú
OCP.StlAPIr   Ú
OCP.TopExpr   Ú
OCP.TopAbsr	   r
   r   rv   r”   Ú__name__© ó    r“   Ú<module>r¡      s;   ðÙ TÜ Ý .Ý )Ý 1Ý $Ý &ß <Ñ <Û òUð@ ˆZÒ™�Ðr    