Ë
    :vžjÜ(  ã                   ó�  — d dl Z d dlZd dlZddlmZmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ ddlmZ ddlmZ dd„Zd„ Zdd„Zdd„Z dd„Z!eeeeeeedœZ"e"jG                  e«       e"jG                  e«       e"jG                  e
«       e"jG                  e«       e"jG                  e«       y)é    Né   )Ú	resolversÚutil)Úlogé   )Ú_collada_exporters)Ú
export_glbÚexport_gltf)Ú
export_obj)Ú_off_exporters)Ú_ply_exporters)Ú
export_stlÚexport_stl_ascii)Ú_3mf_exporters)Úexport_urdf)Ú_xyz_exportersc                 ó  — d}d}t        j                  |«      rt        |j                  «       «      }t	        |t        «      r˜|€+t        |«      j                  d«      d   j                  «       }|t        v rcd}|}t        j                  j                  t        j                  j                  |«      «      }t        |d«      }|€t        j                  |«      }t        |«      j                  «       }|t        vrt        d|«      ‚t	        | t         t"        t$        t&        j(                  f«      rQd}| D ]  }	|t+        |	j,                  «      z  }Œ t/        j0                  d	t+        | «      ||j3                  «       «       nDt5        | d
«      r8t/        j0                  dt+        | j,                  «      |j3                  «       «       |dk(  r||d<   t        |   | fi |¤Ž}
t	        |
t6        «      rf|�5d|
v r1|
j9                  d«      |
t        j                  j;                  |«      <   |�+|
j=                  «       D ]  \  }}|j?                  ||¬«       Œ |
S t5        |d«      rt        j@                  ||
«      }n|
}|r|jC                  «        |S )a¢  
    Export a Trimesh object to a file- like object, or to a filename

    Parameters
    -----------
    file_obj : str, file-like
      Where should mesh be exported to
    file_type : str or None
      Represents file type (eg: 'stl')
    resolver : None or trimesh.resolvers.Resolver
      Resolver to write referenced assets to

    Returns
    ----------
    exported : bytes or str
      Result of exporter
    FNÚ.éÿÿÿÿTÚwbz%s exporter not available!r   z2Exporting %d meshes with a total of %d faces as %sÚfaceszExporting %d faces as %sÚobjÚresolverú
model.gltf)ÚnameÚdataÚwrite)"r   Ú
is_pathlibÚstrÚabsoluteÚ
isinstanceÚsplitÚlowerÚ_mesh_exportersÚosÚpathÚabspathÚ
expanduserÚopenr   ÚFilePathResolverÚ
ValueErrorÚlistÚtupleÚsetÚnpÚndarrayÚlenr   r   ÚdebugÚupperÚhasattrÚdictÚpopÚbasenameÚitemsr   Úwrite_encodedÚclose)ÚmeshÚfile_objÚ	file_typer   ÚkwargsÚ
was_openedÚ	file_nameÚ	file_pathr   ÚmÚexportr   r   Úresults                 úh/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/trimesh/exchange/export.pyÚexport_meshrF      s2  € ð( €JØ€Iä‡��xÔ ä�x×(Ñ(Ó*Ó+ˆä�(œCÔ ØÐä˜X›×,Ñ,¨SÓ1°"Ñ5×<Ñ<Ó>ˆIØœÑ'ØˆJØ ˆIäŸ™Ÿ™¬¯©×(:Ñ(:¸8Ó(DÓEˆIÜ˜I tÓ,ˆHØÐä$×5Ñ5°iÓ@�ô �I“×$Ñ$Ó&€IàœÑ'ÜÐ5°yÓAÐAä�$œœu¤c¬2¯:©:Ð6Ô7ØˆÛˆAØ”S˜Ÿ™“\Ñ!‰Eð ä�	‰	Ø@Ü�‹IØØ�O‰OÓõ		
ô 
��wÔ	ä�	‰	Ð,¬c°$·*±*«o¸y¿¹Ó?PÔQð �EÒØ%ˆˆzÑô ˜YÑ'¨Ñ7°Ñ7€Fô �&œ$ÔàÐ  \°VÑ%;Ø28·*±*¸\Ó2JˆF”2—7‘7×#Ñ# IÓ.Ñ/ð ÐØ$Ÿl™lžn‘
��dØ—‘ D¨t�Õ4ð -ð ˆäˆx˜Ô!Ü×#Ñ# H¨fÓ5‰àˆñ Ø�‰Ôà€Mó    c                 ó   — t        | d¬«      S )zI
    Export a mesh as a dictionary, with data encoded
    to base64.
    Úbase64)Úencoding)Úexport_dict)r;   s    rE   Úexport_dict64rL   p   s   € ô
 �t hÔ/Ð/rG   c                 óÞ  ‡— dˆfd„	}g d¢}| j                   j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}| || j                  «       || j                  «       || j                  «      dœ}| j
                  j                  dk(  r! || j
                  j                  «      |d<   |S | j
                  j                  dk(  r || j
                  j                  «      |d<   |S c c}}w )	zô
    Export a mesh to a dict

    Parameters
    ------------
    mesh : trimesh.Trimesh
      Mesh to be exported
    encoding : str or None
      Such as 'base64'

    Returns
    -------------
    export : dict
      Data stored in dict
    c                 ót   •— ‰€| j                  «       S |€| j                  }t        j                  | |‰¬«      S )N)ÚdtyperJ   )ÚtolistrO   r   Úarray_to_encoded)ÚitemrO   rJ   s     €rE   Úencodezexport_dict.<locals>.encode‰   s8   ø€ ØÐØ—;‘;“=Ð àˆ}ØŸ
