Ë
    |§j¤  ã                   ój  — d dl Zd dlZd dlZd dlZd dlmZ d dlZ ee	«      j                  d   Zej                  j                  dedz  dz  «      Zej                  j                  e«      Zej"                  j%                  e«        G d„ dej&                  «      Zed	k(  r ej,                  «        yy)
é    N)ÚPathé   Ú
cad_graphsõ	   ì „ì²˜ë¦¬zcad_graphs.pyc                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚGraphGeometryTestsc           
      óÜ  — t        j                  g d¢g d¢g d¢g d¢gt        «      }t        j                  g d¢g d¢gt         j                  «      }t        j                  ||t        j                  g d¢d«      «      }|d	   |d
   }}| j                  |j                  d   d«       t        |j                  «      D ���ci c]  \  }\  }}t        |«      t        |«      f|“Œ! }	}}}|	j                  «       D ]¤  \  \  }}}|	||f   }
| j                  t        ||df   «      t        ||
df   «      «       | j                  t        j                  ||dd…f   ||
dd…f    «      «       | j                  t        j                  ||dd …f   ||
dd …f   «      «       Œ¦ |	d   }| j                  t        ||df   «      dd¬«       | j                  t        ||df   «      d«       y c c}}}w )N)r   r   r   )é   r   r   )r
   r
   r   )r   r
   r   )r   r
   r   )r   r   é   )ç        r   g      ð?)é   r
   Ú
edge_indexÚ	edge_attrr
   é
   r   r   )r   r   é   r   é   )Úplaces)ÚnpÚarrayÚfloatÚint32ÚcgÚ	_topologyÚtileÚassertEqualÚshapeÚ	enumerateÚTÚintÚitemsÚassertAlmostEqualÚ
assertTrueÚallclose)ÚselfÚvÚfÚtopoÚeiÚeaÚiÚaÚbÚlookupÚjÚdiagonals               õN   /Users/bsk/Downloads/á„†á…©á†¯á„�á…¦á†¨á„‰á…³/ì „ì²˜ë¦¬/tests/test_geometry.pyÚGtest_topological_edges_are_bidirectional_with_endpoint_aligned_featureszZGraphGeometryTests.test_topological_edges_are_bidirectional_with_endpoint_aligned_features   s­  € ô �H‰H’i¢ªI²yÐAÄ5ÓIˆÜ�H‰H’i¢Ð+¬R¯X©XÓ6ˆÜ�|‰|˜A˜q¤"§'¡'ª,¸Ó"?Ó@ˆØ�lÑ# T¨+Ñ%6ˆBˆØ×Ñ˜Ÿ™ !™ bÔ)Ü7@ÀÇÁ´ÕG±©)¨!©V¨a°”3�q“6œ3˜q›6Ð" AÑ%°ˆÒGØŸ™ž‰I‰FˆQ��AØ˜˜1�v‘ˆAØ×"Ñ"¤5¨¨A¨q¨D©£?´E¸"¸QÀ¸T¹(³OÔDØ�O‰OœBŸK™K¨¨1¨a°¨c¨6©
°R¸¸1¸Q¸3¸±Z°KÓ@ÔAØ�O‰OœBŸK™K¨¨1¨a©b¨5©	°2°a¸¹°e±9Ó=Õ>ð	 (ð
 ˜&‘>ˆØ×Ñœu R¨°!¨¡_Ó5°sÀ1ÐÔEØ×Ñœ˜r (¨A +™Ó/°Õ5ùô Hs   Ã $G'c                 ó>  — dd l }t        j                  «       5 }t        |«      }|dz  |dz  }}|j                  j
                  j                  ddd«      }|j                  «        | j                  |j                  j                  t        |«      |«      «       |j                  j                  t        |«      «      }t        j                  |«      }| j                  t!        |j"                  «      t!        |j"                  «      «       t        j%                  |d |d|dz  «       t'        j(                  |d	z  d
