
    'j "                    ,   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZ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  d dl!m"Z"m#Z# erd dl$m%Z% d dl&m'Z' d dl(m)Z) ddgZ* ed e
ddej+                   e
dd dej,        e          d          Z- ee-          Z. ed e
dej/                   e
dded           e
dd            e
d ej0        e!           e
dd          d"          Z1 ee1          Z2 ee.e2          Z3 ej4                    Z5 ej4                    Z6 ej4                    Z7 ej4                    Z8e  G d# de                      Z9 ed$i           Z:e  G d% de                      Z;d&S )'    )annotations)TYPE_CHECKINGOptional)Self)	validator)DXFAttrDXFAttributesDefSubclassXTypeRETURN_DEFAULTgroup_code_mappingmerge_group_code_mappings)SUBCLASS_MARKERDXF12DXF2000MODEL_SPACE_R12PAPER_SPACE_R12MODEL_SPACE_R2000PAPER_SPACE_R2000)NULLVEC   )
base_classSubclassProcessor	DXFEntity)register_entity)Auditor
AuditError)DXFNamespace)AbstractTagWriter)xrefBlockEndBlk
AcDbEntity   0)defaultr   C   T)r&   optionalr   fixer)layer
paperspaceAcDbBlockBegin       )r&   
dxfversionr(   F   )r&   
   )xtyper&   )namedescriptionflags
base_point	xref_pathc                       e Zd ZdZdZ eeee          Z	dZ
dZdZdZdZdZd	Z	 d!d" fdZd# fdZed$d            Zed$d            Zed$d            Zed$d            Zd%dZd& fd Z xZS )'r!   zDXF BLOCK entityBLOCKr   r-   r.   r$          @   N	processorOptional[SubclassProcessor]returnr   c                B   t                                          |          }||S |                    |t                     |j        rV|j        d|_        |j                                        }|t          k    rt          |_        n|t          k    rt          |_        |S )!Loading interface. (internal API)Nr/   )superload_dxf_attribssimple_dxfattribs_loadermerged_block_begin_group_codesr12r4   lowerMODEL_SPACE_R12_LOWERr   PAPER_SPACE_R12_LOWERr   )selfr>   dxfr4   	__class__s       N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/block.pyrD   zBlock.load_dxf_attribsy   s     gg&&y11J**30NOOO= 	-x8>>##D,,,,...,
    	tagwriterr   Nonec                J   t                                          |           |j        t          k    r%|                    t
          t          j                   | j        	                    d          r|                    dd           | j        
                    |d           |j        t          k    r%|                    t
          t          j                   | j        j        }|j        t          k    rI|                                t          k    rt          }n$|                                t          k    rt           }|                    d|           | j        
                    |ddg           |                    d|           | j        
                    |d	d
