
    h'                    ^   S r SSKJr  SSKJrJrJrJrJr  SSK	r	SSK
Jr  SSKJrJr  SSKJr  SSKJrJr  \(       a  SS	KJr  SS
KJr   " S S\	R0                  5      r " S S5      r " S S\5      r " S S\5      r " S S\5      rSS jrSS jrSS jr S S jr!S!S jr"S\0r#Sr$S"S jr%g)#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                  d    \ rS rSr\R
                  SS j5       r\R
                  SS j5       rSrg)
AcDsEntityZ   c                    g N self	tagwriters     I/var/www/html/env/lib/python3.13/site-packages/ezdxf/sections/acdsdata.py
export_dxfAcDsEntity.export_dxf[           c                    g r   r   r   s    r   dxftypeAcDsEntity.dxftype_   r   r   r   Nr   r   returnstr)	__name__
__module____qualname____firstlineno__abcabstractmethodr   r!   __static_attributes__r   r   r   r   r   Z   s4      	 r   r   c                      \ rS rSrSrSSS j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5       rSS jrSS jrSS jrSS jrSS jrSrg)AcDsDataSectiond   ACDSDATANc                x    Xl         / U l        [        5       U l        Ub  U R	                  [        U5      5        g g r   )docentitiesr   section_info	load_tagsiter)r   r3   r4   s      r   __init__AcDsDataSection.__init__g   s3    *, FNN4>*  r   c                2    [        U R                  5      S:  $ Nr   )lenr5   r    s    r   is_validAcDsDataSection.is_validn   s    4$$%))r   c                :    [        S U R                   5       5      $ )Nc              3  B   #    U  H  n[        U[        5      v   M     g 7fr   
isinstance
AcDsRecord.0entitys     r   	<genexpr>.AcDsDataSection.has_records.<locals>.<genexpr>t   s      
9FvJvz**s   )anyr4   r    s    r   has_recordsAcDsDataSection.has_recordsr   s      
9=
 
 	
r   c                    [        U5      nUS   S:w  d	  US   S:w  a  [        S5      eX l        U H  nU R                  [	        U5      5        M     g )Nr   )r   SECTION   )   r1   z-Critical structure error in ACDSDATA section.)nextr   r5   appendAcDsData)r   r4   section_headrF   s       r   r6   AcDsDataSection.load_tagsx   s]    H~?n,Q D
 1
 $?  )FKK() r   c                    [         R                  UR                  5       [        5      nU" UR                  5      nU R
                  R                  U5        g r   )ACDSDATA_TYPESgetr!   rR   tagsr4   rQ   )r   rF   clsdatas       r   rQ   AcDsDataSection.append   s;      !18<6;;T"r   c                    U R                   (       a  U R                  (       d  g UR                  U R                  5        U R                   H  nUR                  U5        M     UR                  SS5        g )Nr   ENDSEC)r=   rJ   
