
    Og                        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y)    )annotations)TypeVarGenericTYPE_CHECKINGOptional)ABCabstractmethod   )NULL_PTR_NAMEMIN_EXPORT_VERSION)
AcisHeader)
AcisEntity)Vec3TAbstractEntity)boundc                  B    e Zd ZU dZded<   dZded<   d Zed
d       Zy	)r   z-Unified query interface for SAT and SAB data.strnameintidc                    | j                    S N)r   selfs    X/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/acis/abstract.py__str__zAbstractEntity.__str__   s    ))    c                (    | 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     yyM))r   Nreturnbool)	__name__
__module____qualname____doc____annotations__r   r   propertyr!    r   r   r   r      s,    7
IBL * *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y)
DataLoaderzsData loading interface to create high level AcisEntity data from low
    level AbstractEntity representation.

    r   versionc                     y r   r+   r   s    r   has_datazDataLoader.has_data(       r   Nc                     y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_intzDataLoader.read_int,       
 	r   c                     y r   r+   r   s    r   read_doublezDataLoader.read_double3   r1   r   c                     y r   r+   r   s    r   read_intervalzDataLoader.read_interval7   r1   r   c                     y r   r+   r   s    r   	read_vec3zDataLoader.read_vec3;   r1   r   c                     y r   r+   )r   truefalses      r   	read_boolzDataLoader.read_bool?   r1   r   c                     y r   r+   r   s    r   read_strzDataLoader.read_strC   r1   r   c                     y r   r+   r   s    r   read_ptrzDataLoader.read_ptrG   r1   r   c                     y r   r+   r   s    r   read_transformzDataLoader.read_transformK   r1   r   r"   r   )r4   zOptional[int]r#   r   )r#   float)r#   ztuple[float, float, float])r>   r   r?   r   r#   r$   )r#   r   )r#   r   )r#   zlist[float])r%   r&   r'   r(   r   r.   r)   r	   r0   r5   r8   r:   r<   r@   rB   rD   rF   r+   r   r   r-   r-       s    
 &GS%                 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y)DataExporterr   r.   c                     yr3   r+   )r   valuer4   s      r   	write_intzDataExporter.write_intS   r6   r   c                     y r   r+   r   rK   s     r   write_doublezDataExporter.write_doubleZ   r1   r   c                     y r   r+   rN   s     r   write_intervalzDataExporter.write_interval^   r1   r   c                     y r   r+   rN   s     r   write_loc_vec3zDataExporter.write_loc_vec3b   r1   r   c                     y r   r+   rN   s     r   write_dir_vec3zDataExporter.write_dir_vec3f   r1   r   c                     y r   r+   )r   rK   r>   r?   s       r   
