
    'j                        d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZ ddlmZ ddl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 ej         G d de                      Z	 dddZdS )    )annotations)TYPE_CHECKINGOptionalIterator)const)Tags)EntityQuery   )SubclassProcessor)
DXFGraphic)factory)default_copyCopyNotSupported)AbstractTagWriter)DXFNamespace)
BaseLayoutc                       e Zd ZdZdZej        Zd fdZe	fdZ
	 dd fdZddZd fdZd fdZddZddZdddZ xZS )ACADProxyEntityz1READ ONLY ACAD_PROXY_ENTITY CLASS! DO NOT MODIFY!ACAD_PROXY_ENTITYreturnNonec                V    t                                                       d | _        d S N)super__init__acdb_proxy_entity)self	__class__s    Z/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/acad_proxy_entity.pyr   zACADProxyEntity.__init__5   s'    15    c                L    t          d|                                  d          )NzCopying of z not supported.)r   dxftype)r   copy_strategys     r   copyzACADProxyEntity.copy9   s$    LT\\^^LLLMMMr    N	processorOptional[SubclassProcessor]r   c                    t                                          |          }|r.|                    d          | _        |                                  |S )N   )r   load_dxf_attribssubclass_by_indexr   load_proxy_graphic)r   r%   dxfr   s      r   r)   z ACADProxyEntity.load_dxf_attribs<   sQ     gg&&y11 	&%.%@%@%C%CD"##%%%
r    c                f    | j         d S dD ]$}t          | j         |d          }|r
|| _         d S %d S )N)\      6  )r   load_proxy_dataproxy_graphic)r   length_coder2   s      r   r+   z"ACADProxyEntity.load_proxy_graphicE   sZ    !)F$ 	 	K+D,BKQTUUM %2"	 	r    	tagwriterr   c                t    | j         }d | _         t                                          |           || _         d S r   )r2   r   
export_dxf)r   r4   preserve_proxy_graphicr   s      r   r6   zACADProxyEntity.export_dxfN   s<     "&!3!9%%%3r    c                    t                                          |           | j        |                    | j                   dS dS )z7Export entity specific data as DXF tags. (internal API)N)r   export_entityr   
write_tags)r   r4   r   s     r   r9   zACADProxyEntity.export_entityV   sK     	i(((!-  !788888 .-r    Iterator[DXFGraphic]c              #     K   ddl m} | j        rE || j        | j                                                  D ]}|                    |            |V  dS dS )z0Implements the SupportsVirtualEntities protocol.r   )ProxyGraphic)docN)ezdxf.proxygraphicr=   r2   r>   virtual_entitiesset_source_of_copy)r   r=   es      r   __virtual_entities__z$ACADProxyEntity.__virtual_entities__^   s      333333 	!\$"4$(CCCTTVV  $$T***	 	 r    c                *    |                                  S )z+Yields proxy graphic as "virtual" entities.)rC   )r   s    r   r@   z ACADProxyEntity.virtual_entitiesg   s    ((***r    target_layoutOptional[BaseLayout]r	   c                   |*|                                  }|t          j        d          t          |                                           }|D ]}|                    |           |                                  t          |          S )a  Explodes the proxy graphic for the ACAD_PROXY_ENTITY into the target layout,
        if target layout is ``None``, the layout of the ACAD_PROXY_ENTITY will be used.
        This method destroys the source ACAD_PROXY_ENTITY entity.

        Args:
            target_layout: target layout for exploded entities, ``None`` for
                same layout as the source ACAD_PROXY_ENTITY.

        Returns:
            :class:`~ezdxf.query.EntityQuery` container referencing all exploded
            DXF entities.

        NzBACAD_PROXY_ENTITY without layout assignment, specify target layout)
get_layoutr   DXFStructureErrorlistrC   
add_entitydestroyr	   )r   rE   entitiesrB   s       r   explodezACADProxyEntity.explodek   s       OO--M$-X   &*$*C*C*E*E%F%F 	( 	(A$$Q''''8$$$r    )r   r   r   )r%   r&   r   r   )r4   r   r   r   )r   r;   )rE   rF   r   r	   )__name__
__module____qualname____doc__DXFTYPEr   DXF2000MIN_DXF_VERSION_FOR_EXPORTr   r   r$   r)   r+   r6   r9   rC   r@   rN   __classcell__)r   s   @r   r   r   .   s&       ;;!G!&6 6 6 6 6 6 ". N N N N 8<         4 4 4 4 4 49 9 9 9 9 9   + + + +% % % % % % % % %r    r   r0   tagsr   r3   int	data_coder   Optional[bytes]c                    	 |                      |          }n# t          j        $ r Y d S w xY wg }| |dz   d          D ]!\  }}||k    r|                    |           ! d                    |          S )Nr
   r    )	tag_indexr   DXFValueErrorappendjoin)rW   r3   rY   indexbinary_datacodevalues          r   r1   r1      s    {++   ttKEAIKK(  e9u%%%%88K   s    ++N)r0   )rW   r   r3   rX   rY   rX   r   rZ   )
__future__r   typingr   r   r   ezdxf.lldxfr   ezdxf.lldxf.tagsr   ezdxf.queryr	   	dxfentityr   dxfgfxr    r   r$   r   r   ezdxf.lldxf.tagwriterr   ezdxf.entitiesr   ezdxf.layoutsr   register_entityr   r1    r    r   <module>rq      sd   # " " " " " 4 4 4 4 4 4 4 4 4 4       ! ! ! ! ! ! # # # # # # ( ( ( ( ( (             0 0 0 0 0 0 0 0 )777777++++++((((((< 	T% T% T% T% T%j T% T% T%p 47! ! ! ! ! ! !r    