Ë
    £èhV6  ã                  óÐ  — d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
 d dlZd dlZd dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZ d d	lmZmZmZmZmZ d d
lm Z  ddl!m"Z"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)Z) erd dl*m+Z+ d dl,m-Z- d dl.m/Z/ g d¢Z0 ejb                  d«      Z2 G d„ de"«      Z3e' G d„ de3«      «       Z4 edd edd ejj                  d d«      e¬«      i«      Z6d0d„Z7e' G d„ de3«      «       Z8 ed i «      Z9e' G d!„ d"e3«      «       Z: ed#d$ ed%«      i«      Z; ee;«      Z<e' G d&„ d'e3«      «       Z= ed( ed«       ed)«       ed*«       ed+«      d,œ«      Z> G d-„ d.e3«      Z?d1d/„Z@y)2é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚUnionÚAnyÚOptional)ÚSelfÚ	TypeGuardN)Ú	validator)ÚDXF2000ÚDXFStructureErrorÚSUBCLASS_MARKER)ÚTags)ÚdxftagÚDXFTagÚDXFBinaryTag)ÚDXFAttrÚDXFAttributesÚDefSubclassÚRETURN_DEFAULTÚgroup_code_mapping)Útake2é   )Ú	DXFEntityÚ
base_classÚSubclassProcessorÚDXFTagStorage)Úregister_entity)Údefault_copy)ÚAuditor)ÚDXFNamespace)ÚAbstractTagWriter)Ú	DXFObjectÚPlaceholderÚXRecordÚ
VBAProjectÚSortEntsTableÚFieldÚis_dxf_objectÚezdxfc                  ó   — e Zd ZdZeZy)r#   z5Non-graphical entities stored in the OBJECTS section.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚMIN_DXF_VERSION_FOR_EXPORT© ó    ú5lib/python3.12/site-packages/ezdxf/entities/dxfobj.pyr#   r#   )   s   „ Ù?à!(Ñr2   r#   c                  ó   — e Zd ZdZy)r$   ÚACDBPLACEHOLDERN)r,   r-   r.   ÚDXFTYPEr1   r2   r3   r$   r$   /   s   „ à�Gr2   r$   ÚAcDbXrecordÚcloningé  é   )Údefaultr   Úfixerc              #  ól   K  — | D ]+  }t        |t        «      r|–— Œt        |d   |d   «      –— Œ- y ­w)Nr   r   )Ú
isinstancer   r   )ÚtagsÚtags     r3   ÚtotagsrA   G   s4   è ø€ ÛˆÜ�cœ6Ô"Ø‹Iä˜˜Q™  Q¡Ó(Ó(ñ	 ùs   ‚24c                  ó~   ‡ — e Zd ZdZdZ eee«      Zˆ fd„Z	e
fd
d„Z	 d	 	 	 dˆ fd„Zdˆ fd„Zdd„Zdd„Zdd	„Zˆ xZS )r%   zDXF XRECORD entityÚXRECORDc                ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚ__init__r   r?   ©ÚselfÚ	__class__s    €r3   rG   zXRecord.__init__V   s   ø€ Ü‰ÑÔÜ“Fˆ�	r2   c                ó\   — t        |t        «      sJ ‚t        | j                  «      |_        y rE   )r>   r%   r   r?   ©rI   ÚentityÚcopy_strategys      r3   Ú	copy_datazXRecord.copy_dataZ   s!   € Ü˜&¤'Ô*Ð*Ð*Ü˜4Ÿ9™9“oˆ�r2   c                ó¢  •— t         ‰| �  |«      }|r–	 |j                  d   }d}t        |«      dkD  rc| j                  �| j                  j                  t        k\  r:|d   \  }}|dk(  r
||_
        d}n#t        j                  d|j
                  › d�«       t        ||d  «      | _        |S # t        $ r t	        d|j
                  › d�«      ‚w xY w)Nr   z*Missing subclass AcDbXrecord in XRecord (#Ú)r9   é   z
XRecord (#z6): expected group code 280 as first tag in AcDbXrecord)rF   Úload_dxf_attribsÚ
subclassesÚ
IndexErrorr   ÚhandleÚlenÚdocÚ
dxfversionr   r8   ÚloggerÚinfor   r?   )rI   Ú	processorÚdxfr?   Ústart_indexÚcodeÚvaluerJ   s          €r3   rS   zXRecord.load_dxf_attribs^   sä   ø€ ô ‰gÑ& yÓ1ˆÙðØ ×+Ñ+¨AÑ.�ð
 ˆKÜ�4‹y˜1Š}ð —8‘8Ð# t§x¡x×':Ñ':¼gÒ'EØ"& q¡'‘K�D˜%Ø˜s’{Ø&+˜œØ&'™äŸ™Ø(¨¯©¨ð 5:ð ;ôô ˜T + ,Ð/Ó0ˆDŒIØˆ