write_boolzDataExporter.write_boolj   r1   r   c                     y r   r+   rN   s     r   	write_strzDataExporter.write_strn   r1   r   c                     y r   r+   rN   s     r   write_literal_strzDataExporter.write_literal_strr   r1   r   c                     y r   r+   r   entitys     r   	write_ptrzDataExporter.write_ptrv   r1   r   c                     y r   r+   )r   datas     r   write_transformzDataExporter.write_transformz   r1   r   N)F)rK   r   r#   None)rK   rG   r#   rc   )rK   r   r#   rc   )rK   r$   r>   r   r?   r   r#   rc   )rK   r   r#   rc   )r^   r   r#   rc   )ra   z	list[str]r#   rc   )r%   r&   r'   r   r.   r)   r	   rL   rO   rQ   rS   rU   rW   rY   r[   r_   rb   r+   r   r   rI   rI   P   s    %GS%                   r   rI   c                  F    e Zd ZU ded<   ded<   ded<   d
dZdddZd
dZy	)AbstractBuilderr   headerlist[T]bodiesentitiesc                   t        | j                        dk(  ry g }g }| j                  D ]V  }|j                  dk(  r|j                  |       $|j                  dk(  r|j	                  d|       F|j                  |       X ||z   | _        y )Nr   body	asmheader)lenri   r   appendinsert)r   rf   ri   es       r   reorder_recordszAbstractBuilder.reorder_records   s    t}}" 	#Avva ;&a#"	# )r   c                P    t        | j                  |      D ]  \  }}||_         y )N)start)	enumerateri   r   )r   rs   numr^   s       r   	reset_idszAbstractBuilder.reset_ids   s'    $T]]%@ 	KCFI	r   c                4    | j                   D ]	  }d|_         y )Nr   )ri   r   r]   s     r   	clear_idszAbstractBuilder.clear_ids   s    mm 	FFI	r   N)r#   rc   )r   )rs   r   r#   rc   )r%   r&   r'   r)   rq   rv   rx   r+   r   r   re   re      s"    O*r   re   c                  p    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y)EntityExporterc                    || _         |j                  | _        i | _        | j                   j                  r*| j	                  | j                   j                                y y r   )rf   r.   _exported_entitieshas_asm_headerexport
asm_header)r   rf   s     r   __init__zEntityExporter.__init__   sG    ~~02;;%%KK..01 &r   c                H    t        | j                  j                               S r   )listr|   valuesr   s    r   export_recordszEntityExporter.export_records   s    D++22455r   c                     y r   r+   r]   s     r   make_recordzEntityExporter.make_record   r1   r   c                     y r   r+   )r   records     r   make_data_exporterz!EntityExporter.make_data_exporter   r1   r   c                N    |j                   rJ | j                  t        |         S r   is_noner|   r   r]   s     r   
get_recordzEntityExporter.get_record   s$    >>!!&&r&z22r   c                v    |j                   rt        d      | j                  |       | j                  |       y )Nzinvalid NONE_REF entity given)r   	TypeError_make_all_records_export_datar]   s     r   r~   zEntityExporter.export   s1    >>;<<v&&!r   c                0    t        |      | j                  v S r   )r   r|   r]   s     r   _has_recordzEntityExporter._has_record   s    &zT4444r   c                P    |j                   rJ || j                  t        |      <   y r   r   )r   r^   r   s      r   _add_recordzEntityExporter._add_record   s#    >>!!.46
+r   c                     d fd}|g}|rL|j                  d      } ||       |j                         D ]  } ||      s|j                  |        |rKy y )Nc                    | j                   s3j                  |       s"j                  | j                  |              yyNTF)r   r   r   r   )rp   r   s    r   addz-EntityExporter._make_all_records.<locals>.add   s8    99T%5%5a%8  D$4$4Q$78r   r   )rp   r   r#   r$   )popri   rn   )r   r^   r   ri   next_entity
sub_entitys   `     r   r   z EntityExporter._make_all_records   sY    	 8",,q/K)224 0
z?OOJ/0 r   c                     d fd}|g}t               |rL|j                  d      } ||       |j                         D ]  } ||      s|j                  |        |rKy y )Nc                $   t        |       vrj                  t        |              j                  |       }| j                  j                  s j                  | j                        |_        | j                  j                  |             yyr   )r   r   r   
attributesr   r~   r   )rp   r   doner   s     r   _export_recordz3EntityExporter._export_data.<locals>._export_record   sk    !uD A+||++(,(EF%0089r   r   )rp   r   )setr   ri   rn   )r   r^   r   ri   r   r   r   s   `     @r   r   zEntityExporter._export_data   sa    	 8",,q/K;')224 0
!*-OOJ/0 r   N)rf   r   )r#   rg   )r^   r   r#   r   )r   r   r#   rI   )r^   r   )r^   r   r#   r$   )r^   r   r   r   r#   rc   )r%   r&   r'   r   r   r	   r   r   r   r~   r   r   r   r   r+   r   r   rz   rz      sR    26    3"5500r   rz   N)
__future__r   typingr   r   r   r   abcr   r	   constr   r   hdrr   ri   r   
ezdxf.mathr   r   r   r-   rI   re   rz   r+   r   r   <module>r      sy    # < < # 4 $ C'(*S *- -`,3 ,^gaj 8E0WQZ E0r   