Ë
    :vžj<  ã                   ó    — d Z ddlZddlZddlmZ ddlmZmZ d„ Z		 ddl
mZ dd	lmZ d
e	iZy# e$ rZddlmZ d
 ee«      iZY dZ[ydZ[ww xY w)zJ
xaml.py
---------

Load 3D XAMl files, an export option from Solidworks.
é    Né   )Útransformations)ÚutilÚvisualc           
      ó4  ‡— d„ }ˆfd„}| j                  «       }t        j                  |t        j                  di t        ¤Ž¬«      }|j
                  j                  d«      d   dz   Šg }g }g }	g }
|j                  ‰dz   ¬«      D �]»  }d}|j                  |j                  ‰d	¬
«      «      }|j                  |j                  ‰d¬
«      «      } ||«      } ||«      }|}t        j                  «       }|�@|j                  ‰dz   «      }|�|j                   ||«      «       |j                  «       }|�Œ@t        |«      dk(  rt        j                   d«      }n4t        |«      dk(  r|j#                  «       }nt%        j&                  |«      }|j                  ‰dz   ¬«      D �]™  }t        j(                  |j*                  d   j-                  dd«      j                  «       t        j.                  ¬«      j1                  d«      }t        j(                  |j*                  d   j-                  dd«      j                  «       t        j.                  ¬«      j1                  d«      }t3        j4                  ||«      }t        j(                  |j*                  d   j-                  dd«      j                  «       t        j6                  ¬«      j1                  d«      }|j9                  |«       |j9                  |«       |	j9                  t        j:                  |t        |«      df«      «       |
j9                  |«       �Œœ �Œ¾ ddi}t%        j<                  ||«      \  |d<   |d<   t        j>                  |	«      |d<   t        j>                  |
«      |d<   |S )zÄ
    Load a 3D XAML file.

    Parameters
    ----------
    file_obj : file object
      Open XAML file.

    Returns
    ----------
    result : dict
      Kwargs for a Trimesh constructor.
    c                 ó&  — | €t         j                  S t        | j                  d   j	                  dd«      d«      }t        | j                  d   «      }|dz	  dz  |dz	  dz  |dz  |dz  g}t        j                  |t        j                  ¬«      }|S )	zE
        Turn an XML element into a (4,) np.uint8 RGBA color
        ÚColorÚ#Ú é   ÚOpacityéÿ   é   ©Údtype)	r   ÚDEFAULT_COLORÚintÚattribÚreplaceÚfloatÚnpÚarrayÚuint8)ÚelementÚhexcolorÚopacityÚrgbas       úf/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/trimesh/exchange/xaml.pyÚelement_to_colorz#load_XAML.<locals>.element_to_color   s’   € ð ˆ?Ü×'Ñ'Ð'Ü�w—~‘~ gÑ.×6Ñ6°s¸BÓ?ÀÓDˆÜ˜Ÿ™ yÑ1Ó2ˆà˜‰^˜tÑ#Ø˜‰]˜dÑ"Ø˜‰_Ø�d‰Nð	
ˆô �x‰x˜¤B§H¡HÔ-ˆØˆó    c                 ó@  •— 	 t        | j                  ‰dz   ¬«      «      j                  d   }t        j                  |j                  «       t        j                  ¬«      j                  d«      j                  }|S # t        $ r t        j                  d«      cY S w xY w)z\
        Turn an XML element into a (4,4) np.float64
        transformation matrix.
        ÚMatrixTransform3D©ÚtagÚMatrixr   )é   r&   r&   )ÚnextÚiterr   r   r   ÚsplitÚfloat64ÚreshapeÚTÚStopIterationÚeye)r   ÚmatrixÚnss     €r   Úelement_to_transformz'load_XAML.<locals>.element_to_transform0   s}   ø€ ð
	Ü˜'Ÿ,™,¨2Ð0CÑ+C˜,ÓDÓE×LÑLÈXÑVˆFÜ—X‘X˜fŸl™l›n´B·J±JÔ?×GÑGÈÓO×QÑQˆFØˆMøÜò 	ô —6‘6˜!“9Òð	ús   ƒA8A< Á<BÂB)ÚparserÚ}r   ÚGeometryModel3Dr#   z,.//{ns}{color}Material/*/{ns}SolidColorBrushÚDiffuse)r0   ÚcolorÚSpecularzModelVisual3D.Transformr&   é   ÚMeshGeometry3DÚNormalsÚ,Ú r   )éÿÿÿÿé   Ú	PositionsÚTriangleIndicesÚunitsÚmetersÚverticesÚfacesÚface_colorsÚvertex_normals© ) ÚreadÚetreeÚ
