
    'j                    0   d dl mZ d dlmZmZmZmZ d dlmZm	Z	 ddl
mZmZ ddlmZ erddlmZ d dlmZ  ed	d
          Z G d d
e          Z G d de          Z G d de          Z G d dee                   Z G d dee                   ZdS )    )annotations)TypeVarGenericTYPE_CHECKINGOptional)ABCabstractmethod   )NULL_PTR_NAMEMIN_EXPORT_VERSION)
AcisHeader)
AcisEntity)Vec3TAbstractEntity)boundc                  J    e Zd ZU dZded<   dZded<   d Zedd
            ZdS )r   z-Unified query interface for SAT and SAB data.strnameintidc                    | j          S N)r   selfs    M/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/acis/abstract.py__str__zAbstractEntity.__str__   s    )~    returnboolc                "    | j         t          k    S )z;Returns ``True`` if this entity is the ``NULL_PTR`` entity.)r   r   r   s    r   is_null_ptrzAbstractEntity.is_null_ptr   s     yM))r   Nr    r!   )	__name__
__module____qualname____doc____annotations__r   r   propertyr#    r   r   r   r      sa         77IIIBLLLL   * * * X* * *r   c                      e Zd ZU dZeZded<   edd            Zeddd
            Z	edd            Z
edd            Zedd            Zedd            Zedd            Zed d            Zed!d            ZdS )"
DataLoaderzsData loading interface to create high level AcisEntity data from low
    level AbstractEntity representation.

    r   versionr    r!   c                    d S r   r+   r   s    r   has_datazDataLoader.has_data(       r   Nskip_satOptional[int]c                    dS zThere are sometimes additional int values in SAB files which are
        not present in SAT files, maybe reference counters e.g. vertex, coedge.
        Nr+   )r   r2   s     r   read_intzDataLoader.read_int,   	    
 	r   floatc                    d S r   r+   r   s    r   read_doublezDataLoader.read_double3   r1   r   c                    d S r   r+   r   s    r   read_intervalzDataLoader.read_interval7   r1   r   tuple[float, float, float]c                    d S r   r+   r   s    r   	read_vec3zDataLoader.read_vec3;   r1   r   truer   falsec                    d S r   r+   )r   r@   rA   s      r   	read_boolzDataLoader.read_bool?   r1   r   c                    d S r   r+   r   s    r   read_strzDataLoader.read_strC   r1   r   r   c                    d S r   r+   r   s    r   read_ptrzDataLoader.read_ptrG   r1   r   list[float]c                    d S r   r+   r   s    r   read_transformzDataLoader.read_transformK   r1   r   r$   r   )r2   r3   r    r   )r    r8   )r    r=   )r@   r   rA   r   r    r!   )r    r   )r    r   )r    rH   )r%   r&   r'   r(   r   r.   r)   r	   r0   r6   r:   r<   r?   rC   rE   rG   rJ   r+   r   r   r-   r-       sV         
 &G%%%%   ^     ^    ^    ^    ^    ^    ^    ^    ^  r   r-   c                     e Zd ZU eZded<   eddd            Zedd	            Zedd
            Z	edd            Z
edd            Zed d            Zed!d            Zed!d            Zed"d            Zed#d            ZdS )$DataExporterr   r.   Fvaluer    Nonec                    dS r5   r+   )r   rM   r2   s      r   	write_intzDataExporter.write_intS   r7   r   r8   c                    d S r   r+   r   rM   s     r   write_doublezDataExporter.write_doubleZ   r1   r   c                    d S r   r+   rR   s     r   write_intervalzDataExporter.write_interval^   r1   r   r   c                    d S r   r+   rR   s     r   write_loc_vec3zDataExporter.write_loc_vec3b   r1   r   c                    d S r   r+   rR   s     r   write_dir_vec3zDataExporter.write_dir_vec3f   r1   r   r!   r@   r   rA   c                    d S r   r+   )r   rM   r@   rA   s       r   
write_boolzDataExporter.write_boolj   r1   r   c                    d S r   r+   rR   s     r   	write_strzDataExporter.write_strn   r1   r   c                    d S r   r+   rR   s     r   write_literal_strzDataExporter.write_literal_strr   r1   r   entityr   c                    d S r   r+   r   r`   s     r   	write_ptrzDataExporter.write_ptrv   r1   r   data	list[str]c                    d S r   r+   )r   rd   s     r   write_transformzDataExporter.write_transformz   r1   r   N)F)rM   r   r    rN   )rM   r8   r    rN   )rM   r   r    rN   )rM   r!   r@   r   rA   r   r    rN   )rM   r   r    rN   )r`   r   r    rN   )rd   re   r    rN   )r%   r&   r'   r   r.   r)   r	   rP   rS   rU   rW   rY   r[   r]   r_   rc   rg   r+   r   r   rL   rL   P   sj        %G%%%%    ^    ^    ^    ^    ^    ^    ^    ^    ^    ^  r   rL   c                  H    e Zd ZU ded<   ded<   ded<   ddZdddZddZdS )AbstractBuilderr   headerlist[T]bodiesentitiesr    rN   c                   t          | j                  dk    rd S g }g }| j        D ]Z}|j        dk    r|                    |           #|j        dk    r|                    d|           E|                    |           [||z   | _        d S )Nr   body	asmheader)lenrm   r   appendinsert)r   rj   rm   es       r   reorder_recordszAbstractBuilder.reorder_records   s    t}""F 	# 	#Ava    ;&&a####"""")r   r   startr   c                L    t          | j        |          D ]\  }}||_        d S )N)rv   )	enumeraterm   r   )r   rv   numr`   s       r   	reset_idszAbstractBuilder.reset_ids   s7    $T]%@@@ 	 	KCFII	 	r   c                (    | j         D ]	}d|_        
d S )Nr   )rm   r   rb   s     r   	clear_idszAbstractBuilder.clear_ids   s&    m 	 	FFII	 	r   N)r    rN   )r   )rv   r   r    rN   )r%   r&   r'   r)   ru   rz   r|   r+   r   r   ri   ri      sx         OOO* * * *         r   ri   c                  ~    e Zd ZddZddZedd
            Zedd            ZddZddZ	ddZ
