Ë
    £èhš)  ã                  óH  — d Z ddlmZ ddlmZmZmZmZmZ ddl	Z	ddl
mZ ddlmZmZ ddlmZ ddlmZmZ erdd	lmZ dd
lmZ  G d„ de	j0                  «      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zdd„Zdd„Zdd„Z d d„Z!d!d„Z"deiZ#dZ$d"d„Z%y)#a$  
ACDSDATA entities have NO handles, therefore they can not be stored in the
drawing entity database.

section structure (work in progress):
0 <str> SECTION
2 <str> ACDSDATA
70 <int> 2 # flag?
71 <int> 6 # count of following ACDSSCHEMA entities ??? no, just another flag

0 <str> ACDSSCHEMA           # dxftype: schema definition
90 <int> 0                   # schema number 0, 1, 2, 3 ...
1 <str> AcDb3DSolid_ASM_Data # schema name

2 <str> AcDbDs::ID           # subsection name
280 <int> 10                 # subsection type 10 = ???
91 <int> 8                   # data ???

2 <str> ASM_Data             # subsection name
280 <int> 15                 # subsection type
91 <int> 0                   # data ???
101 <str> ACDSRECORD         # data
95 <int> 0
90 <int> 2
...

0 <str> ACDSSCHEMA
90 <int> 1
1 <str> AcDb_Thumbnail_Schema
...

0 <str> ACDSSCHEMA
90 <int> 2
1 <str> AcDbDs::TreatedAsObjectDataSchema
...

0 <str> ACDSSCHEMA
90 <int> 3
1 <str> AcDbDs::LegacySchema
2 <str> AcDbDs::Legacy
280 <int> 1
91 <int> 0

0 <str> ACDSSCHEMA
90 <int> 4
1 <str> AcDbDs::IndexedPropertySchema
2 <str> AcDs:Indexable
280 <int> 1
91 <int> 0

0 <str> ACDSSCHEMA
90 <int> 5
1 <str> AcDbDs::HandleAttributeSchema
2 <str> AcDbDs::HandleAttribute
280 <int> 7
91 <int> 1
284 <int> 1

0 <str> ACDSRECORD               # dxftype: data record
90 <int> 0                       # ??? flag
2 <str> AcDbDs::ID               # subsection name
280 <int> 10                     # subsection type 10 = handle to owner entity, 3DSOLID/REGION
320 <str> 339                    # handle
2 <str> ASM_Data                 # subsection name
280 <int> 15                     # subsection type 15 = binary data
94 <int> 1088                    # size of data
310 <binary encoded data>        # data
310 <binary encoded data>        # data
...

