
    'j6                       d dl mZ d dlmZmZ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 d dlmZ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 d
dlm Z m!Z!m"Z" d
dl#m$Z$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/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 g dZ7 ed ed           edej8        e           edd
e
j9        e           edd
e
j9        e           edd
e
j9        e           edd            ed ej8        ed!e
j:        e"           ed#d           ed$d% e
j;        d&d'           e
j<        d&d'                     ed(d  e
j;        d d)           e
j<        d d)                    d*
          Z= ee=          Z> G d+ d,e$          Z?e) G d- d.e?                      Z@e) G d/ d0e?                      ZAe) G d1 d2e?                      ZBe) G d3 d4e?                      ZC ed5 ed
           ed6          d7          ZD eeD          ZE G d8 d9e'          ZFe) G d: d;eF                      ZGe) G d< d=eF                      ZHe) G d> d?eF                      ZId@S )A    )annotations)TYPE_CHECKINGUnionIterableOptional)Self)	validator)DXFAttrDXFAttributesDefSubclassXTypeRETURN_DEFAULTgroup_code_mapping)SUBCLASS_MARKERDXF2000DXFTypeError)const)Tags)NULLVECZ_AXISUVecMatrix44Vec3   )
base_classSubclassProcessor	DXFEntity)
DXFGraphicacdb_entity)	DXFObject)register_entity)default_copy)InsertTransformationErrorInsertCoordinateSystem)Drawing)DXFNamespace)AbstractTagWriter)xref)PdfUnderlayDwfUnderlayDgnUnderlayPdfDefinitionDgnDefinitionDwfDefinitionUnderlayUnderlayDefinitionAcDbUnderlayReferenceiT  
   )xtypedefault)   )r4   r	   fixer*   +   2   )r4      T)r3   r4   optionalr	   r6   i  i  d      e   i  Q   
