
    Mi                         S r SSKrSSKrSSKJr  SSKJrJr  S r	 SSK
Jr  S\	0rg! \ a  rSS	KJr  S\" \5      0r SrCgSrCff = f)
zJ
xaml.py
---------

Load 3D XAMl files, an export option from Solidworks.
    N   )transformations)utilvisualc           
        ^ S nU4S jnU R                  5       n[        R                  " U5      nUR                  R	                  S5      S   S-   m/ n/ n/ n	/ n
UR                  TS-   S9 GH  nSnUR                  UR                  TSS	95      nUR                  UR                  TS
S	95      nU" U5      nU" U5      nUn[        R                  " 5       nUbC  UR                  TS-   5      nUb  UR                  U" U5      5        UR                  5       nUb  MC  [        U5      S:X  a  [        R                  " S5      nO6[        U5      S:X  a  UR                  5       nO[         R"                  " U5      nUR                  TS-   S9 GH  n[        R$                  " UR&                  S   R)                  SS5      R	                  5       [        R*                  S9R-                  S5      n[        R$                  " UR&                  S   R)                  SS5      R	                  5       [        R*                  S9R-                  S5      n[.        R0                  " UU5      n[        R$                  " UR&                  S   R)                  SS5      R	                  5       [        R2                  S9R-                  S5      nUR5                  U5        UR5                  U5        U	R5                  [        R6                  " U[        U5      S45      5        U
R5                  U5        GM     GM     SS0n[         R8                  " Xx5      u  US'   US'   [        R:                  " U	5      US'   [        R:                  " U
5      US'   U$ )z
Load a 3D XAML file.

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

Returns
----------
result : dict
  Kwargs for a Trimesh constructor.
c                 $   U c  [         R                  $ [        U R                  S   R	                  SS5      S5      n[        U R                  S   5      nUS-	  S-  US-	  S-  US-  US-  /n[        R                  " U[        R                  S9nU$ )	z5
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       o/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/trimesh/exchange/xaml.pyelement_to_color#load_XAML.<locals>.element_to_color   s     ?'''w~~g.66sB?Dy12^t#]d"_dN	
 xxBHH-    c                 :  >  [        U R                  TS-   S95      R                  S   n[        R                  " UR                  5       [        R                  S9R                  S5      R                  nU$ ! [         a    [        R                  " S5      s $ f = f)zD
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_transform'load_XAML.<locals>.element_to_transform0   s}    
	',,20C+C,DELLXVFXXfllnBJJ?GGOQQFM 	 66!9	s   A3A7 7 BB}r   GeometryModel3Dr$   z,.//{ns}{color}Material/*/{ns}SolidColorBrushDiffuse)r1   colorSpecularzModelVisual3D.Transformr'      MeshGeometry3DNormals, r   )   	PositionsTriangleIndicesunitsmetersverticesfacesface_colorsvertex_normals)readetreeXMLr%   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   r2   	file_datarootrD   rE   colorsnormalsgeometrycolor_searchdiffusespecularcurrent
transformstransform_element	transformg	c_normals
c_verticesc_facesresultr1   s                           @r   	load_XAMLro      s   " I99YD 
	Q	#	%B HEFG II"'8"8I9E-- 3 3r 3 KL==!4!4*!4!MN #7+#H-  &&(
! !(R2K-K L , %%&:;L&MN '')G ! z?aq	I_!"(I z2I 2(8#89A#++C5;;=RZZgg  %--c37==?rzzgg  ,,ZCJhh*+33C=CCERXXgg 
 OOJ'LL!MM"'''CL!+<=>NN9%' :Q :| x F*.*;*;H*L'F:wIIf-F=!yy1FMr!   )rI   xaml)ExceptionWrapper)__doc__rM   numpyr   r   r   rT   r   r   ro   lxmlrI   _xaml_loadersBaseExceptionE
exceptionsrq    r!   r   <module>rz      sV      $ @F	2Y'M 2 .-a01M2s   
( AAA