write_tagsr5   r4   r   
write_tag2)r   r   rF   s      r   r   AcDsDataSection.export_dxf   sT    }}D$4$4T../mmFi( $Q)r   c                (    S U R                    5       $ )Nc              3  T   #    U  H  n[        U[        5      (       d  M  Uv   M      g 7fr   rA   rD   s     r   rG   .AcDsDataSection.acdsrecords.<locals>.<genexpr>   s      
!.v*VZ2PFFs   (	()r4   r    s    r   acdsrecordsAcDsDataSection.acdsrecords   s    
!%
 	
r   c                `    U R                  U5      nUb  SR                  [        U5      5      $ g)Nr   )find_acis_recordjoinget_acis_datar   handle
asm_records      r   ri   AcDsDataSection.get_acis_data   s/    **62
!88M*566r   c                f    U R                  U5      nUb  [        X25        g U R                  X5        g r   )rg   set_acis_datanew_acis_data)r   rk   sab_datarl   s       r   ro   AcDsDataSection.set_acis_data   s.    **62
!*/v0r   c                L    U R                   R                  [        X5      5        g r   )r4   rQ   new_acis_record)r   rk   rq   s      r   rp   AcDsDataSection.new_acis_data   s    _V>?r   c                d    U R                  U5      nUb  U R                  R                  U5        g g r   )rg   r4   removerj   s      r   del_acis_dataAcDsDataSection.del_acis_data   s/    **62
!MM  , "r   c                t    U R                    H(  n[        U5      (       d  M  [        U5      U:X  d  M&  Us  $    g r   )rd   is_acis_dataacis_entity_handle)r   rk   records      r   rg    AcDsDataSection.find_acis_record   s4    &&FF##(:6(Bf(L ' r   )r3   r4   r5   r   )r3   r   r4   zOptional[Iterable[Tags]])r%   bool)r4   zIterator[Tags]r%   None)rF   rR   r%   r   r   r   r%   r   )r%   zIterator[AcDsRecord])rk   r&   r%   bytes)rk   r&   rq   r   r%   r   )r%   r   )rk   r&   r%   zOptional[AcDsRecord])r'   r(   r)   r*   namer8   propertyr=   rJ   r6   rQ   r   rd   ri   ro   rp   rx   rg   r-   r   r   r   r/   r/   d   sq    D+ * * 
 

*#
* 
 

1@-
r   r/   c                  2    \ rS rSrSS jrSS jrS	S jrSrg)
rR      c                    Xl         g r   rX   )r   rX   s     r   r8   AcDsData.__init__   s    	r   c                :    UR                  U R                  5        g r   )r^   rX   r   s     r   r   AcDsData.export_dxf   s    TYY'r   c                4    U R                   S   R                  $ r;   )rX   valuer    s    r   r!   AcDsData.dxftype   s    yy|!!!r   r   NrX   r   r#   r$   )r'   r(   r)   r*   r8   r   r!   r-   r   r   r   rR   rR      s    ("r   rR   c                  P    \ rS rSr\SS j5       r\SS j5       r\SS j5       rSrg)	Section   c                     U S   R                   $ r;   r   r    s    r   r   Section.name       Aw}}r   c                     U S   R                   $ )NrN   r   r    s    r   typeSection.type   r   r   c                    [        U SS  5      $ )NrO   )r   r    s    r   rZ   Section.data   s    DH~r   r   Nr$   )r%   r   )	r'   r(   r)   r*   r   r   r   rZ   r-   r   r   r   r   r      s<         r   r   c                      \ rS rSrSS jrSS jrSS jr\4SS jjrSS jr	SS jr
SS jrS	 rSS
 jrSS jrSS jrSrg)rC      c                    US   U l         US   U l        [        [        USS 5      SS9 Vs/ s H  n[	        U5      PM     snU l        g s  snf )Nr   rN   rO   )	splitcode)_dxftypeflagsr
   r	   r   sections)r   rX   groups      r   r8   AcDsRecord.__init__   sR    Q!W
 $F4D$9QG
G ENG
 
s   A
c                    g)N
ACDSRECORDr   r    s    r   r!   AcDsRecord.dxftype   s    r   c                &    U R                  US S9S L$ )N)default)get_section)r   r   s     r   has_sectionAcDsRecord.has_section   s    d34??r   c                |    U R                    H  nUR                  U:X  d  M  Us  $    U[        L a  [        U5      eU$ r   )r   r   r   )r   r   r   sections       r   r   AcDsRecord.get_section   s;    }}G||t# % k!d##Nr   c                h    [        U R                  5       H  u  p#UR                  U:X  d  M  Us  $    gN)	enumerater   r   )r   r   ir   s       r   indexAcDsRecord.index   s-    #DMM2JA||t# 3 r   c                    U R                  UR                  5      nUS:X  a  U R                  R                  U5        g XR                  U'   g r   )r   r   r   rQ   )r   r   r   s      r   replaceAcDsRecord.replace   s9    

7<<(B;MM  )#*MM% r   c                :    U R                   R                  U5        g r   )r   rQ   )r   r   s     r   rQ   AcDsRecord.append   s    W%r   c                ,    [        U R                  5      $ r   )r<   r   r    s    r   __len__AcDsRecord.__len__   s    4==!!r   c                     U R                   U   $ r   )r   )r   items     r   __getitem__AcDsRecord.__getitem__   s    }}T""r   c                d    UR                  [        U R                  U R                  /5      5        g r   )r^   r   r   r   r   s     r   _write_headerAcDsRecord._write_header   s"    T4==$**"=>?r   c                n    U R                  U5        U R                   H  nUR                  U5        M     g r   )r   r   r^   )r   r   r   s      r   r   AcDsRecord.export_dxf   s,    9%}}G  ) %r   )r   r   r   Nr   r$   )r   r&   r%   r   )r   r&   r   r   r%   r   )r   r&   r%   int)r   r   r%   r   )r   r   )r%   r   r   )r'   r(   r)   r*   r8   r!   r   r   r   r   r   rQ   r   r   r   r   r-   r   r   r   rC   rC      sA    
@ 5@ +&"#@*r   rC   c                     U R                  S5      nU Vs/ s H   o"R                  S:X  d  M  UR                  PM"     sn$ s  snf ! [         a    / s $ f = f)NASM_Data6  )r   coder   r   )r}   asm_datatags      r   ri   ri     sV    B%%j1 &.AXcS			XAAA  	s   A AAAAc                $    U R                  S5      $ )Nr   )r   )r}   s    r   r{   r{     s    j))r   c                j     U R                  S5      nUR                  SS5      $ ! [         a     gf = f)N
AcDbDs::ID @  )r   r   get_first_value)r}   r   s     r   r|   r|     s@    $$\2 ""3++  s   % 
22c           	        Sn[        U5      n[        [        SS5      [        SS5      [        SU5      /5      nSnXS:  a*  UR                  [        SXXR-    5      5        XR-  nXS:  a  M*  U R	                  [        U5      5        g )	N   rO   r        ^   r   r   )r<   r   r   rQ   r   r   )r}   rZ   
chunk_sizesizerX   r   s         r   ro   ro     s    Jt9D1j!3O2t	
D E
,F3U-? @AB , NN74=!r   c           
         [        [        SS5      [        SS5      [        SS5      [        SS5      [        S	U 5      /5      n[        U5      n[        X15        U$ )
Nr   r   r   rN   rO   r   r   
   r   )r   r   rC   ro   )rk   rq   rX   r}   s       r   rt   rt   ,  sZ    1l#2qM1l#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                    U R                   S:  a-  [        U [        [        R                  " [
        5      5      5      $ [        U 5      $ )NAC1027)
dxfversionr/   r
   r   	from_textDEFAULT_SETUP)r3   s    r   new_acds_data_sectionr     s4    
~~!sJt~~m/L$MNNs##r   )r}   rC   r%   zlist[bytes])r}   rC   r%   r   )r}   rC   r%   r&   )r}   rC   rZ   r   r%   r   )rk   r&   rq   r   r%   rC   )r3   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/   rR   r   rC   ri   r{   r|   ro   rt   rV   r   r   r   r   r   <module>r      s   GP # C C 
  - $ <&7 O Od"z "d 4* 4*nB*,""  *
~D$r   