underlay_def_handleinsertscale_xscale_yscale_zrotation	extrusionflagscontrastfadec                  :    e Zd ZdZ eeee          Ze	Z
d? fdZefd@dZ	 dAdB fdZdCdZdD fdZd ZdE fdZdFdZdG fdZdH fdZdId!ZdJd#ZdKd%Zed&             Zej        dLd)            ZedMd+            Zej        dNd-            ZedMd.            Zej        dNd/            ZedMd0            Zej        dNd1            ZedMd2            Zej        dOd3            ZedPd5            Z e j        dQd8            Z dLd9Z!d?d:Z"d? fd;Z#dRd>Z$ xZ%S )Sr/   zVirtual UNDERLAY entity.returnNonec                d    t                                                       g | _        d | _        d S N)super__init___boundary_path_underlay_defself	__class__s    Q/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/underlay.pyrQ   zUnderlay.__init__t   s/    *,;?    entityr   c                ~    t          |t                    sJ t          | j                  |_        | j        |_        d S rO   )
isinstancer/   listrR   rS   )rU   rY   copy_strategys      rW   	copy_datazUnderlay.copy_datay   s<    &(+++++ $T%8 9 9#1rX   N	processorOptional[SubclassProcessor]r&   c                   t                                          |          }|r|                    d          }|rst          |                     |                    }|                    |t          |           t          | j                  dk     r|| _	        | 
                                 n%t          j        d| j         d|j         d          |S )N   subclassz,missing 'AcDbUnderlayReference' subclass in z(#))rP   load_dxf_attribssubclass_by_indexr   load_boundary_pathfast_load_dxfattribsacdb_underlay_group_codeslenboundary_pathdxfreset_boundary_pathr   DXFStructureErrorDXFTYPEhandle)rU   r_   rm   tagsrV   s       rW   rf   zUnderlay.load_dxf_attribs~   s     gg&&y11 	..q11D D33D99::..2T /    t)**Q.."DH,,...-5|5 5'*z5 5 5   
rX   rr   r   r   c              #  z   K   g }|D ],}|j         dk    r|                    |j                   (|V  -|| _        d S )N   )codeappendvaluerR   )rU   rr   pathtags       rW   rh   zUnderlay.load_boundary_path   sU       	 	Cx2~~CI&&&&				"rX   docr%   c                    t                                          |           |j        }|                    | j                            dd                     | _        d S )NrA   )rP   post_load_hookentitydbgetrm   rS   )rU   rz   dbrV   s      rW   r|   zUnderlay.post_load_hook   sM    s###\VVDHLL1F$M$MNNrX   c                    t          | j        j        t                    sJ | j        }t          |t
                    r/| j        |j        u r#|                    | j        j                   d S d S d S rO   )r[   rm   rq   strrS   r0   rz   append_reactor_handlerU   underlay_defs     rW   post_bind_hookzUnderlay.post_bind_hook   sx    $(/3/////)|%788	@L,,,..tx?????		@ 	@,,rX   	tagwriterr'   c                    t                                          |           |                    t          t          j                   | j                            |g d           |                     |           dS )(Export entity specific data as DXF tags.r@   N)	rP   export_entity
write_tag2r   acdb_underlaynamerm   export_dxf_attribsexport_boundary_pathrU   r   rV   s     rW   r   zUnderlay.export_entity   s|    i(((_m.@AAA##  	
 	
 	
 	!!),,,,,rX   c                V    | j         D ] }|                    d|d d                    !d S )Nrt   rb   )rl   write_vertex)rU   r   vertexs      rW   r   zUnderlay.export_boundary_path   s?    ( 	3 	3F""2vbqbz2222	3 	3rX   registryxref.Registryc                    t                                          |           t          | j        t                    r&|                    | j        j        j                   d S d S rO   )rP   register_resourcesr[   rS   r0   
add_handlerm   rq   )rU   r   rV   s     rW   r   zUnderlay.register_resources   s^    ""8,,,d(*<== 	? 2 6 =>>>>>	? 	?rX   clonemappingxref.ResourceMapperc                   t          |t                    sJ t                                          ||           |                     ||          }||_        |j        j        |j        _        |	                    |j        j                   d S rO   )
r[   r/   rP   map_resourcesmap_underlay_defrS   rm   rq   rA   r   )rU   r   r   underlay_def_copyrV   s       rW   r   zUnderlay.map_resources   s    %*****eW--- 11%AA/(9(=(D	%//	0@AAAAArX   r0   c                   | j         }t          |t                    sJ |                    |j        j                  }t          |t                    sJ |j        }|J |j                            |j	                  
                    |          r|S |j                            fd          }                    ||           |S )Nc                    | vS rO    )kunderlay_dicts    rW   <lambda>z+Underlay.map_underlay_def.<locals>.<lambda>   s    a}6L rX   )rS   r[   r0   get_reference_of_copyrm   rq   rz   rootdictget_required_dictacad_dict_namefind_keyobjectsnext_underlay_keytake_ownership)rU   r   r   r   r   rz   keyr   s          @rW   r   zUnderlay.map_underlay_def   s     ),(:;;;;;#99,:J:QRR+-?@@@@@i66|7RSS!!"344 	%$$ k++,L,L,L,LMM$$S*;<<<  rX   r   c                ~    || _         |j        j        | j        _        |                    | j        j                   d S rO   )rS   rm   rq   rA   r   r   s     rW   set_underlay_defzUnderlay.set_underlay_def   s8    )'3'7'>$**48?;;;;;rX   Optional[UnderlayDefinition]c                    | j         S rO   )rS   rU   s    rW   get_underlay_defzUnderlay.get_underlay_def   s    !!rX   c                    | j         S rO   )rR   r   s    rW   rl   zUnderlay.boundary_path   s    ""rX   verticesIterable[UVec]c                0    |                      |           d S rO   )set_boundary_pathrU   r   s     rW   rl   zUnderlay.boundary_path   s    x(((((rX   boolc                N    t          | j        j        t          j        z            S rO   )r   rm   rH   r   UNDERLAY_CLIPPINGr   s    rW   clippingzUnderlay.clipping   s    DHNU%<<===rX   statec                F    |                      t          j        |           d S rO   )set_flag_stater   r   rU   r   s     rW   r   zUnderlay.clipping   s!    E3U;;;;;rX   c                N    t          | j        j        t          j        z            S rO   )r   rm   rH   r   UNDERLAY_ONr   s    rW   onzUnderlay.on   s    DHNU%66777rX   c                F    |                      t          j        |           d S rO   )r   r   r   r   s     rW   r   zUnderlay.on  s!    E-u55555rX   c                N    t          | j        j        t          j        z            S rO   )r   rm   rH   r   UNDERLAY_MONOCHROMEr   s    rW   
monochromezUnderlay.monochrome  s    DHNU%>>???rX   c                F    |                      t          j        |           d S rO   )r   r   r   r   s     rW   r   zUnderlay.monochrome
  s!    E5u=====rX   c                N    t          | j        j        t          j        z            S rO   )r   rm   rH   r   UNDERLAY_ADJUST_FOR_BGr   s    rW   adjust_for_backgroundzUnderlay.adjust_for_background  s    DHNU%AABBBrX   c                F    |                      t          j        |           d S rO   )r   r   r   r   s     rW   r   zUnderlay.adjust_for_background  s!    E8%@@@@@rX   tuple[float, float, float]c                H    | j         j        | j         j        | j         j        fS rO   )rm   rC   rD   rE   r   s    rW   scalingzUnderlay.scaling  s    x!1483CCCrX   scaleUnion[float, tuple]c                    t          |t          t          f          r|||}}}n|\  }}}|| j        _        || j        _        || j        _        d S rO   )r[   floatintrm   rC   rD   rE   )rU   r   xyzs        rW   r   zUnderlay.scaling  sV    eeS\** 	UE!qAAGAq!rX   c                    t          |          }t          |          r|| _        d| _        d S |                                  d S )NT)r\   rk   rR   r   rn   r   s     rW   r   zUnderlay.set_boundary_path$  sF    >>x== 	'"*D DMMM$$&&&&&rX   c                "    g | _         d| _        dS )zRemoves the clipping path.FN)rR   r   r   s    rW   rn   zUnderlay.reset_boundary_path-  s     rX   c                    | j         sd S | j        r$| j                            | j        j                   | `t                                                       d S rO   )is_aliverS   discard_reactor_handlerm   rq   rR   rP   destroyrT   s    rW   r   zUnderlay.destroy2  sY    } 	F 	G55dhoFFFrX   mr   c                   | j         }t          t          |j                  |j        |j        |j        f|j        |j                  }	 |	                    |          }n# t          $ r t          d          w xY w|j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |j        |_        |                     |           | S )a  Transform UNDERLAY entity by transformation matrix `m` inplace.

        Unlike the transformation matrix `m`, the UNDERLAY entity can not
        represent a non-orthogonal target coordinate system and an
        :class:`InsertTransformationError` will be raised in that case.

        )rB   r   rF   rG   zLUNDERLAY entity can not represent a non-orthogonal target coordinate system.)rm   r$   r   rB   rC   rD   rE   rF   rG   	transformr#   scale_factor_xscale_factor_yscale_factor_zpost_transform)rU   r   rm   source_systemtarget_systems        rW   r   zUnderlay.transform;  s     h.
