Ë
    £èhþ  ã                  óþ   — 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    ú3lib/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   € ð �y‰yœMÑ)Ð)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©z™There 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Å   … ñð
 &€GˆSÓ%àòó ðð óó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ñ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Ò   … Ø%€GˆSÓ%àóó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ðð òó ñ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„   sz   € Üˆt�}‰}Ó Ò"ØØˆØˆØ—”ˆAØ�v‰v˜ÒØ—‘˜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§]¡]¸%×@‰KˆC�ØˆF�Iñ Ar   c                ó4   — | j                   D ]	  }d|_        Œ y )Nr   )ri   r   r]   s     r   Ú	clear_idszAbstractBuilder.clear_ids–   s   € Ø—m”mˆFØˆF�Iñ $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ˆÔØ�;‰;×%Ò%Ø�K‰K˜Ÿ™×.Ñ.Ó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   € Ü�&‹z˜T×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   ø€ Ø—9’9 T×%5Ñ%5°aÔ%8Ø× Ñ   D×$4Ñ$4°QÓ$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¿   sT   ø€ õ	ð �8ˆÙØ"Ÿ,™, q›/ˆKÙ�ÔØ)×2Ñ2Ö4�
Ù�z•?Ø—O‘O JÕ/ð 5ô 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   ø€ Ü�!‹u˜DÑ Ø—‘œ˜A›”ØŸ™¨Ó+�Ø—|‘|×+Ò+Ø(,¯©¸¿¹Ó(E�FÔ%Ø—‘˜×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Î   s\   ù€ ö	ð �8ˆÜ›ˆÙØ"Ÿ,™, q›/ˆKÙ˜;Ô'Ø)×2Ñ2Ö4�
Ù! *Õ-Ø—O‘O JÕ/ð 5ô 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ô ,ô^�g˜a‘jô ô8E0�W˜Q‘Zõ E0r   