0 <str> ENDSEC
é    )Úannotations)ÚTYPE_CHECKINGÚIteratorÚIterableÚAnyÚOptionalN)Úislice)Ú
group_tagsÚTags)Údxftag)ÚDXFKeyErrorÚDXFStructureError)ÚDrawing)ÚAbstractTagWriterc                  óX   — e Zd Zej                  dd„«       Zej                  dd„«       Zy)Ú
AcDsEntityc                 ó   — y ©N© ©ÚselfÚ	tagwriters     ú7lib/python3.12/site-packages/ezdxf/sections/acdsdata.pyÚ
export_dxfzAcDsEntity.export_dxf[   ó   € àó    c                 ó   — y r   r   ©r   s    r   ÚdxftypezAcDsEntity.dxftype_   r   r   N©r   r   ©ÚreturnÚstr)Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodr   r   r   r   r   r   r   Z   s4   „ Ø×Ñòó ðð 	×Ñòó ñr   r   c                  ó�   — e Zd ZdZddd„Zedd„«       Zedd„«       Zdd„Zdd„Z	dd„Z
edd	„«       Zdd
„Zdd„Zdd„Zdd„Zdd„Zy)ÚAcDsDataSectionÚACDSDATANc                óx   — || _         g | _        t        «       | _        |�| j	                  t        |«      «       y y r   )ÚdocÚentitiesr   Úsection_infoÚ	load_tagsÚiter)r   r-   r.   s      r   Ú__init__zAcDsDataSection.__init__g   s5   € ØˆŒØ*,ˆŒÜ ›FˆÔØÐØ�N‰Nœ4 ›>Õ*ð  r   c                ó2   — t        | j                  «      dkD  S ©Nr   )Úlenr/   r   s    r   Úis_validzAcDsDataSection.is_validn   s   € ä�4×$Ñ$Ó%¨Ñ)Ð)r   c                ó:   — t        d„ | j                  D «       «      S )Nc              3  ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   ©Ú
isinstanceÚ
AcDsRecord©Ú.0Úentitys     r   Ú	<genexpr>z.AcDsDataSection.has_records.<locals>.<genexpr>t   s   è ø€ ð 
Ù9F¨vŒJ�vœz×*¹ùs   ‚)Úanyr.   r   s    r   Úhas_recordszAcDsDataSection.has_recordsr   s    € äñ 
Ø9=¿ºó
ó 
ð 	
r   c                ó    — t        |«      }|d   dk7  s|d   dk7  rt        d«      ‚|| _        |D ]  }| j                  t	        |«      «       Œ y )Nr   )r   ÚSECTIONé   )é   r+   z-Critical structure error in ACDSDATA section.)Únextr   r/   ÚappendÚAcDsData)r   r.   Úsection_headr>   s       r   r0   zAcDsDataSection.load_tagsx   s_   € Ü˜H“~ˆØ˜‰?˜nÒ,°¸Q±ð D
ò 1
ô $Ø?óð ð )ˆÔÛˆFØ�K‰Kœ Ó(Õ)ñ r   c                ó®   — t         j                  |j                  «       t        «      } ||j                  «      }| j
                  j                  |«       y r   )ÚACDSDATA_TYPESÚgetr   rH   Útagsr.   rG   )r   r>   ÚclsÚdatas       r   rG   zAcDsDataSection.append†   s;   € Ü× Ñ  §¡Ó!1´8Ó<ˆÙ�6—;‘;ÓˆØ�‰×Ñ˜TÕ"r   c                óÔ   — | j                   r| j                  sy |j                  | j                  «       | j                  D ]  }|j                  |«       Œ |j                  dd«       y )Nr   ÚENDSEC)r6   rA   Ú