¬«      }| j                  t'        j*                  |d   «      j-                  «       «       | j                  t'        j*                  |d   «      j-                  «       «       | j                  |d   dk\  j-                  «       xr" |d   t!        |d   «      k  j-                  «       «       | j/                  |d   j0                  d   t!        |d   «      «       t'        j2                  |j"                  «      }	| j                  t'        j4                  |d   |	|d      t'        j6                  |d   «      dz   ¬«      «       d d d «       y # 1 sw Y   y xY w)Nr   zbox.stlÚgraphsr   r   r   )é   Úfigureszgraph_20.npzF©Úallow_pickleÚxr   ÚfaceÚpos_mmÚoriginal_vertex_indexÚoriginal_vertex_distance_mmgñhãˆµøä>)Úatol)Úopen3dÚtempfileÚTemporaryDirectoryr   ÚgeometryÚTriangleMeshÚ
create_boxÚcompute_vertex_normalsr"   ÚioÚwrite_triangle_meshÚstrÚread_triangle_meshr   Ú
_load_meshÚassertGreaterÚlenÚverticesÚpreparer   ÚloadÚisfiniteÚallr   r   Úasarrayr#   Úmax)
r$   Úo3dÚtdÚstlÚoutÚboxÚrawÚweldedr+   Úsources
             r0   Ú?test_exact_welding_and_npz_correspondence_on_real_mesh_geometryzRGraphGeometryTests.test_exact_welding_and_npz_correspondence_on_real_mesh_geometry"   s  € ÛÜ×(Ñ(Ô*¨bÜ�b“ˆB b¨9¡n°b¸8±m ˜3Ø—,‘,×+Ñ+×6Ñ6°q¸!¸QÓ?ˆCØ×&Ñ&Ô(à�O‰O˜CŸF™F×6Ñ6´s¸3³xÀÓEÔFØ—&‘&×+Ñ+¬C°«HÓ5ˆCÄÇÁÈcÓ@R°vØ×Ñœs 3§<¡<Ó0´#°f·o±oÓ2FÔGÜ�J‰J�s˜D # u¨b°9©nÔ=Ü—‘˜˜nÑ,¸5ÔAˆAØ�O‰OœBŸK™K¨¨#©Ó/×3Ñ3Ó5Ô6Ø�O‰OœBŸK™K¨¨+©Ó7×;Ñ;Ó=Ô>Ø�O‰O˜Q˜v™Y¨!™^×0Ñ0Ó2Ò[¸¸&¹	ÄCÈÈ(ÉÓDTÑ8T×7YÑ7YÓ7[Ô\Ø×Ñ˜QÐ6Ñ7×=Ñ=¸aÑ@Ä#ÀaÈÁkÓBRÔSä—Z‘Z §¡Ó0ˆFØ�O‰OœBŸK™K¨¨(©°V¸AÐ>UÑ<VÑ5WÔ^`×^dÑ^dÐefð  hEñ  fFó  _Gð  JNñ  _Nô  Oô  P÷! +×*Ñ*ús   ™I1JÊJc                 óÐ  ‡— t         dz  dz  dz  }|j                  «       s| j                  d«       t        j                  |d¬«      }| j                  t        j                  |d   «      j                  «       xr& t        j                  |d   «      j                  «       «       | j                  |d	   j                  t        j                  t        «      «       |d
   j                  D �ch c]  }t        |«      ’Œ c}Š| j                  t        ‰«      d«       | j                  t        ˆfd„‰D «       «      «       | j                  |d   j!                  «       «       y c c}w )NÚdata_processedÚbrepzfaces_uv.npzz"full B-Rep preparation has not runFr6   r:   Ú	curvatureÚ
trim_validr   r   c              3   ó0   •K  — | ]  \  }}||f‰v –— Œ y ­w©N© )Ú.0r+   r,   Úedges      €r0   Ú	<genexpr>z\GraphGeometryTests.test_generated_brep_masks_and_adjacency_when_available.<locals>.<genexpr>>   s   øè ø€ Ð<±t©t¨q°!˜Q ˜F dœN±tùó   ƒÚtraining_valid)ÚROOTÚexistsÚskipTestr   rN   r"   rO   rP   r   ÚdtypeÚboolr   ÚtuplerJ   rK   ÚassertFalseÚany)r$   Úpr+   r8   re   s       @r0   Ú6test_generated_brep_masks_and_adjacency_when_availablezIGraphGeometryTests.test_generated_brep_masks_and_adjacency_when_available6   s  ø€ ÜÐ#Ñ# fÑ,¨~Ñ=ˆØ�x‰xŒz˜4Ÿ=™=Ð)MÔNÜ�G‰G�A EÔ*ˆØ�‰œŸ™ A h¡KÓ0×4Ñ4Ó6Ò\¼2¿;¹;ÀqÈÁ~Ó;V×;ZÑ;ZÓ;\Ô]Ø×Ñ˜˜<™×.Ñ.´·±¼³Ô?Ø"# L¡/×"3Ò"3Ó4Ñ"3˜Q”�a•Ð"3Ñ4ˆØ×Ñœ3˜t›9 aÔ(Ø�‰œÓ<±tÓ<Ó<Ô=Ø×Ñ˜Ð+Ñ,×0Ñ0Ó2Õ3ùò 5s   Ã-E#c                 óú  — t         dz  dz  dz  }|j                  «       s| j                  d«       |j                  d¬«      }| j	                  |j                  d«      xr |j                  d«      «       t        j                  |t        d«      d	 «      }|d   D ]]  }t        j                  t         d
z  dz  d|d   › d�z  d¬«      }| j                  |d   |d   j                  j                  «       «       Œ_ y)z=Viewer JSON must preserve [F,3], while training NPZ is [3,F].Úresultsr3   zviewer_data.jsz#graph viewer has not been generatedÚutf8)Úencodingzwindow.CAD_GRAPH_DATA=Ú;éÿÿÿÿr]   Úgraph_Úbudgetz.npzFr6   r9   N)ri   rj   rk   Ú	read_textr"   Ú
startswithÚendswithÚjsonÚloadsrK   r   rN   r   r   Útolist)r$   ÚviewerÚtextÚpayloadÚgraphr+   s         r0   Ú.test_viewer_triangles_match_npz_face_transposezAGraphGeometryTests.test_viewer_triangles_match_npz_face_transposeA   sã   € ä˜	Ñ! HÑ,Ð/?Ñ?ˆØ�}‰}Œ §¡Ð.SÔ TØ×Ñ¨ÐÓ0ˆØ�‰˜Ÿ™Ð(@ÓAÒXÀdÇmÁmÐTWÓFXÔYÜ—*‘*˜T¤#Ð&>Ó"?ÀÐCÓDˆØ˜XÔ&ˆEÜ—‘œÐ/Ñ/°(Ñ:¸vÀeÈHÁoÐEVÐVZÐ=[Ñ[ÐjoÔpˆAØ×Ñ˜U 6™]¨A¨f©I¯K©K×,>Ñ,>Ó,@ÕAñ 'ó    c                 ó*  ‡— 	 dd l }ddlm} |j                  j	                  dt
        dz  dz  «      }|j                  j                  |«      }|j                  j                  |«        ddd«      j                  «       }j                  |d	|j                  «       «      \  }}}	}