g           dS )(Export entity specific data as DXF tags.r+   r'   r   r*   r-   r6   r7      r8   r5   N)rC   export_entityr0   r   
write_tag2r   acdb_entityr4   rL   hasattrexport_dxf_attribsacdb_block_beginrH   MODEL_SPACE_R2000_LOWERr   PAPER_SPACE_R2000_LOWERr   )rK   rP   r4   rM   s      rN   rU   zBlock.export_entity   sg   i(((%''  +2BCCC8L)) 	(  Q'''##Iw777%''  2B2GHHHx}5((zz||666&!888&Q%%%##I/FGGGQ%%%##I]/KLLLLLrO   boolc                    | j         j                                        }|                    d          p|                    d          S )zReturns ``True`` if this is a :class:`~ezdxf.layouts.Modelspace` or
        :class:`~ezdxf.layouts.Paperspace` block definition.
        z*model_spacez*paper_space)rL   r4   rH   
startswith)rK   r4   s     rN   is_layout_blockzBlock.is_layout_block   s<    
 x}""$$~..Q$//.2Q2QQrO   c                @    |                      t          j                  S )zReturns ``True`` if this is an anonymous block generated by
        hatching, associative dimensioning, other internal operations, or an
        application.

        )get_flag_stater!   	ANONYMOUSrK   s    rN   is_anonymouszBlock.is_anonymous   s     ""5?333rO   c                @    |                      t          j                  S )z8Returns ``True`` if bock is an external referenced file.)rb   r!   XREFrd   s    rN   is_xrefzBlock.is_xref   s     ""5:...rO   c                @    |                      t          j                  S )z@Returns ``True`` if bock is an external referenced overlay file.)rb   r!   XREF_OVERLAYrd   s    rN   is_xref_overlayzBlock.is_xref_overlay   s     ""5#5666rO   auditorr   c                   | j                             d          }|d S |j                            |          }|d S |j                             dd                                          }| j                             dd                                          }||k    rH|                    t
          j        t          |            d| dt          |           d| d           d S d S )Nownerr4   r/   z name 'z' and z
' mismatch)rL   getentitydbupper	add_errorr   BLOCK_NAME_MISMATCHstr)rK   rl   owner_handlern   
owner_name
block_names         rN   auditzBlock.audit   s    x||G,,F $$\22=FY]]62..4466
X\\&"--3355
##.t99``Z``s5zz``*```     $#rO   cloner   mappingxref.ResourceMapperc                    t          |t                    sJ t                                          ||           |                    | j        j                  |j        _        dS )z3Translate resources from self to the copied entity.N)
isinstancer!   rC   map_resourcesget_block_namerL   r4   )rK   ry   rz   rM   s      rN   r~   zBlock.map_resources   sR    %'''''eW--- //>>	rO   Nr>   r?   r@   r   rP   r   r@   rQ   )r@   r]   )rl   r   )ry   r   rz   r{   r@   rQ   )__name__
__module____qualname____doc__DXFTYPEr	   r   rW   rZ   
DXFATTRIBSrc   NON_CONSTANT_ATTRIBUTESrg   rj   EXTERNALRESOLVED
REFERENCEDrD   rU   propertyr`   re   rh   rk   rx   r~   __classcell__rM   s   @rN   r!   r!   Y   sr       Gz;8HIIJ
 I
   D L H H J 8<      $M M M M M M2 R R R XR 4 4 4 X4 / / / X/ 7 7 7 X7   ? ? ? ? ? ? ? ? ? ?rO   AcDbBlockEndc                  R     e Zd ZdZdZ eeee          Z		 dd fdZ
d fdZ xZS )r"   zDXF ENDBLK entityENDBLKNr>   r?   r@   r   c                    t                                          |          }|r|                    |t                     |S )rB   )rC   rD   rE   acdb_entity_group_codes)rK   r>   rL   rM   s      rN   rD   zEndBlk.load_dxf_attribs   sA     gg&&y11 	M..s4KLLL
rO   rP   r   rQ   c                   t                                          |           |j        t          k    r%|                    t
          t          j                   | j        	                    d          r|                    dd           | j        
                    |d           |j        t          k    r'|                    t
          t          j                   dS dS )rS   r+   r'   r   r*   N)rC   rU   r0   r   rV   r   rW   r4   rL   rX   rY   acdb_block_end)rK   rP   rM   s     rN   rU   zEndBlk.export_entity   s    i(((%''  +2BCCC8L)) 	(  Q'''##Iw777%''  .2EFFFFF ('rO   r   r   r   )r   r   r   r   r   r	   r   rW   r   r   rD   rU   r   r   s   @rN   r"   r"      s        Gz;GGJ 8<      
G 
G 
G 
G 
G 
G 
G 
G 
G 
GrO   N)<
__future__r   typingr   r   typing_extensionsr   ezdxf.lldxfr   ezdxf.lldxf.attributesr   r	   r
   r   r   r   r   ezdxf.lldxf.constr   r   r   r   r   r   r   
ezdxf.mathr   	dxfentityr   r   r   factoryr   ezdxf.auditr   r   ezdxf.entitiesr   ezdxf.lldxf.tagwriterr   ezdxfr    __all__is_valid_layer_nameis_integer_boolrW   r   is_valid_block_name	any_pointrZ   acdb_block_begin_group_codesrF   rH   r[   rI   r\   rJ   r!   r   r"    rO   rN   <module>r      s   # " " " " " * * * * * * * * " " " " " " ! ! ! ! ! !                                         ? ? ? ? ? ? ? ? ? ? $ $ $ $ $ $ + + + + + + + + ++++++777777H
k C93PQQQg/ 
 
 

 
  -,[99 ;Y%BCCC wq"4PPP Q'''gbIIIWQ+++)   2  212BCC !:!:9" "  2+133 --// 1+133 --//  x? x? x? x? x?I x? x? x?v ^R00 G G G G GY G G G G GrO   