##;S[9\m	
 
 
	)33A66MM( 	 	 	+^  	 #)
$-%/#2#2#2As   
A   A:)rL   rM   )rY   r   rL   rM   rO   r_   r`   rL   r&   )rr   r   rL   r   )rz   r%   rL   rM   r   r'   rL   rM   )r   r'   )r   r   rL   rM   )r   r   r   r   rL   rM   )r   r/   r   r   rL   r0   )r   r0   rL   rM   )rL   r   )r   r   rL   rM   )rL   r   )r   r   rL   rM   )r   r   )rL   r   )r   r   )r   r   rL   r/   )&__name__
__module____qualname____doc__r   r   r   r   
DXFATTRIBSr   MIN_DXF_VERSION_FOR_EXPORTrQ   r"   r^   rf   rh   r|   r   r   r   r   r   r   r   r   propertyrl   setterr   r   r   r   r   r   rn   r   r   __classcell__rV   s   @rW   r/   r/   m   s       "" z;FFJ!(@ @ @ @ @ @
 5A 2 2 2 2 2 8<      ,# # # #O O O O O O
@ @ @- - - - - -*3 3 3 3? ? ? ? ? ?
B B B B B B! ! ! !*< < < <
" " " " # # X# ) ) ) ) > > > X> _< < < _< 8 8 8 X8 Y6 6 6 Y6 @ @ @ X@ > > > > C C C XC !A A A "!A D D D XD ^   ^' ' ' '   
            rX   r/   c                      e Zd ZdZdZdS )r)   zDXF PDFUNDERLAY entityPDFUNDERLAYNr   r   r   r   rp   r   rX   rW   r)   r)   Z            GGGrX   r)   c                      e Zd ZdZdZdS )PdfReferencez^PDFREFERENCE ia a synonym for PDFUNDERLAY, ezdxf creates always PDFUNDERLAY
    entities.
    PDFREFERENCENr   r   rX   rW   r   r   a  s          GGGrX   r   c                      e Zd ZdZdZdS )r*   zDXF DWFUNDERLAY entityDWFUNDERLAYNr   r   rX   rW   r*   r*   j  r   rX   r*   c                      e Zd ZdZdZdS )r+   zDXF DGNUNDERLAY entityDGNUNDERLAYNr   r   rX   rW   r+   r+   q  r   rX   r+   AcDbUnderlayDefinitionrb   )filenamer   c                       e Zd ZdZdZ eee          Ze	Z
	 dd fdZd fdZedd            Zedd            Zedd            Zd Z xZS )r0   z#Virtual UNDERLAY DEFINITION entity.UNDERLAYDEFINITIONNr_   r`   rL   r&   c                    t                                          |          }|r|                    |t          d           |S )Nr   rc   )rP   rf   ri   acdb_underlay_def_group_codes)rU   r_   rm   rV   s      rW   rf   z#UnderlayDefinition.load_dxf_attribs  sP     gg&&y11 	**2Q +    