øô) ò Ü'Ø@ÀÇÁÀÈAÐNóð ðús   ”B+ Â+#Cc                ó  •— t         ‰| �  |«       |j                  t        t        j
                  «       |j                  d| j                  j                  «       |j                  t        t        | j                  «      «      «       y )Nr9   )rF   Úexport_entityÚ
write_tag2r   Úacdb_xrecordÚnamer]   r8   Ú
write_tagsr   rA   r?   ©rI   Ú	tagwriterrJ   s     €r3   rb   zXRecord.export_entity{   s\   ø€ Ü‰Ñ˜iÔ(Ø×Ñœ_¬l×.?Ñ.?Ô@Ø×Ñ˜S $§(¡(×"2Ñ"2Ô3Ø×ÑœT¤&¨¯©Ó"3Ó4Õ5r2   c                ó€   — | j                   j                  «        | j                   j                  t        |«      «       y)zReset DXF tags.N)r?   ÚclearÚextendrA   ©rI   r?   s     r3   ÚresetzXRecord.reset�   s&   € à�	‰	�‰ÔØ�	‰	×Ñœ ›Õ&r2   c                óL   — | j                   j                  t        |«      «       y)zExtend DXF tags.N)r?   rk   rA   rl   s     r3   rk   zXRecord.extend†   s   € à�	‰	×Ñœ ›Õ&r2   c                ó8   — | j                   j                  «        y)zRemove all DXF tags.N)r?   rj   ©rI   s    r3   rj   zXRecord.clearŠ   s   € à�	‰	�‰Õr2   ©rM   r	   ÚreturnÚNonerE   ©r\   zOptional[SubclassProcessor]rr   r!   ©rh   r"   rr   rs   )r?   z(Iterable[Union[DXFTag, tuple[int, Any]]]rr   rs   ©rr   rs   )r,   r-   r.   r/   r6   r   r   rd   Ú
DXFATTRIBSrG   r   rO   rS   rb   rm   rk   rj   Ú__classcell__©rJ   s   @r3   r%   r%   O   sU   ø„ áà€GÙ˜z¨<Ó8€Jôð 5Aô &ð
 8<ðØ4ðà	õõ:6ó'ó
'÷r2   r%   ÚAcDbVbaProjectc                  ó~   ‡ — e Zd ZdZdZ eee«      Zˆ fd„Z	e
fd
d„Z	 d	 	 	 dˆ fd„Zdd„Zdˆ fd„Zdd„Zdd	„Zˆ xZS )r&   zDXF VBA_PROJECT entityÚVBA_PROJECTc                ó0   •— t         ‰| �  «        d| _        y ©Nr2   )rF   rG   ÚdatarH   s    €r3   rG   zVBAProject.__init__¡   s   ø€ Ü‰ÑÔØˆ�	r2   c                óJ   — t        |t        «      sJ ‚|j                  |_        y rE   )r>   r&   r   rL   s      r3   rO   zVBAProject.copy_data¥   s   € Ü˜&¤*Ô-Ð-Ð-Ø—k‘kˆ�r2   c                óf   •— t         ‰| �  |«      }|r| j                  |j                  d   «       |S )Nr   )rF   rS   Úload_byte_datarT   )rI   r\   r]   rJ   s      €r3   rS   zVBAProject.load_dxf_attribs©   s5   ø€ ô ‰gÑ& yÓ1ˆÙØ×Ñ 	× 4Ñ 4°QÑ 7Ô8Øˆ
r2   c                ó–   — t        j                   d«      }d„ |D «       D ]  }|j                  |«       Œ |j                  «       | _        y )NÚBc              3  óT   K  — | ]   }|j                   d k(  sŒ|j                  –— Œ" y­w)é6  N)r_   r`   )Ú.0r@   s     r3   Ú	<genexpr>z,VBAProject.load_byte_data.<locals>.<genexpr>´   s   è ø€ ÐG©t¨°s·x±xÀ3³˜#Ÿ)�)©tùs   ‚(—()Úarrayrk   Útobytesr   )rI   r?   Ú
byte_arrayÚ	byte_datas       r3   r‚   zVBAProject.load_byte_data±   s>   € Ü—[‘[ Ó%ˆ
áG©tÖGˆIØ×Ñ˜iÕ(ð Hà×&Ñ&Ó(ˆ�	r2   c                óØ   •— t         ‰| �  |«       |j                  t        t        j
                  «       |j                  dt        | j                  «      «       | j                  |«       y )NéZ   )	rF   rb   rc   r   Úacdb_vba_projectre   rW   r   Úexport_datarg   s     €r3   rb   zVBAProject.export_entity¸   sM   ø€ Ü‰Ñ˜iÔ(Ø×Ñœ_Ô.>×.CÑ.CÔDØ×Ñ˜R¤ T§Y¡Y£Ô0Ø×Ñ˜Õ#r2   c                ón   — | j                   }|r'|j                  t        d|d d «      «       |dd  }|rŒ&y y )Nr†   é   )r   Ú	write_tagr   )rI   rh   r   s      r3   r�   zVBAProject.export_data¾   s9   € Ø�y‰yˆÙØ×Ñ¤¨S°$°t¸°*Ó =Ô>Ø˜˜�:ˆDô r2   c                ó   — d| _         y r~   )r   rp   s    r3   rj   zVBAProject.clearÄ   s	   € Øˆ�	r2   rq   rE   rt   ©r?   r   rr   rs   ru   ©rh   r"   rv   )r,   r-   r.   r/   r6   r   r   r�   rw   rG   r   rO   rS   r‚   rb   r�   rj   rx   ry   s   @r3   r&   r&   š   sV   ø„ á à€GÙ˜zÐ+;Ó<€Jôð 5Aô "ð
 8<ðØ4ðà	õó)õ$ó÷r2   r&   ÚAcDbSortentsTableÚblock_record_handleéJ  c                  ó®   ‡ — e Zd ZdZdZ eee«      Zdˆ fd„Z	e
fdd„Z	 d	 	 	 dˆ fd„Zdd„Zdˆ fd„Zdd„Zdd	„Zdd
„Zdd„Zd„ Zdd„Zdd„Zdd„Zˆ xZS )r'   z.DXF SORTENTSTABLE entity - sort entities tableÚSORTENTSTABLEc                ó@   •— t         ‰| �  «        t        «       | _        y rE   )rF   rG   ÚdictÚtablerH   s    €r3   rG   zSortEntsTable.__init__ô   s   ø€ Ü‰ÑÔÜ%)£Vˆ�
r2   c                ó\   — t        |t        «      sJ ‚t        |j                  «      |_        y rE   )r>   r'   r�   rž   rL   s      r3   rO   zSortEntsTable.copy_dataø   s"   € Ü˜&¤-Ô0Ð0Ð0Ü˜FŸL™LÓ)ˆ�r2   c                ó~   •— t         ‰| �  |«      }|r*|j                  |t        dd¬«      }| j	                  |«       |S )Nr   F)Úlog)rF   rS   Úfast_load_dxfattribsÚ acdb_sort_ents_table_group_codesÚ
load_table)rI   r\   r]   r?   rJ   s       €r3   rS   zSortEntsTable.load_dxf_attribsü   sI   ø€ ô ‰gÑ& yÓ1ˆÙØ×1Ñ1ØÔ5°q¸eð 2ó ˆDð �O‰O˜DÔ!Øˆ
r2   c                ó  — t        |«      D ]x  \  }}|j                  dk7  rt        d|j                  › d�«      ‚|j                  dk7  rt        d|j                  › d�«      ‚|j                  | j                  |j                  <   Œz y )NéK  zInvalid handle code z, expected 331é   zInvalid sort handle code z, expected 5)r   r_   r   r`   rž   )rI   r?   rV   Úsort_handles       r3   r¤   zSortEntsTable.load_table  s…   € Ü#(¨¦;ÑˆF�KØ�{‰{˜cÒ!Ü'Ø*¨6¯;©;¨-°~ÐFóð ð ×Ñ 1Ò$Ü'Ø/°·±¨}¸LÐIóð ð (3×'8Ñ'8ˆD�J‰J�v—|‘|Ò$ñ $/r2   c                óÚ   •— t         ‰| �  |«       |j                  t        t        j
                  «       |j                  d| j                  j                  «       | j                  |«       y )Nr™   )	rF   rb   rc   r   Úacdb_sort_ents_tablere   r]   r˜   Úexport_tablerg   s     €r3   rb   zSortEntsTable.export_entity  sO   ø€ Ü‰Ñ˜iÔ(Ø×Ñœ_Ô.B×.GÑ.GÔHØ×Ñ˜S $§(¡(×">Ñ">Ô?Ø×Ñ˜)Õ$r2   c                ó�   — | j                   j                  «       D ])  \  }}|j                  d|«       |j                  d|«       Œ+ y )Nr¦   r§   )rž   Úitemsrc   )rI   rh   rV   r¨   s       r3   r«   zSortEntsTable.export_table  s>   € Ø#'§:¡:×#3Ñ#3Ö#5ÑˆF�KØ× Ñ   fÔ-Ø× Ñ   KÕ0ñ $6r2   c                ó,   — t        | j                  «      S rE   )rW   rž   rp   s    r3   Ú__len__zSortEntsTable.__len__  s   € Ü�4—:‘:‹Ðr2   c                óH   — t        | j                  j                  «       «      S )zXYields all redraw associations as (object_handle, sort_handle)
        tuples.

        )Úiterrž   r­   rp   s    r3   Ú__iter__zSortEntsTable.__iter__!  s   € ô
 �D—J‘J×$Ñ$Ó&Ó'Ð'r2   c                ó"   — || j                   |<   y)zêAppend redraw association (handle, sort_handle).

        Args:
            handle: DXF entity handle (uppercase hex value without leading '0x')
            sort_handle: sort handle (uppercase hex value without leading '0x')

        N)rž   )rI   rV   r¨   s      r3   ÚappendzSortEntsTable.append(  s   € ð )ˆ�
‰
�6Òr2   c                ó"   — t        «       | _        y)z+Remove all handles from redraw order table.N©r�   rž   rp   s    r3   rj   zSortEntsTable.clear2  s   € ä“Vˆ�
r2   c                ó$   — t        |«      | _        y)zÊSet all redraw associations from iterable `handles`, after removing
        all existing associations.

        Args:
            handles: iterable yielding (object_handle, sort_handle) tuples

        Nr¶   )rI   Úhandless     r3   Úset_handleszSortEntsTable.set_handles6  s   € ô ˜'“]ˆ�
r2   c                óÄ   — | j                   €y| j                   j                  }| j                  j                  «       D ��ci c]  \  }}||v r||“Œ c}}| _        yc c}}w )z>Remove all handles which do not exist in the drawing database.N)rX   Úentitydbrž   r­   )rI   r»   rV   r¨   s       r3   Úremove_invalid_handlesz$SortEntsTable.remove_invalid_handlesG  sc   € à�8‰8ÐØØ—8‘8×$Ñ$ˆð (,§z¡z×'7Ñ'7Ô'9ô
á'9Ñ#�˜Ø˜Ñ!ð �KÑØ'9ò
ˆ�
ùó 
s   ÁAc                ó>   — 	 | j                   |= y# t        $ r Y yw xY w)zžRemove handle of DXF entity from redraw order table.

        Args:
            handle: DXF entity handle (uppercase hex value without leading '0x')

        N)rž   ÚKeyError)rI   rV   s     r3   Úremove_handlezSortEntsTable.remove_handleR  s%   € ð	Ø—
‘
˜6Ñ"øÜò 	Ùð	ús   ‚ �	›rv   rq   rE   rt   r•   ru   r–   )rr   Úint)rr   r   )rV   Ústrr¨   rÁ   rr   rs   )r¸   zIterable[tuple[str, str]]rr   rs   )rV   rÁ   rr   rs   )r,   r-   r.   r/   r6   r   r   rª   rw   rG   r   rO   rS   r¤   rb   r«   r¯   r²   r´   rj   r¹   r¼   r¿   rx   ry   s   @r3   r'   r'   Ö   sv   ø„ á8ð2 €GÙ˜zÐ+?Ó@€Jõ,ð 5Aô *ð
 8<ð	Ø4ð	à	õ	ó
9õ%ó1ó
ó(ó)òó#ó"	
÷
r2   r'   Ú	AcDbFieldrR   é   rŽ   )Úevaluator_idÚ
field_codeÚfield_code_overflowÚn_child_fieldsc                  ó&   — e Zd ZdZdZ eee«      Zy)r(   zDXF FIELD entityÚFIELDN)	r,   r-   r.   r/   r6   r   r   Ú
acdb_fieldrw   r1   r2   r3   r(   r(   €  s   „ Ùà€GÙ˜z¨:Ó6�Jr2   r(   c                ó`   — t        | t        «      ryt        | t        «      r| j                  syy)zÇReturns ``True`` if the `entity` is a DXF object from the OBJECTS section,
    otherwise the entity is a table or class entry or a graphic entity which can
    not reside in the OBJECTS section.
    TF)r>   r#   r   Úis_graphic_entity)rM   s    r3   r)   r)   ‡  s)   € ô
 �&œ)Ô$ØÜ�&œ-Ô(°×1IÒ1IØØr2   )r?   r   rr   zIterable[DXFTag])rM   r   rr   zTypeGuard[DXFObject])AÚ