|j                  D �ch c]  }t!        |«      ’Œ c}Š| j#                  t%        ‰«      d«       | j'                  t)        ˆfd
„‰D «       «      «       | j'                  t+        j,                  |«      j)                  «       «       | j/                  |	d«       | j/                  |
d«       y # t        $ r%}| j                  t        |«      «       Y d }~�Œd }~ww xY wc c}w )Nr   )ÚBRepPrimAPI_MakeBoxr^   r   zbrep.pyg      $@g      4@g      >@r   c              3   ó0   •K  — | ]  \  }}||f‰v –— Œ y ­wrb   rc   )rd   r+   r,   Úlinkss      €r0   rf   zTGraphGeometryTests.test_brep_box_has_actual_shared_edge_adjacency.<locals>.<genexpr>X   s   øè ø€ Ð>¹±°°1˜Q ˜F eœO¹ùrg   )Úimportlib.utilÚOCP.BRepPrimAPIrˆ   ÚutilÚspec_from_file_locationri   Úmodule_from_specÚloaderÚexec_moduleÚImportErrorrk   rG   ÚShapeÚ_face_adjacencyÚ_ocpr   rn   rJ   rK   r"   rP   r   rO   r   )r$   Ú	importlibrˆ   ÚspecÚbpÚexcr   r   r   ÚboundaryÚnonmanifoldÚerŠ   s               @r0   Ú.test_brep_box_has_actual_shared_edge_adjacencyzAGraphGeometryTests.test_brep_box_has_actual_shared_edge_adjacencyL   sD  ø€ ð	$Û!Ý;Ø—>‘>×9Ñ9¸&Ä$ÈÑBTÐW`ÑB`ÓaˆDØ—‘×0Ñ0°Ó6ˆB¸¿¹×8OÑ8OÐPRÔ8Sñ $ C¨¨cÓ2×8Ñ8Ó:ˆØ79×7IÑ7IÈ%ÐQRÐTV×T[ÑT[ÓT]Ó7^Ñ4ˆ
�I˜x¨Ø#-§<¢<Ó0¡<˜a”�q• <Ñ0ˆØ×Ñœ3˜u›: qÔ)Ø�‰œÓ>¹Ó>Ó>Ô?Ø�‰œŸ™ IÓ.×2Ñ2Ó4Ô5Ø×Ñ˜ 1Ô%Ø×Ñ˜ aÕ(øô ò 	$Ø�M‰Mœ#˜c›(×#Ò#ûð	$üò 1s   ƒA&E Â5FÅ	FÅ(FÆFN)Ú__name__Ú
__module__Ú__qualname__r1   r[   rr   r…   r�   rc   r†   r0   r   r      s   „ ò6ò$Pò(	4ò	Bó)r†   r   Ú__main__)r‹   r–   r~   r?   ÚunittestÚpathlibr   Únumpyr   Ú__file__Úparentsri   r�   rŽ   ÚSPECr�   r   r�   r‘   ÚTestCaser   rž   Úmainrc   r†   r0   Ú<module>rª      sŸ   ðÛ Û Û Û Ý ã ñ ˆHƒ~×Ñ˜aÑ €Ø‡~�~×-Ñ-¨l¸DÀ;Ñ<NÐQ`Ñ<`Óa€Ø‡^�^×$Ñ$ TÓ*€¨D¯K©K×,CÑ,CÀBÔ,GôL)˜×*Ñ*ô L)ð^ ˆzÒ˜=˜8Ÿ=™=�?Ðr†   