fromstringÚ	XMLParserÚXML_PARSER_OPTIONSr$   r)   r(   ÚfindÚformatÚcollectionsÚdequeÚ
appendleftÚ	getparentÚlenr   r.   Úpopr   Ú	multi_dotr   r   r   r*   r+   ÚtfÚtransform_pointsÚint64ÚappendÚtileÚappend_facesÚvstack)Úfile_objÚargsÚkwargsr   r1   Ú	file_dataÚrootrC   rD   ÚcolorsÚnormalsÚgeometryÚcolor_searchÚdiffuseÚspecularÚcurrentÚ
transformsÚtransform_elementÚ	transformÚgÚ	c_normalsÚ
c_verticesÚc_facesÚresultr0   s                           @r   Ú	load_XAMLrq      s(  ø€ òô"ð —‘“€IÜ×Ñ˜I¬e¯o©oÑ.SÔ@RÑ.SÔT€Dð 
�‰�‰˜Ó	˜QÑ	 #Ñ	%€Bð €HØ€EØ€FØ€Gð —I‘I "Ð'8Ñ"8�I×9ˆàEˆØ—-‘- × 3Ñ 3°rÀÐ 3Ó KÓLˆØ—=‘= ×!4Ñ!4¸À*Ð!4Ó!MÓNˆñ # 7Ó+ˆÙ# HÓ-ˆð ˆÜ ×&Ñ&Ó(ˆ
àÐ!ð !(§¡¨RÐ2KÑ-KÓ LÐØ Ð,ð ×%Ñ%Ñ&:Ð;LÓ&MÔNð ×'Ñ'Ó)ˆGð Ñ!ô ˆz‹?˜aÒäŸ™˜q›	‰IÜ�‹_ Ò!à"Ÿ™Ó(‰Iô Ÿ™ zÓ2ˆIð —‘ 2Ð(8Ñ#8�×9ˆAÜŸ™Ø—‘˜Ñ#×+Ñ+¨C°Ó5×;Ñ;Ó=ÄRÇZÁZôç‰g�gÓð ô Ÿ™Ø—‘˜Ñ%×-Ñ-¨c°3Ó7×=Ñ=Ó?ÄrÇzÁzôç‰g�gÓð ô ×,Ñ,¨Z¸ÓCˆJä—h‘hØ—‘Ð*Ñ+×3Ñ3°C¸Ó=×CÑCÓEÌRÏXÉXôç‰g�gÓð ð
 �O‰O˜JÔ'Ø�L‰L˜Ô!Ø�M‰Mœ"Ÿ'™' '¬C°«L¸!Ð+<Ó=Ô>Ø�N‰N˜9Ö%ò' :ðQ :ð| �xÐ €FÜ*.×*;Ñ*;¸HÀeÓ*LÑ'€Fˆ:Ñ˜˜w™ÜŸI™I fÓ-€Fˆ=ÑÜ!Ÿy™y¨Ó1€FÐÑà€Mr    )rI   r8   )rL   Úxaml)ÚExceptionWrapper)Ú__doc__rO   Únumpyr   r   r   rV   r   r   rq   ÚlxmlrI   ÚcommonrL   Ú_xaml_loadersÚBaseExceptionÚEÚ
exceptionsrs   rG   r    r   Ú<module>r|      sY   ðñó ã å $ß ò@ðF2Ýå*à˜YÐ'�MøØò 2õ .àÑ-¨aÓ0Ð1…Mûð2ús   �. ®A³AÁA