
    Mi
                     d    S SK r S SKrSSKJr  SSKJrJrJr  S\	4S jr
S	S\4S jjrS\
0rS\0rg)
    N   )triangulate_quads)array_to_stringcomment_stripdecode_textreturnc           	         U R                  5       n[        [        U5      5      R                  5       n[        R
                  " SUSS9u  p4nUR                  5       S;  a  [        SU S35      e[        R                  [        U5      5       Vs/ s H  ofR                  5       PM     nnU Vs/ s H  n[        U5      S:  d  M  UPM     nn[        R                  " US   R                  5       [        R                  S9nUS	S
 u  p[        R                  " USUS-     Vs/ s H  ofR                  5       S	S PM     sn[        R                  S9n
U
R                  US45      n
XxS-   X-   S-     Vs/ s H  ofR                  5       PM     nnU Vs/ s H  oS[!        US   5      S-    PM     nn[#        U5      nXS.nU$ s  snf s  snf s  snf s  snf s  snf )z
Load an OFF file into the kwargs for a Trimesh constructor.

Parameters
----------
file_obj : file object
  Contains an OFF file

Returns
----------
loaded : dict
  kwargs for Trimesh constructor
z
(COFF|OFF)   )maxsplit)OFFCOFFzNot an OFF file! Header was: ``r   )dtypeNr      )verticesfaces)readr   r   stripresplitupper	NameErrorstr
splitlineslennparrayint64float64reshapeintr   )file_objkwargstext_headerrawisplitsvertex_count
face_countr   r   lines                n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/trimesh/exchange/off.pyload_offr.   	   s    ==?D T*+113D XXlD1=NAs||~_,8BCC "%C!9:!9Aggi!9F:.A3q6A:aF. XXfQioo'rxx8F%bqzLxx &q<!+; <= <12A <=RZZH
 q 12H !'a'7,:SVW:W XY X1WWY XEY49:ED!c$q'lQ&'EE:e$E"3FM1 ;. 	> Z:s$   G.GG"G3GGc                    [        U5      n[        R                  " [        R                  " [	        U R
                  5      5      S-  U R
                  45      R                  [        R                  5      nSR                  S[        [	        U R                  5      5      S-   [        [	        U R
                  5      5      -   S-   [        U R                  SSUS9[        USSS9S/5      nU$ )	z
Export a mesh as an OFF file, a simple text format

Parameters
-----------
mesh : trimesh.Trimesh
  Geometry to export
digits : int
  Number of digits to include on floats

Returns
-----------
export : str
  OFF format output
r   
r    z 0)	col_delim	row_delimdigits)r2   r3    )r!   r   column_stackonesr   r   astyper   joinr   r   r   )meshr4   faces_stackedexports       r-   
export_offr=   =   s    " [FOORWWS_%=%A4::$NOVV
M YYDMM"#c)CDJJ,@@4GDMMSDQWXMSDI	
F M    off)
   )r   numpyr   geometryr   utilr   r   r   dictr.   r   r=   _off_loaders_off_exporters r>   r-   <module>rH      sD    	  ( > >1D 1h!3 !H x $r>   