
    j
                     ^    d dl Z d dlZddlmZ ddlmZmZmZ de	fdZ
d	defdZde
iZdeiZy)
    N   )triangulate_quads)array_to_stringcomment_stripdecode_textreturnc           	         | j                         }t        t        |            j                         }t	        j
                  d|d      \  }}}|j                         dvrt        d| d      t        j                  t        |            D cg c]  }|j                          }}|D cg c]  }t        |      dkD  s| }}t        j                  |d   j                         t        j                        }|d	d
 \  }}	t        j                  |d|dz    D cg c]  }|j                         d	d  c}t        j                        }
|
j                  |df      }
||dz   ||	z   dz    D cg c]  }|j                          }}|D cg c]  }|dt!        |d         dz     }}t#        |      }|
|d}|S c c}w c c}w c c}w c c}w c c}w )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                A/DATA/.local/lib/python3.12/site-packages/trimesh/exchange/off.pyload_offr.   	   s    ==?D T*+113D XXlD1=NAvs||~_,8BCC "%C!9:!9Aaggi!9F:.A3q6A:aF. XXfQioo'rxx8F%bqzL*xx &q<!+; <= <12A <=RZZH
 q 12H !'|a'7,:SVW:W XY X1QWWY XEY49:EDT!c$q'lQ&'EE:e$E"U3FM1 ;. 	> Z:s$   F>-GGG2GGc           
         t        |      }t        j                  t        j                  t	        | j
                              dz  | j
                  f      j                  t        j                        }dj                  dt        t	        | j                              dz   t        t	        | j
                              z   dz   t        | j                  dd|      t        |dd      dg      }|S )	a  
    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>   