
    h                       S SK Jr  S SKJrJrJrJr  S SKJrJ	r	  SSK
JrJr  SSKJr  \(       a  SSKJr  S SKJr  \" S	S
S9r " S S
\5      r " S S\5      r " S S\5      r " S S\\   5      r " S S\\   5      rg)    )annotations)TypeVarGenericTYPE_CHECKINGOptional)ABCabstractmethod   )NULL_PTR_NAMEMIN_EXPORT_VERSION)
AcisHeader)
AcisEntity)Vec3TAbstractEntity)boundc                  L    \ rS rSr% SrS\S'   SrS\S'   S r\SS	 j5       r	S
r
g)r      z-Unified query interface for SAT and SAB data.strnameintidc                    U R                    $ N)r   selfs    E/var/www/html/env/lib/python3.13/site-packages/ezdxf/acis/abstract.py__str__AbstractEntity.__str__   s    ))    c                (    U R                   [        :H  $ )z;Returns ``True`` if this entity is the ``NULL_PTR`` entity.)r   r   r   s    r   is_null_ptrAbstractEntity.is_null_ptr   s     yyM))r!    Nreturnbool)__name__
__module____qualname____firstlineno____doc____annotations__r   r   propertyr#   __static_attributes__r%   r!   r   r   r      s,    7
IBL * *r!   c                      \ rS rSr% Sr\rS\S'   \SS j5       r	\SSS jj5       r
\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)
DataLoader    zkData loading interface to create high level AcisEntity data from low
level AbstractEntity representation.

r   versionc                    g r   r%   r   s    r   has_dataDataLoader.has_data(       r!   Nc                    g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   skip_sats     r   read_intDataLoader.read_int,       
 	r!   c                    g r   r%   r   s    r   read_doubleDataLoader.read_double3   r8   r!   c                    g r   r%   r   s    r   read_intervalDataLoader.read_interval7   r8   r!   c                    g r   r%   r   s    r   	read_vec3DataLoader.read_vec3;   r8   r!   c                    g r   r%   )r   truefalses      r   	read_boolDataLoader.read_bool?   r8   r!   c                    g r   r%   r   s    r   read_strDataLoader.read_strC   r8   r!   c                    g r   r%   r   s    r   read_ptrDataLoader.read_ptrG   r8   r!   c                    g r   r%   r   s    r   read_transformDataLoader.read_transformK   r8   r!   r%   r&   r   )r;   zOptional[int]r'   r   )r'   float)r'   ztuple[float, float, float])rI   r   rJ   r   r'   r(   )r'   r   )r'   r   )r'   zlist[float])r)   r*   r+   r,   r-   r   r4   r.   r	   r6   r<   r@   rC   rF   rK   rN   rQ   rT   r0   r%   r!   r   r2   r2       s    
 &GS%                 r!   r2   c                      \ rS rSr% \rS\S'   \SSS jj5       r\SS j5       r	\SS j5       r
\SS j5       r\SS j5       r\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       rSrg)DataExporterP   r   r4   c                    gr:   r%   )r   valuer;   s      r   	write_intDataExporter.write_intS   r>   r!   c                    g r   r%   r   r[   s     r   write_doubleDataExporter.write_doubleZ   r8   r!   c                    g r   r%   r_   s     r   write_intervalDataExporter.write_interval^   r8   r!   c                    g r   r%   r_   s     r   write_loc_vec3DataExporter.write_loc_vec3b   r8   r!   c                    g r   r%   r_   s     r   write_dir_vec3DataExporter.write_dir_vec3f   r8   r!   c                    g r   r%   )r   r[   rI   rJ   s       r   
write_boolDataExporter.write_boolj   r8   r!   c                    g r   r%   r_   s     r   	write_strDataExporter.write_strn   r8   r!   c                    g r   r%   r_   s     r   write_literal_strDataExporter.write_literal_strr   r8   r!   c                    g r   r%   r   entitys     r   	write_ptrDataExporter.write_ptrv   r8   r!   c                    g r   r%   )r   datas     r   write_transformDataExporter.write_transformz   r8   r!   r%   N)F)r[   r   r'   None)r[   rV   r'   r}   )r[   r   r'   r}   )r[   r(   rI   r   rJ   r   r'   r}   )r[   r   r'   r}   )rv   r   r'   r}   )rz   z	list[str]r'   r}   )r)   r*   r+   r,   r   r4   r.   r	   r\   r`   rc   rf   ri   rl   ro   rr   rw   r{   r0   r%   r!   r   rX   rX   P   s    %GS%                   r!   rX   c                  V    \ rS rSr% S\S'   S\S'   S\S'   SS jrSSS jjrSS	 jrS
rg)AbstractBuilder   r   headerlist[T]bodiesentitiesc                (   [        U R                  5      S:X  a  g / n/ nU R                   H[  nUR                  S:X  a  UR                  U5        M&  UR                  S:X  a  UR	                  SU5        MJ  UR                  U5        M]     X-   U l        g )Nr   body	asmheader)lenr   r   appendinsert)r   r   r   es       r   reorder_recordsAbstractBuilder.reorder_records   sx    t}}"Avva ;&a#"  )r!   c                J    [        U R                  US9 H  u  p#X#l        M     g )N)start)	enumerater   r   )r   r   numrv   s       r   	reset_idsAbstractBuilder.reset_ids   s    $T]]%@KCI Ar!   c                8    U R                    H
  nSUl        M     g )Nr   )r   r   ru   s     r   	clear_idsAbstractBuilder.clear_ids   s    mmFFI $r!   )r   N)r'   r}   )r   )r   r   r'   r}   )	r)   r*   r+   r,   r.   r   r   r   r0   r%   r!   r   r   r      s"    O*r!   r   c                      \ rS rSrSS jrSS jr\SS j5       r\SS j5       rSS jr	SS jr