write_tagsr/   r.   r   Ú
write_tag2)r   r   r>   s      r   r   zAcDsDataSection.export_dxf‹   sT   € Ø�}Š} D×$4Ò$4àØ×Ñ˜T×.Ñ.Ô/Ø—m”mˆFØ×Ñ˜iÕ(ð $à×Ñ˜Q Õ)r   c                ó(   — d„ | j                   D «       S )Nc              3  óB   K  — | ]  }t        |t        «      sŒ|–— Œ y ­wr   r9   r<   s     r   r?   z.AcDsDataSection.acdsrecords.<locals>.<genexpr>–   s   è ø€ ð 
Ù!.�v´*¸VÄZÕ2PŒF¡ùs   ‚˜)r.   r   s    r   ÚacdsrecordszAcDsDataSection.acdsrecords”   s   € ñ
Ø!%§¢ó
ð 	
r   c                ó^   — | j                  |«      }|�dj                  t        |«      «      S y)Nr   )Úfind_acis_recordÚjoinÚget_acis_data©r   ÚhandleÚ
asm_records      r   rZ   zAcDsDataSection.get_acis_dataš   s/   € Ø×*Ñ*¨6Ó2ˆ
ØÐ!Ø—8‘8œM¨*Ó5Ó6Ð6Ør   c                óh   — | j                  |«      }|�t        ||«       y | j                  ||«       y r   )rX   Úset_acis_dataÚnew_acis_data)r   r\   Úsab_datar]   s       r   r_   zAcDsDataSection.set_acis_data    s2   € Ø×*Ñ*¨6Ó2ˆ
ØÐ!Ü˜* hÕ/à×Ñ˜v xÕ0r   c                óN   — | j                   j                  t        ||«      «       y r   )r.   rG   Únew_acis_record)r   r\   ra   s      r   r`   zAcDsDataSection.new_acis_data§   s   € Ø�‰×Ñœ_¨V°XÓ>Õ?r   c                ób   — | j                  |«      }|�| j                  j                  |«       y y r   )rX   r.   Úremover[   s      r   Údel_acis_datazAcDsDataSection.del_acis_dataª   s/   € Ø×*Ñ*¨6Ó2ˆ
ØÐ!Ø�M‰M× Ñ  Õ,ð "r   c                ób   — | j                   D ]   }t        |«      sŒt        |«      |k(  sŒ|c S  y r   )rV   Úis_acis_dataÚacis_entity_handle)r   r\   Úrecords      r   rX   z AcDsDataSection.find_acis_record¯   s1   € Ø×&Ô&ˆFÜ˜FÕ#Ô(:¸6Ó(BÀfÓ(LØ’ð 'ð r   r   )r-   r   r.   zOptional[Iterable[Tags]])r"   Úbool)r.   zIterator[Tags]r"   ÚNone)r>   rH   r"   rl   ©r   r   r"   rl   )r"   zIterator[AcDsRecord])r\   r#   r"   Úbytes)r\   r#   ra   rn   r"   rl   )r"   rl   )r\   r#   r"   zOptional[AcDsRecord])r$   r%   r&   Únamer2   Úpropertyr6   rA   r0   rG   r   rV   rZ   r_   r`   rf   rX   r   r   r   r*   r*   d   sq   „ Ø€Dô+ð ò*ó ð*ð ò
ó ð
ó
*ó#ó
*ð ò
ó ð
ó
ó1ó@ó-ô
r   r*   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)rH   c                ó   — || _         y r   )rM   )r   rM   s     r   r2   zAcDsData.__init__·   s	   € Øˆ�	r   c                ó:   — |j                  | j                  «       y r   )rR   rM   r   s     r   r   zAcDsData.export_dxfº   s   € Ø×Ñ˜TŸY™YÕ'r   c                ó4   — | j                   d   j                  S r4   )rM   Úvaluer   s    r   r   zAcDsData.dxftype½   s   € Ø�y‰y˜‰|×!Ñ!Ð!r   N©rM   r   r    r!   )r$   r%   r&   r2   r   r   r   r   r   rH   rH   ¶   s   „ óó(ô"r   rH   c                  óB   — e Zd Zedd„«       Zedd„«       Zedd„«       Zy)ÚSectionc                ó    — | d   j                   S r4   ©ru   r   s    r   ro   zSection.nameÂ   ó   € à�A‰w�}‰}Ðr   c                ó    — | d   j                   S )NrD   rz   r   s    r   ÚtypezSection.typeÆ   r{   r   c                ó   — t        | dd  «      S )NrE   )r   r   s    r   rO   zSection.dataÊ   s   € ä�D˜˜�H‹~Ðr   Nr!   )r"   r   )r$   r%   r&   rp   ro   r}   rO   r   r   r   rx   rx   Á   s<   „ Øòó ðð òó ðð òó ñr   rx   c                  óf   — e Zd Zdd„Zdd„Zdd„Zefdd„Zdd„Zdd„Z	dd„Z
d„ Zdd	„Zdd
„Zdd„Zy)r;   c                óž   — |d   | _         |d   | _        t        t        |dd «      d¬«      D �cg c]  }t	        |«      ‘Œ c}| _        y c c}w )Nr   rD   rE   )Ú	splitcode)Ú_dxftypeÚflagsr
   r	   rx   Úsections)r   rM   Úgroups      r   r2   zAcDsRecord.__init__Ð   sR   € Ø˜Q™ˆŒØ˜!‘WˆŒ
