Ë
    6Eºjü  ã                  óê   — d Z ddlmZ ddlZddlZddlZddlmZ ddlZ	ddl
Z
ddlmZmZmZ  ee«      j!                  «       j"                  d   Zedz  ZdZdd	„Zdd
„Zdd„Zdd„Zedk(  r e«        yy)zLPrepare the ME1a source contracts in an isolated AC28-style experiment root.é    )ÚannotationsN)ÚPath)Úply_infoÚ
sample_plyÚfull_scan_checké   zexperiments/ME1a_DTÚ14h06c                 ó 	  — ddl m}  ddlm} ddlm} ddlm} t        t        j                  d«      «      }t        t        j                  d«      «      }t        t        j                  d«      «      }t        t        j                  d	«      «      }|d
z  }t        dz  }	|	j                  dd¬«       |	dz  }
|
j                  «       s’ | «       }|j                  t        |«      «      |k7  rt!        d|› �«      ‚|j#                  «        |j%                  «       } ||dddd«        |«       }d|_        |j)                  |t        |
«      «      st!        d«      ‚t+        j,                  |«      j/                  d«      }g }t1        d|j2                  «      D ]ž  }|j5                  |d«      }|j7                  |dz   |j5                  |d«      |j5                  |d«      |j5                  |d«      |j5                  |d«      |dk(  rd n|t        |j5                  |d«      «      j9                  «       dœ«       Œ  |	dz  j;                  t=        j>                  t@        t        |jC                  t        «      «      |jD                  |dœidd¬«      «       |jG                  dd¬«      5 }tI        tK        jL                  |«      «      }d d d «       |	dz  j;                  t=        j>                  dd¬«      «       tO        |«      }tQ        |d «      \  }}tS        jT                  |	t@        › d!�z  |jW                  tR        jX                  «      |jZ                  ¬"«       t]        |«      }|	d#z  j;                  t=        j>                  d$t@        t        |jC                  t        «      «      t        |jC                  t        «      «      t        |jC                  t        «      «      t        |jC                  t        «      «      t_        |j                  d%«      «      D �cg c]   }t        |jC                  t        «      «      ‘Œ" c}|ta        |«      ta        |«      ta        |«      d&œdd¬«      «       tc        t=        j>                  t        |
«      |jZ                  ta        |«      ta        |«      ta        |«      d'œd¬(«      «       y # 1 sw Y   �ŒþxY wc c}w ))Nr   )ÚSTEPControl_Reader)ÚIFSelect_RetDone)ÚBRepMesh_IncrementalMesh)ÚStlAPI_Writerz.datas_2/4. CATIA File*/ME1a_DT FRT UPR LHD.stpz#datas_2/2. Excel File*/ME1a_DT*.Xlsz!datas_2/3. CSV File*/ME1a_DT*.csvzdatas_2/1. PLY File*/ME1a_DT*zall_merge_pointcloud_full.plyzanalysis/resultsT)ÚparentsÚexist_okzdesign_fine.stlzCannot read STEP: g333333Ã?FzSTEP tessellation export failedr   é   é   é   Ú é   )ÚrowÚmachineÚchannelÚunitÚtypeÚvalueÚ	timestampzprocess.json)ÚsourceÚsheetÚrows)Úensure_asciiÚindentz	utf-8-sig)ÚencodingÚnewlinezdefects.jsoni0W z_all_merge_pointcloud_full.npz)ÚpointsÚn_rawzsource_manifest.jsonzME1a_DT FRT UPR LHDzmerged_pointcloud_*.ply)ÚpartÚrunÚstepÚxlsÚ
defect_csvÚ	fused_plyÚcomponent_plyÚfused_checkÚsampled_scan_pointsÚdefect_rowsÚprocess_rows)ÚstlÚply_verticesr.   r0   r/   ©r!   )2ÚOCP.STEPControlr   ÚOCP.IFSelectr   ÚOCP.BRepMeshr   Ú
OCP.StlAPIr   ÚnextÚPROJECTÚglobÚOUTÚmkdirÚexistsÚReadFileÚstrÚRuntimeErrorÚTransferRootsÚOneShapeÚ	ASCIIModeÚWriteÚxlrdÚopen_workbookÚsheet_by_indexÚrangeÚnrowsÚ
cell_valueÚappendÚstripÚ
write_textÚjsonÚdumpsÚRUNÚrelative_toÚnameÚopenÚlistÚcsvÚ
DictReaderr   r   ÚnpÚsavez_compressedÚastypeÚfloat32Úcountr   ÚsortedÚlenÚprint)r   r   r   r   r(   r)   ÚdefectÚscan_dirÚfusedr   r1   ÚreaderÚshapeÚwriterr   r   Úrr   ÚfhÚdefectsÚinfoÚscanÚ_ÚcheckÚps                            õ   ì „ì²˜ë¦¬/prepare_me1a.pyÚsourcesrn      sè  € Ý2Ý-Ý5Ý(ä”—‘ÐMÓNÓO€DÜ
Œw�|‰|ÐAÓBÓ
C€CÜ”'—,‘,ÐBÓCÓD€FÜ”G—L‘LÐ!@ÓAÓB€HØÐ6Ñ6€EÜÐ%Ñ%€FØ
‡L�L˜¨€LÔ-à
Ð$Ñ
$€CØ�:‰:Œ<Ù#Ó%ˆØ�?‰?œ3˜t›9Ó%Ð)9Ò9ÜÐ!3°D°6Ð:Ó;Ð;Ø×ÑÔØ—‘Ó!ˆÙ  ¨¨U°C¸Ô>Ù“ˆ°U &Ô"2Ø�|‰|˜E¤3 s£8Ô,ÜÐ@ÓAÐAä×Ñ˜sÓ#×2Ñ2°1Ó5€EØ€DÜ�1�e—k‘kÖ"ˆØ× Ñ   AÓ&ˆØ�‰˜A ™E¨e×.>Ñ.>¸qÀ!Ó.DØ %× 0Ñ 0°°AÓ 6À×@PÑ@PÐQRÐTUÓ@VØ"×-Ñ-¨a°Ó3ÀeÈrÂk¹dÐW\Ü"% e×&6Ñ&6°q¸!Ó&<Ó"=×"CÑ"CÓ"EñGõ 	Hð #ð ˆnÑ×(Ñ(¬¯©´SÄSÈÏÉÔY`ÓIaÓEbØ27·*±*Àdñ;Lð 5MØ[`Ðijô*lô mà	�‰˜k°2ˆÔ	6¸"Ü”s—~‘~ bÓ)Ó*ˆ÷ 
7àˆnÑ×(Ñ(¬¯©°GÈ%ÐXYÔ)ZÔ[ä�E‹?€DÜ˜˜wÓ'�G€Dˆ!Ü×Ñ˜¤C 5Ð(FÐ!GÑGÐPT×P[ÑP[Ô\^×\fÑ\fÓPgÐos×oyÑoyÕzÜ˜DÓ!€EØÐ$Ñ$×0Ñ0´·±Ø%¬cÜ�D×$Ñ$¤WÓ-Ó.´s¸3¿?¹?Ì7Ó;SÓ7TÜ˜&×,Ñ,¬WÓ5Ó6ÄSÈ×IZÑIZÔ[bÓIcÓEdÜ?EÀhÇmÁmÐTmÓFnÔ?oÓpÑ?o¸!œ#˜aŸm™m¬GÓ4Õ5Ð?oÑpØ´S¸³YÜ˜7“|´S¸³Yñ=ð  !ô2%ô &ô 
Œ$�*‰*œS ›X°t·z±zÜ-0°«YÌÈDË	Ü%(¨£\ñ3à;<ô>õ ?÷! 
7Ñ	6üò qs   Ê#R>Ð%SÒ>Sc            	     óp  — t         dz  } t        j                  | d¬«      5 }|d   |d   z  |d   z  }|d   |   }|d   |   }|d	   |   }d d d «       t         d
z  }t        j                  |j	                  t        j
                  «      j	                  t        j
                  «      d d …df   j	                  t        j
                  «      |d d …df   j	                  t        j
                  «      ¬«       t        t        j                  t        |«      t        |«      dœ«      «       y # 1 sw Y   ŒâxY w)Nz data_processed/brep/faces_uv.npzF©Úallow_pickleÚ
trim_validÚnormal_validÚcurvature_validÚpos_mmÚnormalÚ	curvaturez*analysis/results/cad_surface_curvature.npzr   r   )Ú	points_mmÚparameter_normalsÚ	k1_per_mmÚ	k2_per_mm)Úcurvature_samplesÚoutput)r;   rW   ÚloadrX   rY   rZ   r^   rN   rO   r]   r?   )ÚpathÚdÚvalidÚposrv   ÚvaluesÚdests          rm   rw   rw   M   s  € ÜÐ3Ñ3€DÜ	�‰� EÕ	*¨aØ�,‘ ! NÑ"3Ñ3°aÐ8IÑ6JÑJˆØ�‰k˜%Ñ ˆØ�8‘˜UÑ#ˆØ�;‘ Ñ&ˆ÷	 
+ô
 Ð=Ñ=€DÜ×Ñ˜¨¯