ddZddZddZdS )EntityExporterrj   r   c                    || _         |j        | _        i | _        | j         j        r.|                     | j                                                    d S d S r   )rj   r.   _exported_entitieshas_asm_headerexport
asm_header)r   rj   s     r   __init__zEntityExporter.__init__   sW    ~02;% 	2KK..0011111	2 	2r   r    rk   c                N    t          | j                                                  S r   )listr   valuesr   s    r   export_recordszEntityExporter.export_records   s    D+2244555r   r`   r   r   c                    d S r   r+   rb   s     r   make_recordzEntityExporter.make_record   r1   r   recordrL   c                    d S r   r+   )r   r   s     r   make_data_exporterz!EntityExporter.make_data_exporter   r1   r   c                H    |j         rJ | j        t          |                   S r   is_noner   r   rb   s     r   
get_recordzEntityExporter.get_record   s$    >!!!&r&zz22r   c                    |j         rt          d          |                     |           |                     |           d S )Nzinvalid NONE_REF entity given)r   	TypeError_make_all_records_export_datarb   s     r   r   zEntityExporter.export   sI    > 	=;<<<v&&&&!!!!!r   r!   c                .    t          |          | j        v S r   )r   r   rb   s     r   _has_recordzEntityExporter._has_record   s    &zzT444r   rN   c                F    |j         rJ || j        t          |          <   d S r   r   )r   r`   r   s      r   _add_recordzEntityExporter._add_record   s)    >!!!.46

+++r   c                     d fd}|g}|r[|                     d          } ||           |                                D ]"} ||          r|                    |           #|Yd S d S )Nrt   r   r    r!   c                    | j         s@                    |           s+                    |                     |                      dS dS NTF)r   r   r   r   )rt   r   s    r   addz-EntityExporter._make_all_records.<locals>.add   sP    9 T%5%5a%8%8   D$4$4Q$7$7888t5r   r   )rt   r   r    r!   )poprm   rr   )r   r`   r   rm   next_entity
sub_entitys   `     r   r   z EntityExporter._make_all_records   s    	 	 	 	 	 	 8 	0",,q//KC)2244 0 0
3z?? 0OOJ///  	0 	0 	0 	0 	0r   c                     d fd}|g}t                      |r[|                    d          } ||           |                                D ]"} ||          r|                    |           #|Yd S d S )Nrt   r   c                B   t          |           vr                    t          |                                          |           }| j        j        s                    | j                  |_        |                                         |                     dS dS r   )r   r   r   
attributesr   r   r   )rt   r   doner   s     r   _export_recordz3EntityExporter._export_data.<locals>._export_record   s    !uuD  A++|+ F(,(E(EF%0088999t5r   r   )rt   r   )setr   rm   rr   )r   r`   r   rm   r   r   r   s   `     @r   r   zEntityExporter._export_data   s    	 	 	 	 	 	 	 8 	0",,q//KN;''')2244 0 0
!>*-- 0OOJ///  	0 	0 	0 	0 	0r   N)rj   r   )r    rk   )r`   r   r    r   )r   r   r    rL   )r`   r   )r`   r   r    r!   )r`   r   r   r   r    rN   )r%   r&   r'   r   r   r	   r   r   r   r   r   r   r   r   r+   r   r   r~   r~      s        2 2 2 26 6 6 6    ^    ^3 3 3 3" " " "5 5 5 55 5 5 50 0 0 00 0 0 0 0 0r   r~   N)
__future__r   typingr   r   r   r   abcr   r	   constr   r   hdrr   rm   r   
ezdxf.mathr   r   r   r-   rL   ri   r~   r+   r   r   <module>r      s   # " " " " " < < < < < < < < < < < < # # # # # # # # 4 4 4 4 4 4 4 4        $$$$$$ GC'(((* * * * *S * * *- - - - - - - -`, , , , ,3 , , ,^    gaj   8E0 E0 E0 E0 E0WQZ E0 E0 E0 E0 E0r   