ô $¤F¨4°°DÓ$9ÀQÕGó
áG�ô �E�NØGñ
ˆ�ùò 
s   ¯A
c                 ó   — y)NÚ
ACDSRECORDr   r   s    r   r   zAcDsRecord.dxftypeØ   s   € Ør   c                ó,   — | j                  |d ¬«      d uS )N)Údefault)Úget_section)r   ro   s     r   Úhas_sectionzAcDsRecord.has_sectionÛ   s   € Ø×Ñ ¨dÐÓ3¸4Ð?Ð?r   c                ót   — | j                   D ]  }|j                  |k(  sŒ|c S  |t        u rt        |«      ‚|S r   )r„   ro   r   )r   ro   r‰   Úsections       r   rŠ   zAcDsRecord.get_sectionÞ   s;   € Ø—}”}ˆGØ�|‰|˜tÓ#Ø’ð %ð ”kÑ!Ü˜dÓ#Ð#àˆNr   c                ód   — t        | j                  «      D ]  \  }}|j                  |k(  sŒ|c S  y©Néÿÿÿÿ)Ú	enumerater„   ro   )r   ro   Úir�   s       r   ÚindexzAcDsRecord.indexç   s/   € Ü# D§M¡MÖ2‰JˆAˆwØ�|‰|˜tÓ#Ø’ð 3ð r   c                óš   — | j                  |j                  «      }|dk(  r| j                  j                  |«       y || j                  |<   y r�   )r“   ro   r„   rG   )r   r�   r“   s      r   ÚreplacezAcDsRecord.replaceí   s;   € Ø—
‘
˜7Ÿ<™<Ó(ˆØ�BŠ;Ø�M‰M× Ñ  Õ)à#*ˆD�M‰M˜%Ò r   c                ó:   — | j                   j                  |«       y r   )r„   rG   )r   r�   s     r   rG   zAcDsRecord.appendô   s   € Ø�‰×Ñ˜WÕ%r   c                ó,   — t        | j                  «      S r   )r5   r„   r   s    r   Ú__len__zAcDsRecord.__len__÷   s   € Ü�4—=‘=Ó!Ð!r   c                ó    — | j                   |   S r   )r„   )r   Úitems     r   Ú__getitem__zAcDsRecord.__getitem__ú   s   € Ø�}‰}˜TÑ"Ð"r   c                ód   — |j                  t        | j                  | j                  g«      «       y r   )rR   r   r‚   rƒ   r   s     r   Ú_write_headerzAcDsRecord._write_headerý   s"   € Ø×ÑœT 4§=¡=°$·*±*Ð"=Ó>Õ?r   c                ój   — | j                  |«       | j                  D ]  }|j                  |«       Œ y r   )r�   r„   rR   )r   r   r�   s      r   r   zAcDsRecord.export_dxf   s,   € Ø×Ñ˜9Ô%Ø—}”}ˆGØ× Ñ  Õ)ñ %r   Nrv   r!   )ro   r#   r"   rk   )ro   r#   r‰   r   r"   rx   )ro   r#   r"   Úint)r�   rx   r"   rl   )r�   rx   )r"   rx   rm   )r$   r%   r&   r2   r   r‹   r   rŠ   r“   r•   rG   r˜   r›   r�   r   r   r   r   r;   r;   Ï   sA   „ ó
óó@ð 5@ô óó+ó&ò"ó#ó@ô*r   r;   c                ó¦   — 	 | j                  d«      }|D �cg c]  }|j                  dk(  sŒ|j                  ‘Œ  c}S c c}w # t        $ r g cY S w xY w)NÚASM_Dataé6  )rŠ   Úcoderu   r   )rj   Úasm_dataÚtags      r   rZ   rZ     sV   € ðBØ×%Ñ% jÓ1ˆñ &.ÓA¡X˜c°·±¸S³�—	“	 XÑAÐAùÒAøô ò ØŠ	ðús   ‚A —=¬=ÁAÁAc                ó$   — | j                  d«      S )Nr¡   )r‹   )rj   s    r   rh   rh     s   € Ø×Ñ˜jÓ)Ð)r   c                óh   — 	 | j                  d«      }|j                  dd«      S # t        $ r Y yw xY w)Nú
AcDbDs::IDÚ é@  )rŠ   r   Úget_first_value)rj   r�   s     r   ri   ri     s@   € ðØ×$Ñ$ \Ó2ˆð ×"Ñ" 3¨Ó+Ð+øô ò Ùðús   ‚% ¥	1°1c           	     ó  — d}t        |«      }t        t        dd«      t        dd«      t        d|«      g«      }d}||k  r,|j                  t        d||||z    «      «       ||z  }||k  rŒ,| j	                  t        |«      «       y )	Né   rE   r¡   é  é   é^   r   r¢   )r5   r   r   rG   r•   rx   )rj   rO   Ú
chunk_sizeÚsizerM   r“   s         r   r_   r_     sŽ   € Ø€JÜˆt‹9€DÜä�1�jÓ!Ü�3˜‹OÜ�2�tÓð	
ó€Dð €EØ
�$Š,Ø�‰”F˜3  U¨U°ZÑ-?Ð @ÓAÔBØ�Ñˆð �$‹,ð ‡N�N”7˜4“=Õ!r   c           
     ó¸   — t        t        dd«      t        dd«      t        dd«      t        dd«      t        d	| «      g«      }t        |«      }t        ||«       |S )