©
´2·:±:Ó(>Ø*0¯-©-¼¿
¹
Ó*CØ"(ª¨A¨¡,×"5Ñ"5´b·j±jÓ"AØ"(ª¨A¨¡,×"5Ñ"5´b·j±jÓ"AõCô 
Œ$�*‰*¬3¨s«8¼sÀ4»yÑIÓ
JÕK÷ 
+Ð	*ús   ¡*D,Ä,D5c                 óv  — t         dz  } t        j                  | d¬«      5 }|d   j                  «       }|d   j                  «       }|d   j                  «       }|d   j                  «       }|d   j                  «       }|d	   j                  «       }|d
   j                  «       }d d d «       t        j                  t        j
                  t        j                  d d …df   dd«      «      «      }	t        j                  d   |	t        «      ¬«      t        j                  t        j                  |d   t        |«      ¬«      d«      z  }
t         dz  }t        j                  ||||d d …df   |
j                  t        j                  «      d d …df   |d d …df   |d d …df   d d …df   |d d …df   z  |d d …df   z  t        j                  t        |«      t        j                  t        j                  «      ¬«       t         dz  j                  t!        j"                  t%        | «      dddddœd¬«      «       t'        t!        j"                  t        |«      |j(                  d   t+        |d d …df   |d d …df   z  |d d …df   z  j-                  «       «      dœ«      «       y # 1 sw Y   �Œ	xY w)Nz%data_processed/graphs/graph_12000.npzFrp   ru   rv   ÚfaceÚ
edge_indexÚ	edge_attrÚxÚfeature_validr   éÿÿÿÿr   r   )ÚweightsÚ	minlength)r�   zanalysis/results/cad_graph.npzé   é   é   )ru   rv   r†   r‡   Úedge_length_mmÚnormal_turn_degrz   r{   Úgaussian_signed_per_mm2rt   Úcurvature_mapping_distance_mmz*analysis/results/cad_graph_provenance.jsonz'absolute principal curvature magnitudesz separate signed Gaussian channelz%all analytic curvature channels validz3mean angle to topological graph neighbours, degrees)r   Úanalytic_k1_k2ÚgaussianÚvalidityÚnormal_turnr   r3   )Úgraph_nodesÚdirected_edgesÚanalytic_curvature_valid_nodes)r;   rW   r~   ÚcopyÚrad2degÚarccosÚclipÚbincountr]   ÚmaximumrX   rY   rZ   ÚfullÚnanrM   rN   rO   r?   r^   rc   ÚintÚsum)Úgraphr€   rl   Únr†   ÚedgeÚattrr‰   r�   ÚangleÚturnÚouts               rm   Úlegacy_graphr­   \   sY  € ÜÐ9Ñ9€EÜ	�‰� UÕ	+¨qØˆh‰K×ÑÓˆ A h¡K×$4Ñ$4Ó$6 Ø�‰y�~‰~Óˆ¨¨,©×(<Ñ(<Ó(> Ø�‰~×"Ñ"Ó$ˆ¨!¨C©&¯+©+«- aÀÀ?ÑAS×AXÑAXÓAZ¸÷ 
,ô �J‰J”r—y‘y¤§¡¨ªa°¨d©°R¸Ó!;Ó<Ó=€EÜ�;‰;�t˜A‘w¨¼¸Q»Ô@Ä2Ç:Á:Ü
�‰�D˜‘G¤s¨1£vÔ.°óD3ñ 3€Dä
Ð0Ñ
0€CÜ×Ñ˜ A¨a°dÀtØ'+ªA¨q¨D¡zÀ4Ç;Á;ÌrÏzÉzÓCZØ"#¢A r E¡(°aº¸2¸±hØ01²!°R°%±Ø(-ªa°¨e©°uºQÀ¸U±|Ñ(CÀeÊAÈrÈEÁlÑ(RÜ68·g±g¼cÀ!»fÄbÇfÁfÌbÏjÉjÓ6Yõ[ô 	Ð7Ñ7×CÑCÄDÇJÁJÜ�e“*Ð0YØ6ÐDkØLñPð ô	Eô ô
 
Œ$�*‰*¤S¨£V¸t¿z¹zÈ!¹}Ü8;¸UÂ1ÀbÀ5¹\ÈEÒRSÐUWÐRWÉLÑ=XÐ[`ÒabÐdfÐafÑ[gÑ=g×<lÑ<lÓ<nÓ8oñqó rõ s÷' 
,Ñ	+ús   ¡BJ.Ê.J8c                 óÊ   — t        j                  t        ¬«      } | j                  ddg d¢¬«       | j	                  «       }t        t        t        dœ|j                     «        y )N)Údescriptionz--stageT)rn   rw   zlegacy-graph)ÚrequiredÚchoices)	ÚargparseÚArgumentParserÚ__doc__Úadd_argumentÚ
parse_argsrn   rw   r­   Ústage)ÚparserÚargss     rm   Úmainrº   u   sL   € Ü×$Ñ$´Ô9€FØ
×Ñ˜	¨DÒ:bÐÔcØ×ÑÓ€DÜ¤iÄÑNÈtÏzÉzÑZÕ\ó    Ú__main__)ÚreturnÚNone)r´   Ú
__future__r   r²   rU   rN   Úpathlibr   ÚnumpyrW   rE   Úaudit_ply_fusionr   r   r   Ú__file__Úresolver   r9   r;   rP   rn   rw   r­   rº   Ú__name__© r»   rm   Ú<module>rÇ      s|   ðá RÝ "ã Û 
Û Ý ã Û ç BÑ Bá
ˆx‹.×
 Ñ
 Ó
"×
*Ñ
*¨1Ñ
-€ØÐ%Ñ%€Ø€ó6?órLósó2]ð ˆzÒÙ…Fð r»   