SS jrSS	 jrSS
 jrSS jrSrg)EntityExporter   c                    Xl         UR                  U l        0 U l        U R                   R                  (       a*  U R	                  U R                   R                  5       5        g g r   )r   r4   _exported_entitieshas_asm_headerexport
asm_header)r   r   s     r   __init__EntityExporter.__init__   sE    ~~02;;%%KK..01 &r!   c                H    [        U R                  R                  5       5      $ r   )listr   valuesr   s    r   export_recordsEntityExporter.export_records   s    D++22455r!   c                    g r   r%   ru   s     r   make_recordEntityExporter.make_record   r8   r!   c                    g r   r%   )r   records     r   make_data_exporter!EntityExporter.make_data_exporter   r8   r!   c                X    UR                   (       a   eU R                  [        U5         $ r   is_noner   r   ru   s     r   
get_recordEntityExporter.get_record   s$    >>!!&&r&z22r!   c                    UR                   (       a  [        S5      eU R                  U5        U R                  U5        g )Nzinvalid NONE_REF entity given)r   	TypeError_make_all_records_export_dataru   s     r   r   EntityExporter.export   s1    >>;<<v&&!r!   c                2    [        U5      U R                  ;   $ r   )r   r   ru   s     r   _has_recordEntityExporter._has_record   s    &zT4444r!   c                X    UR                   (       a   eX R                  [        U5      '   g r   r   )r   rv   r   s      r   _add_recordEntityExporter._add_record   s!    >>!!.46
+r!   c                   ^  SU 4S jjnU/nU(       aZ  UR                  S5      nU" U5        UR                  5        H#  nU" U5      (       d  M  UR                  U5        M%     U(       a  MY  g g )Nc                   > U R                   (       d8  TR                  U 5      (       d"  TR                  U TR                  U 5      5        ggNTF)r   r   r   r   )r   r   s    r   add-EntityExporter._make_all_records.<locals>.add   s;    99T%5%5a%8%8  D$4$4Q$78r!   r   )r   r   r'   r(   )popr   r   )r   rv   r   r   next_entity
sub_entitys   `     r   r    EntityExporter._make_all_records   sX    	 8",,q/K)224
z??OOJ/ 5 hr!   c                   ^ ^ SUU 4S jjnU/n[        5       mU(       aZ  UR                  S5      nU" U5        UR                  5        H#  nU" U5      (       d  M  UR                  U5        M%     U(       a  MY  g g )Nc                2  > [        U 5      T;  a  TR                  [        U 5      5        TR                  U 5      nU R                  R                  (       d   TR                  U R                  5      Ul        U R                  TR                  U5      5        ggr   )r   r   r   
attributesr   r   r   )r   r   doner   s     r   _export_record3EntityExporter._export_data.<locals>._export_record   sk    !uD A+||++(,(EF%0089r!   r   )r   r   )setr   r   r   )r   rv   r   r   r   r   r   s   `     @r   r   EntityExporter._export_data   sf    	 	 8",,q/K;')224
!*--OOJ/ 5 hr!   )r   r   r4   N)r   r   )r'   r   )rv   r   r'   r   )r   r   r'   rX   )rv   r   )rv   r   r'   r(   )rv   r   r   r   r'   r}   )r)   r*   r+   r,   r   r   r	   r   r   r   r   r   r   r   r   r0   r%   r!   r   r   r      sR    26    3"5500r!   r   N)
__future__r   typingr   r   r   r   abcr   r	   constr   r   hdrr   r   r   
ezdxf.mathr   r   r   r2   rX   r   r   r%   r!   r   <module>r      sy    # < < # 4 $ C'(*S *- -`,3 ,^gaj 8E0WQZ E0r!   