rX   r   r'   rM   c                    t                                          |           |                    t          t          j                   | j                            |ddg           dS )r   r   r   N)rP   r   r   r   acdb_underlay_defr   rm   r   r   s     rW   r   z UnderlayDefinition.export_entity  sX    i(((_.?.DEEE##I
F/CDDDDDrX   r   c                     | j         d d         S )N   )rp   r   s    rW   file_formatzUnderlayDefinition.file_format  s    |BQBrX   c                    | j         dz   S )NUNDERLAYr	  r   s    rW   entity_namezUnderlayDefinition.entity_name  s    *,,rX   c                    d| j          dS )NACAD_DEFINITIONSr  r   s    rW   r   z!UnderlayDefinition.acad_dict_name  s    4t'4444rX   c                F    |                      | j        j        g           d S rO   )set_reactorsrm   ownerr   s    rW   post_new_hookz UnderlayDefinition.post_new_hook  s#    48>*+++++rX   rO   r   r   )rL   r   )r   r   r   r   rp   r   r   r  r   r   r   rf   r   r   r	  r  r   r  r   r   s   @rW   r0   r0     s        --"Gz+<==J!( 8<      E E E E E E       X  - - - X- 5 5 5 X5, , , , , , ,rX   r0   c                      e Zd ZdZdZdS )r,   zDXF PDFDEFINITION entityPDFDEFINITIONNr   r   rX   rW   r,   r,             ""GGGrX   r,   c                      e Zd ZdZdZdS )r.   zDXF DWFDEFINITION entityDWFDEFINITIONNr   r   rX   rW   r.   r.     r  rX   r.   c                      e Zd ZdZdZdS )r-   zDXF DGNDEFINITION entityDGNDEFINITIONNr   r   rX   rW   r-   r-     r  rX   r-   N)J
__future__r   typingr   r   r   r   typing_extensionsr   ezdxf.lldxfr	   ezdxf.lldxf.attributesr
   r   r   r   r   r   ezdxf.lldxf.constr   r   r   r   ezdxf.lldxf.tagsr   
ezdxf.mathr   r   r   r   r   	dxfentityr   r   r   dxfgfxr   r   dxfobjr    factoryr!   copyr"   ezdxf.math.transformtoolsr#   r$   ezdxf.documentr%   ezdxf.entitiesr&   ezdxf.lldxf.tagwriterr'   ezdxfr(   __all__point3dis_not_zerois_not_null_vectoris_in_integer_rangefit_into_integer_ranger   rj   r/   r)   r   r*   r+   r  r  r0   r,   r.   r-   r   rX   rW   <module>r4     s   # " " " " " ; ; ; ; ; ; ; ; ; ; ; ; " " " " " " ! ! ! ! ! !                E D D D D D D D D D       ! ! ! ! ! ! < < < < < < < < < < < < < < ? ? ? ? ? ? ? ? ? ? + + + + + + + +       $ $ $ $ $ $             
  &&&&&&++++++777777	 	 	   'ws||'"EM7CCC7+ 	
 
 
 7+ 	
 
 
 7+ 	
 
 
 GB***W-2 
 
 
 b)))G3i3B<<2)22s;;	
 
 
 3i3Ar::2)21b99	
 
 
c7 7: :v /.}== j j j j jz j j jZ     (        8        (        (     KGAJJ

    !3 23D E E 
$, $, $, $, $, $, $, $,N     &        &        &     rX   