
    'j              
          d dl mZ d dlmZmZmZmZ d dlZd dlm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZ erd dlmZ d dlmZmZ d d	lmZ  ej        d
          Zdddddddddd	Z G d d          Z dS )    )annotations)TYPE_CHECKINGIterableSequenceOptionalN)DXFStructureErrorDXF12   )
TableViewportTableTextstyleTable
LayerTableLinetypeTable
AppIDTable	ViewTableBlockRecordTableDimStyleTableUCSTable)Drawing)	DXFEntityDXFTagStorage)AbstractTagWriterezdxflayers	linetypesappids	dimstylesstylesucsviews	viewportsblock_records)	LAYERLTYPEAPPIDDIMSTYLESTYLEUCSVIEWVPORTBLOCK_RECORDc                  F    e Zd ZdddZdd	ZddZddZddZddZd Z	dS )TablesSectionNdocr   entitiesOptional[list[DXFEntity]]c                   |J || _         t                      | _        t                      | _        t                      | _        t                      | _        t                      | _
        t                      | _        t                      | _        t                      | _        t#                      | _        ||                     |           |                                  d S N)r.   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r!   r   r"   _load_reset_not_loaded_tables)selfr.   r/   s      O/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/sections/tables.py__init__zTablesSection.__init__)   s     ll& ll&$&&::[[
&-//JJx   %%'''''    returnSequence[Table]c           	     r    | j         | j        | j        | j        | j        | j        | j        | j        | j        f	S r2   )	r   r   r   r   r   r   r    r!   r"   )r5   s    r6   tableszTablesSection.tables;   s:    KNKNKHJN

 
	
r8   list[DXFEntity]Nonec                   |d         }|                                 dk    s|j        d         dk    rt          d          |d= g }d }|D ]}|                                 dk    rSt          |          r4t                              d| d           |                     ||           |j        j        }|g}m|                                 d	k    r|                     ||           g }|	                    |           t          |          rEt                              d

                    |                     |                     ||           d S d S )Nr   SECTIONr
   )   TABLESz+Critical structure error in TABLES section.TABLEz'Ignore missing ENDTAB entity in table "z".ENDTABz+Ignore missing ENDTAB entity in table "{}".)dxftype
base_classr   lenloggerdebug_load_tabledxfnameappendformat)r5   r/   section_headtable_records
table_nameentitys         r6   r3   zTablesSection._loadH   s   (0!!Y..,2I3
3 3 $=   QK)+
 	- 	-F~~7**}%% @LLP*PPP   $$Z???#Z_
!'!!X--  ];;;  $$V,,,,} 	8LL=DDZPP   Z77777	8 	8r8   rL   strtable_entitiesIterable[DXFEntity]c                    t          | t          |                   }t          |t                    r*|                    | j        t          |                     dS dS )z
        Load table from tags.

        Args:
            name: table name e.g. VPORT
            table_entities: iterable of table records

        N)getattr
TABLENAMES
isinstancer   loadr.   iter)r5   rL   rT   tables       r6   rJ   zTablesSection._load_tablem   sX     j.//eU## 	7JJtxn!5!566666	7 	7r8   c                    | j         j        }|                                 D ]R}|j         I|                                }|                    | j         |           |                    |j                   Sd S r2   )r.   entitydbr<   next_handleresetaddhead)r5   r^   r\   handles       r6   r4   z&TablesSection._reset_not_loaded_tables|   sq    8$[[]] 	) 	)Ey !--//DHf---UZ(((		) 	)r8   	tagwriterr   c                T   |                     d           |j        }| j                            |           | j                            |           | j                            |           | j                            |           | j                            |           | j                            |           | j	                            |           | j
                            |           |t          k    r| j                            |           |                    dd           d S )Nz  0
SECTION
  2
TABLES
r   ENDSEC)	write_str
dxfversionr!   
export_dxfr   r   r   r    r   r   r   r	   r"   
write_tag2)r5   rd   versions      r6   ri   zTablesSection.export_dxf   s   9:::&!!),,,!!),,,y)))y)))
i(((I&&&y)))!!),,,U??)))444Q)))))r8   c                    |                                  D ]5}| j        j                                        }|                    |           6d S r2   )r<   r.   r^   r_   
set_handle)r5   r\   rc   s      r6   create_table_handlesz"TablesSection.create_table_handles   sR     [[]] 	% 	%EX&2244FV$$$$	% 	%r8   r2   )r.   r   r/   r0   )r9   r:   )r/   r=   r9   r>   )rL   rS   rT   rU   r9   r>   )r9   r>   )rd   r   r9   r>   )
__name__
__module____qualname__r7   r<   r3   rJ   r4   ri   rn    r8   r6   r-   r-   (   s        ( ( ( ( ($
 
 
 
#8 #8 #8 #8J7 7 7 7) ) ) )* * * *% % % % %r8   r-   )!
__future__r   typingr   r   r   r   loggingezdxf.lldxf.constr   r	   r\   r   r   r   r   r   r   r   r   r   r   ezdxf.documentr   ezdxf.entitiesr   r   ezdxf.lldxf.tagwriterr   	getLoggerrH   rX   r-   rr   r8   r6   <module>r{      s   # " " " " " > > > > > > > > > > > >  6 6 6 6 6 6 6 6                         8&&&&&&77777777777777		7	#	# #
 

p% p% p% p% p% p% p% p% p% p%r8   