
    'j                        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
 g dZi Zdad Zd	 Zd
 Z	 dddZd dZd!d"dZd#dZd$dZd%dZd&dZdS )'    )annotations)TYPE_CHECKINGOptional)Drawing)	DXFEntity)ExtendedTags)	register_entityENTITY_CLASSESreplace_entitynewclsis_boundcreate_db_entryloadbindNc                
    | a | S N)DEFAULT_CLASS)r   s    P/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/factory.pyset_default_classr      s    MJ    c                (    | j         }| t          |<   | S r   )DXFTYPEr
   r   names     r   r   r   #   s    ;DN4Jr   c                `    | j         }|t          v rt          d| d          | t          |<   | S )Nz!Double registration for DXF type .)r   r
   	TypeErrorr   s     r   r	   r	   )   s=    ;D~CDCCCDDDN4Jr   dxftypestrdocOptional[Drawing]returnr   c                    t          |                               dd||          }t          |d          r|                                n|S )zCCreate a new entity, does not require an instantiated DXF document.N)handleowner
dxfattribsr!   cast)r   r   hasattrr(   r   r'   r!   entitys       r   r   r   1   sS     \\	   F $FF33?6;;===?r   r   c                H    t          | |          }t          ||           |S )N)r   r'   )r   r   r*   s       r   r   r   >   s)    Z888FMr   tagsr   c                    t          |                                                               | |          }t          |d          r|                                n|S )Nr(   )r   r   r   r)   r(   )r-   r!   r+   s      r   r   r   D   sH      %%dC00F#FF33?6;;===?r   c                B    t                               | t                    S )z'Returns registered class for `dxftype`.)r
   getr   )r   s    r   r   r   I   s     g}555r   r+   Nonec                   | j         s
J d            |j        
J d            || _        |j                            |            |j        s| j        n| j        }|j        r`|                    | j        j	                   |j
        }t          ||          s*t          ||           |j                            |           |                                  dS dS )zBind `entity` to the DXF document `doc`.

    The bind process stores the DXF `entity` in the entity database of the DXF
    document.

    zCan not bind destroyed entity.NMissing entity database.)is_aliveentitydbr!   add
is_loadingextension_dicthas_valid_dictionaryupdate_ownerdxfr%   
dictionaryr   r   objects
add_objectpost_bind_hook)r+   r!   xdictr<   s       r   r   r   O   s     ?<<<<<?<##%?###FJLV > 
  ,)E) 7""6:#4555"-

C00 7S)))K**:666
  
 r   c                R   | j         r| j        s| j        }| j        j        A	 |j                            |           }|                    |            n# t          $ r Y nw xY wt          | dd          }|r |d            |j
                            |            d| _        dS dS dS )zUnbind `entity` from document and layout, but does not destroy the
    entity.

    Turns `entity` into a virtual entity: no handle, no owner, no document.
    Nprocess_sub_entitiesc                     t          |           S r   )unbind)es    r   <lambda>zunbind.<locals>.<lambda>|   s    6!99 r   )r4   
is_virtualr!   r;   r&   layoutsget_layout_for_entityunlink_entityKeyErrorgetattrr5   discard)r+   r!   layoutrB   s       r   rD   rD   j   s      v0 j:'-::6BB $$V,,,,    
  'v/EtLL 	6  !4!4555V$$$


   s   A 
A A boolc                    | j         sdS | j        s	| j        |urdS |j        s
J d            | j        j        |j        v S )z;Returns ``True`` if `entity`is bound to DXF document `doc`.Fr3   )r4   rG   r!   r5   r;   r%   )r+   r!   s     r   r   r      sU    ? u FJc11u<33333<:,,r   )NN)r   r    r!   r"   r#   r   )r!   r   r#   r   r   )r-   r   r!   r"   r#   r   )r   r    r#   r   )r+   r   r!   r   r#   r1   )r+   r   )r+   r   r!   r   r#   rO   )
__future__r   typingr   r   ezdxf.documentr   ezdxf.entitiesr   ezdxf.lldxf.extendedtagsr   __all__r
   r   r   r   r	   r   r   r   r   r   rD   r    r   r   <module>rX      si   # " " " " " * * * * * * * * 6&&&&&&((((((555555
 
 
        =A
@ 
@ 
@ 
@ 
@   @ @ @ @ @
6 6 6 6       6   0- - - - - -r   