™
�Ü×(Ñ(¨°UÀXÔNÐNrG   )Úunitsr@   rA   )Úmetadatar   Úface_normalsÚverticesÚfaceÚface_colorsÚvertexÚvertex_colors©N)	rU   r8   r   rV   rW   ÚvisualÚkindrY   r[   )r;   rJ   rS   Ú	meta_keysÚkÚvrU   rC   s    `      rE   rK   rK   x   sß   ø€ õ"Oò 4€IØ!%§¡×!4Ñ!4Ô!6ÔIÑ!6™˜˜A¸!¸yº.��1‘Ð!6€HÑIð Ù˜Ÿ
™
Ó#Ù˜t×0Ñ0Ó1Ù˜4Ÿ=™=Ó)ñ	€Fð ‡{�{×Ñ˜6Ò!Ù & t§{¡{×'>Ñ'>Ó ?ˆˆ}Ñð €Mð 
�‰×	Ñ	˜XÒ	%Ù"(¨¯©×)BÑ)BÓ"CˆˆÑà€Mùó Js
   ©C)¶C)c                 ób  — | j                   j                  «       i | j                  j                  «       | j                  j                  «       | j
                  j                  «       | j                  dœdœ}|r6	 t        j                  t        j                  | j                  «      «      |d<   |rd}nd}| j                  j!                  «       D ]7  \  }}t#        |d	«      r|j%                  |¬
«      |dœ}||d   |<   Œ0||d   |<   Œ9 |S # t        $ r t        j                  dd¬«       Y Œw xY w)zÐ
    Export a Scene object as a dict.

    Parameters
    -------------
    scene : trimesh.Scene
      Scene object to be exported

    Returns
    -------------
    as_dict : dict
      Scene as a dict
    )ÚboundsÚextentsÚcentroidÚscale)ÚgraphÚgeometryÚscene_cacherU   zfailed to serialize metadataT)Úexc_infoÚdict64r5   rC   )r=   )r   r=   rh   )rg   Úto_edgelistrc   rP   rd   re   rf   ÚjsonÚloadsr   ÚjsonifyrU   ÚBaseExceptionr   Úwarningrh   r8   r4   rC   )ÚsceneÚ
use_base64Úinclude_metadatarC   r=   Úgeometry_namerh   Úexporteds           rE   Úscene_to_dictrw   ¦   s#  € ð" —‘×(Ñ(Ó*Øà—l‘l×)Ñ)Ó+Ø—}‘}×+Ñ+Ó-ØŸ™×-Ñ-Ó/Ø—[‘[ñ	
ñ	€Fñ ð	Gô "&§¡¬D¯L©L¸¿¹Ó,HÓ!IˆF�:Ññ
 Ø‰	àˆ	ð $)§>¡>×#7Ñ#7Ö#9Ñˆ�xÜ�8˜XÔ&ð !Ÿ™°)˜Ó<Ø&ñˆHð 19ˆF�:Ñ˜}Ò-ð 19ˆF�:Ñ˜}Ò-ð $:ð €Møô/ ò 	GÜ�K‰KÐ6À×Fð	Gús   Á95D Ä D.Ä-D.c                 ó  — t        | j                  «      dk(  rt        d«      ‚t        j                  |«      rt        |j                  «       «      }|€9t        |t
        «      rt        |«      j                  d«      d   }nt        d«      ‚|j                  «       j                  «       j                  d«      }|dk(  rt        | fi |¤Ž}n÷|dk(  rt        | fi |¤Ž}nå|d	k(  rt        | g|¢­Ž }nÓ|d
k(  r6|€%t        |t
        «      rt        j                   |«      }t#        | fd|i|¤Ž}n˜|dk(  rt        | d¬«      }n…|dk(  rddlm}  |j(                  | fi |¤Ž}nf|dk(  rt+        d   | j-                  «       fi |¤Ž}nC|dk(  rt/        | j-                  «       fi |¤Ž}n#|dk(  rt+        d   | fi |¤Ž}nt        d|› �«      ‚t        |t0        «      r�|€‰t        |t
        «      ryt        j                   |«      }t2        j4                  j                  |«      d   }|j7                  «       D ]/  \  }}	|dk(  r|j9                  ||	«       Œ|j9                  ||	«       Œ1 |S t;        |d«      rt        j<                  ||«      S t        |t
        «      rit2        j4                  j?                  t2        j4                  jA                  |«      «      }
tC        |
d«      5 }t        j<                  ||«       ddd«       |S |S # 1 sw Y   |S xY w)aK  
    Export a snapshot of the current scene.

    Parameters
    ----------
    file_obj : str, file-like, or None
      File object to export to
    file_type : str or None
      What encoding to use for meshes
      IE: dict, dict64, stl

    Returns
    ----------
    export : bytes
      Only returned if file_obj is None
    r   zCan't export empty scenes!Nr   r   zfile_type not specified!ÚgltfÚglbr5   r   r   rk   T)rs   Úsvg)Úsvg_ioÚplyÚstlÚ3mfzunsupported export format: r   r   r   )"r1   rh   r+   r   r   r   r    r!   r"   Ústripr#   Úlstripr
   r	   rw   r   r*   r   Útrimesh.path.exchanger|   Ú
export_svgr$   Úto_meshr   r5   r%   r&   r8   r   r4   r9   r'   r(   r)   )rr   r<   r=   r   r>   r   r|   Ú	bare_pathr   ÚblobrA   Úfs               rE   Úexport_scenerˆ   à   sÇ  € ô" ˆ5�>‰>Ó˜aÒÜÐ5Ó6Ð6ä‡��xÔ ä�x×(Ñ(Ó*Ó+ˆð ÐÜ�h¤Ô$Ü˜H›×+Ñ+¨CÓ0°Ñ4‰IäÐ7Ó8Ð8ð —‘Ó!×'Ñ'Ó)×0Ñ0°Ó5€Ið �FÒÜ˜5Ñ+ FÑ+‰Ø	�eÒ	Ü˜%Ñ* 6Ñ*‰Ø	�fÒ	Ü˜UÐ, VÒ,‰Ø	�eÒ	ð Ð¤
¨8´SÔ 9Ü ×1Ñ1°(Ó;ˆHÜ˜%Ñ=¨(Ð=°fÑ=‰Ø	�hÒ	Ü˜U¨tÔ4‰Ø	�eÒ	Ý0à ˆv× Ñ  Ñ1¨&Ñ1‰Ø	�eÒ	Ü˜uÑ% e§m¡m£oÑ@¸Ñ@‰Ø	�eÒ	Ü˜%Ÿ-™-›/Ñ4¨VÑ4‰Ø	�eÒ	Ü˜uÑ% eÑ6¨vÑ6‰äÐ6°y°kÐBÓCÐCô �$œÔð
 Ð¤
¨8´SÔ 9Ü ×1Ñ1°(Ó;ˆHäŸ™Ÿ™ hÓ/°Ñ3ˆIØ"Ÿj™jžl‘
��dØ˜<Ò'à—N‘N 9¨dÕ3ð —N‘N 4¨Õ.ð +ð ˆäˆx˜Ô!ä×!Ñ! (¨DÓ1Ð1Ü	�HœcÔ	"ä—G‘G—O‘O¤B§G¡G×$6Ñ$6°xÓ$@ÓAˆ	Ü�)˜TÔ" aÜ×Ñ˜q $Ô'÷ #ð €Kˆ4€K÷	 #ð €Kús   ËK=Ë=L)r~   r5   rz   r   ry   rk   Ú	stl_ascii)NNr\   )FT)$rm   r%   Únumpyr/   Ú r   r   Ú	constantsr   Údaer   ry   r	   r
   r   r   Úoffr   r}   r   r~   r   r   Úthreemfr   Úurdfr   Úxyzr   rF   rL   rK   rw   rˆ   r$   Úupdate© rG   rE   Ú<module>r”      sµ   ðÛ Û 	ã ç Ý Ý #ß )Ý Ý Ý ß -Ý #Ý Ý óZòz0ó+ó\7ót\ð@ ØØØØØØ!ñ€ð × Ñ �~Ô &Ø × Ñ �~Ô &Ø × Ñ Ð)Ô *Ø × Ñ �~Ô &Ø × Ñ �~Õ &rG   