__future__r   Útypingr   r   r   r   r   Útyping_extensionsr	   r
   Úloggingr‰   Úezdxf.lldxfr   Úezdxf.lldxf.constr   r   r   Úezdxf.lldxf.tagsr   Úezdxf.lldxf.typesr   r   r   Úezdxf.lldxf.attributesr   r   r   r   r   Úezdxf.toolsr   Ú	dxfentityr   r   r   r   Úfactoryr   Úcopyr   Úezdxf.auditr    Úezdxf.entitiesr!   Úezdxf.lldxf.tagwriterr"   Ú__all__Ú	getLoggerrZ   r#   r$   Úis_in_integer_rangerd   rA   r%   r�   r&   rª   r£   r'   rÊ   r(   r)   r1   r2   r3   Ú<module>rà      s°  ðõ #ß @Õ @ß -Û Û Ý !ß IÑ IÝ !ß :Ñ :÷õ õ ß NÓ NÝ $Ý áÝ#Ý+Ý7ò€ð 
ˆ×	Ñ	˜7Ó	#€ô)�	ô )ð ô �)ó  ó ð ñ Øð 	‘7ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ðó€ó&)ð ô<ˆió <ó ð<ñ~ ØðóÐ ð ô*�ó *ó ð*ñZ #Øð
 	™w s›|ð	ó
Ð ñ $6Ð6JÓ#KÐ  ð ôE�Ió Eó ðEñP Øá ›
Ù˜a“já& q›zá! "›+ñó€
ôB7ˆIô 7ô	r2   