Nr   r‡   éZ   rD   rE   r¨   r®   é
   rª   )r   r   r;   r_   )r\   ra   rM   rj   s       r   rc   rc   ,  s\   € Üä�1�lÓ#Ü�2�q‹MÜ�1�lÓ#Ü�3˜‹OÜ�3˜Óð	
ó€Dô ˜Ó€FÜ�&˜(Ô#Ø€Mr   r‡   a#  0
SECTION
2
ACDSDATA
70
2
71
2
0
ACDSSCHEMA
90
0
1
AcDb_Thumbnail_Schema
2
AcDbDs::ID
280
10
91
8
2
Thumbnail_Data
280
15
91
0
101
ACDSRECORD
95
0
90
2
2
AcDbDs::TreatedAsObjectData
280
1
291
1
101
ACDSRECORD
95
0
90
3
2
AcDbDs::Legacy
280
1
291
1
101
ACDSRECORD
1
AcDbDs::ID
90
4
2
AcDs:Indexable
280
1
291
1
101
ACDSRECORD
1
AcDbDs::ID
90
5
2
AcDbDs::HandleAttribute
280
7
282
1
0
ACDSSCHEMA
90
1
1
AcDb3DSolid_ASM_Data
2
AcDbDs::ID
280
10
91
8
2
ASM_Data
280
15
91
0
101
ACDSRECORD
95
1
90
2
2
AcDbDs::TreatedAsObjectData
280
1
291
1
101
ACDSRECORD
95
1
90
3
2
AcDbDs::Legacy
280
1
291
1
101
ACDSRECORD
1
AcDbDs::ID
90
4
2
AcDs:Indexable
280
1
291
1
101
ACDSRECORD
1
AcDbDs::ID
90
5
2
AcDbDs::HandleAttribute
280
7
282
1
0
ACDSSCHEMA
90
2
1
AcDbDs::TreatedAsObjectDataSchema
2
AcDbDs::TreatedAsObjectData
280
1
91
0
0
ACDSSCHEMA
90
3
1
AcDbDs::LegacySchema
2
AcDbDs::Legacy
280
1
91
0
0
ACDSSCHEMA
90
4
1
AcDbDs::IndexedPropertySchema
2
AcDs:Indexable
280
1
91
0
0
ACDSSCHEMA
90
5
1
AcDbDs::HandleAttributeSchema
2
AcDbDs::HandleAttribute
280
7
91
1
284
1
c                óŽ   — | j                   dk\  r,t        | t        t        j                  t
        «      «      «      S t        | «      S )NÚAC1027)Ú
dxfversionr*   r
   r   Ú	from_textÚDEFAULT_SETUP)r-   s    r   Únew_acds_data_sectionr»     s4   € Ø
‡~�~˜Ò!Ü˜s¤J¬t¯~©~¼mÓ/LÓ$MÓNÐNä˜sÓ#Ð#r   )rj   r;   r"   zlist[bytes])rj   r;   r"   rk   )rj   r;   r"   r#   )rj   r;   rO   rn   r"   rl   )r\   r#   ra   rn   r"   r;   )r-   r   r"   r*   )&Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   r'   Ú	itertoolsr	   Úezdxf.lldxf.tagsr
   r   Úezdxf.lldxf.typesr   Úezdxf.lldxf.constr   r   Úezdxf.documentr   Úezdxf.lldxf.tagwriterr   ÚABCr   r*   rH   rx   r;   rZ   rh   ri   r_   rc   rK   rº   r»   r   r   r   Ú<module>rÆ      s§   ðñGõP #ß CÕ CÛ 
Ý ç -Ý $ß <áÝ&Ý7ô�—‘ô ÷Oñ Oôd"ˆzô "ôˆdô ô4*�ô 4*ónBó*ó,ó"ó"ð  �*ð€ð
~€ôD$r   