
    'j                    |    d dl mZ d dlmZmZ d dlmZ d dlZddlmZ ddZ	ddZ
e G d d                      ZdS )    )annotations)	dataclassfield)datetimeN   )constsstrreturnbytesc                    |                      dd          }t          j        dt          j        j        t          |                    |z   S )Nutf8ignore)errorsz<BB)encodestructpackr   TagsSTRlen)r	   bs     H/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/acis/hdr.py
encode_strr      s:    	))A;uejnc!ff5599    valuefloatc                L    t          j        dt          j        j        |           S )Nz<Bd)r   r   r   r   DOUBLE)r   s    r   encode_doubler      s    ;uej/777r   c                  @   e Zd ZU dZej        Zded<   dZded<   dZ	ded<   dZ
ded<   ej        Zded	<   ej        ej                 Zded
<    eej                  Zded<   dZded<   dZded<   dZded<   ed#d            Zd$dZd%dZd&dZd'dZd Zd&d Zd%d!Zd"S )(
AcisHeaderzRepresents an ACIS file header.intversionr   	n_records
n_entitiesflagsr
   
product_idacis_version)default_factoryr   creation_dateg      ?r   units_in_mm asm_versionFboolasm_end_markerr   c                    | j         dk    S )Nr,   )r-   selfs    r   has_asm_headerzAcisHeader.has_asm_header-   s    2%%r   	list[str]c                    | j          d| j         d| j         d| j         d|                                 | j        ddgS )z/Returns the SAT file header as list of strings. gz  9.9999999999999995e-007 1e-010 )r#   r$   r%   r&   _header_strr+   r1   s    r   dumpszAcisHeader.dumps1   s[     |NNdnNNtNNNNNCCCC
 	
r   r   c                R   g }| j         dk    r |                    t          j                   n|                    t          j                   t          j        d| j         | j        | j        | j	                  }|                    |           |                    t          | j                             |                    t          | j                             |                    t          | j                                                             |                    t          | j                             |                    t          t          j                             |                    t          t          j                             d                    |          S )z%Returns the SAB file header as bytes.i(U  z<iiiir   )r#   appendr   ASM_SIGNATUREACIS_SIGNATUREr   r   r$   r%   r&   r   r'   r(   r*   ctimer   r+   RES_TOLNOR_TOLjoin)r2   bufferdatas      r   dumpbzAcisHeader.dumpb9   sB    <%MM%-....MM%.///{T\4>4?DJ
 
 	dj11222j!233444j!3!9!9!;!;<<===mD$455666mEM22333mEM22333xxr   c                H   t          | j                  }t          | j                  }| j                                        }| j        dk    r,d| d| j         d| d| j         dt          |           d| dS | d| j         d| d| j         dt          |           d| dS )Ni  @r6   z @)r   r'   r(   r*   r>   r#   )r2   p_lena_lendates       r   r8   zAcisHeader._header_strL   s    DO$$D%&&!''))<#bubbtbb%bb$:KbbsSWyybb[_bbbb__do____8I__CPTII__X\____r   Nonec                    	 t           j        |         | _        || _        n # t          $ r t          d|           w xY wt           j                            |d          | _        dS )zfSets the ACIS version as an integer value and updates the version
        string accordingly.
        zinvalid ACIS version number r,   N)	r   ACIS_VERSIONr(   r#   KeyError
ValueErrorASM_VERSIONgetr-   )r2   r#   s     r   set_versionzAcisHeader.set_versionU   sx    	G % 27 ;D"DLL 	G 	G 	GEGEEFFF	G ,00"==s   ! >c                .    ddl m}  || j                  S )Nr   )	AsmHeader)entitiesrS   r-   )r2   rS   s     r   
asm_headerzAcisHeader.asm_header`   s'    ''''''y)***r   c                L    | j         rt          j        dz   S t          j        dz   S )Nr6   )r/   r   END_OF_ASM_DATA_SATEND_OF_ACIS_DATA_SATr1   s    r   sat_end_markerzAcisHeader.sat_end_markerd   s)     	4,s22-33r   c                @    | j         rt          j        S t          j        S )N)r/   r   END_OF_ASM_DATA_SABEND_OF_ACIS_DATA_SABr1   s    r   sab_end_markerzAcisHeader.sab_end_markerj   s     	.,,--r   N)r   r.   )r   r4   )r   r   )r   r
   )r#   r"   r   rJ   )__name__
__module____qualname____doc__r   MIN_EXPORT_VERSIONr#   __annotations__r$   r%   r&   EZDXF_BUILDER_IDr'   rL   r(   r   r   nowr*   r+   r-   r/   propertyr3   r9   rD   r8   rQ   rU   rY   r]    r   r   r!   r!      s        ))+G++++IJENNNN,J,,,,*5+CDLDDDD#eHLAAAMAAAAKK N    & & & X&
 
 
 
       &` ` ` `	> 	> 	> 	>+ + +4 4 4 4. . . . . .r   r!   )r	   r
   r   r   )r   r   r   r   )
__future__r   dataclassesr   r   r   r   r,   r   r   r   r!   rg   r   r   <module>rj      s    # " " " " " ( ( ( ( ( ( ( (             : : : :
8 8 8 8 O. O. O. O. O. O. O. O. O. O.r   