Ë
    £èhÑ{  ã                  óš  — 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	 d dl
mZ d dlmZmZ d dlZer6d dl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mZmZ d d	lmZm Z  d d
l!m"Z" d dl#m$Z$ g d¢Z%ddd„Z&	 	 d	 	 	 	 	 	 	 dd„Z'	 	 d	 	 	 	 	 	 	 d d„Z(	 d!	 	 	 d"d„Z) G d„ d«      Z*h d£Z+d#d„Z,d$d%d„Z-d$d&d„Z.	 	 	 	 	 	 	 	 d'd„Z/d$d(d„Z0 G d„ d«      Z1y))é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚMappingÚOptionalN)Ú
TABLENAMES)ÚTags)ÚBoundaryPathTypeÚEdgeType)ÚDXFTag)ÚInsertÚMTextÚ
LWPolylineÚPolylineÚSplineÚLeaderÚ	DimensionÚImageÚMeshÚHatchÚMPolygonÚWipeout)Ú	DXFEntityÚLinetype)Ú
DXFPolygon)ÚBlockLayout)Úentities_to_codeÚblock_to_codeÚtable_entries_to_codeÚblackc                ó`   — ddl }|j                  «       }||_        |j                  | ||¬«      S )a½  Returns the source `code` as a single string formatted by `Black`_

    Requires the installed `Black`_ formatter::

        pip3 install black

    Args:
        code: source code
        line_length: max. source code line length
        fast: ``True`` for fast mode, ``False`` to check that the reformatted
            code is valid

    Raises:
        ImportError: Black is not available

    .. _black: https://pypi.org/project/black/

    r   N)ÚfastÚmode)r    ÚFileModeÚline_lengthÚformat_file_contents)Úcoder%   r"   r    r#   s        ú5lib/python3.12/site-packages/ezdxf/addons/dxf2code.pyr    r    (   s3   € ó( à�>‰>Ó€DØ"€DÔØ×%Ñ% d°¸DÐ%ÓAÐAó    ÚCodec                óX   — t        |¬«      }|j                  | |¬«       |j                  S )ar  
    Translates DXF entities into Python source code to recreate this entities
    by ezdxf.

    Args:
        entities: iterable of DXFEntity
        layout: variable name of the layout (model space or block) as string
        ignore: iterable of entities types to ignore as strings
            like ``['IMAGE', 'DIMENSION']``

    Returns:
        :class:`Code`

    ©Úlayout©Úignore©Ú_SourceCodeGeneratorÚtranslate_entitiesr'   )Úentitiesr-   r/   r'   s       r(   r   r   C   s+   € ô&   vÔ.€DØ×Ñ˜H¨VÐÔ4Ø�9‰9Ðr)   c                ó´  — | j                   €J ‚t        | j                   j                  «       «      }|j                  d«      }|j                  d«      }t	        d¬«      }d|› d|› d|› d�}|j                  |«       |j                  t        |d	¬
«      «       |j                  d«       |j                  d«       |j                  | |¬«       |j                  S )aK  
    Translates a BLOCK into Python source code to recreate the BLOCK by ezdxf.

    Args:
        block: block definition layout
        drawing: variable name of the drawing as string
        ignore: iterable of entities types to ignore as strings
            like ['IMAGE', 'DIMENSION']

    Returns:
        :class:`Code`

    ÚnameÚ
base_pointÚbr,   zb = z.blocks.new("z", base_point=z, dxfattribs={é   ©Úindentz    }Ú)r.   )
ÚblockÚ_purge_handlesÚ
dxfattribsÚpopr1   Úadd_source_code_lineÚadd_source_code_linesÚ_fmt_mappingr2   r'   )r<   Údrawingr/   r>   Ú
block_namer6   r'   Úprologs           r(   r   r   [   sÇ   € ð$ �;‰;Ð"Ð"Ð"Ü §¡× 6Ñ 6Ó 8Ó9€JØ—‘ Ó'€JØ—‘ Ó-€JÜ sÔ+€DØ�G�9˜M¨*¨°^ÀJÀ<ÈÐ_€FØ×Ñ˜fÔ%Ø×Ñœ|¨J¸qÔAÔBØ×Ñ˜gÔ&Ø×Ñ˜cÔ"Ø×Ñ˜E¨&ÐÔ1Ø�9‰9Ðr)   c                óT   — t        |¬«      }|j                  | «       |j                  S )N©Údocr0   )r3   rC   r'   s      r(   r   r   {   s&   € ô   GÔ,€DØ×Ñ˜HÔ%Ø�9‰9Ðr)   c                  ód   — e Zd ZdZdd„Zddd„Zddd„Zdd„Zddd„Zdd„Z	ddd„Z
ddd	„Zddd
„Zy)r*   zSource code container.c                óÆ   — g | _         t        «       | _        t        «       | _        t        «       | _        t        «       | _        t        «       | _        t        «       | _        y ©N)r'   ÚsetÚimportsÚlayersÚstylesÚ	linetypesÚ	dimstylesÚblocks©Úselfs    r(   Ú__init__zCode.__init__†   s?   € Ø!ˆŒ	ä!$£ˆŒä #£ˆŒä #£ˆŒä#&£5ˆŒä#&£5ˆŒä #£ˆ�r)   c                óV   ‡— d|z  Šdj                  ˆfd„| j                  D «       «      S )z€Returns the source code as a single string.

        Args:
            indent: source code indentation count by spaces

        Ú Ú
c              3  ó(   •K  — | ]	  }‰|z   –— Œ y ­wrK   © ©Ú.0ÚlineÚlead_strs     €r(   Ú	<genexpr>z Code.code_str.<locals>.<genexpr>�   s   øè ø€ Ð?±Y¨T˜ D�±Yùó   ƒ)Újoinr'   ©rT   r:   r^   s     @r(   Úcode_strzCode.code_str•   s'   ø€ ð ˜‘<ˆØ�y‰yÓ?°T·Y²YÓ?Ó?Ð?r)   c                ó6   — t        | j                  «       |«      S )zÐReturns the source code as a single string formatted by `Black`_

        Args:
            line_length: max. source code line length

        Raises:
            ImportError: Black is not available

        )r    rc   )rT   r%   s     r(   Úblack_code_strzCode.black_code_strŸ   s   € ô �T—]‘]“_ kÓ2Ð2r)   c                ó"   — | j                  «       S )z+Returns the source code as a single string.)rc   rS   s    r(   Ú__str__zCode.__str__«   s   € ð �}‰}‹Ðr)   c                óV   ‡— d|z  Šdj                  ˆfd„| j                  D «       «      S )z�Returns required imports as a single string.

        Args:
            indent: source code indentation count by spaces

        rW   rX   c              3  ó(   •K  — | ]	  }‰|z   –— Œ y ­wrK   rZ   r[   s     €r(   r_   z"Code.import_str.<locals>.<genexpr>¸   s   øè ø€ ÐB±\¨T˜ D�±\ùr`   )ra   rM   rb   s     @r(   Ú
import_strzCode.import_str°   s'   ø€ ð ˜‘<ˆØ�y‰yÓB°T·\²\ÓBÓBÐBr)   c                ó:   — | j                   j                  |«       y)zWAdd import statement, identical import statements are merged
        together.
        N)rM   Úadd©rT   Ú	statements     r(   Ú
add_importzCode.add_importº   s   € ð 	�‰×Ñ˜Õ#r)   c                óF   — | j                   j                  d|z  |z   «       y)z9Add a single source code line without line ending ``\n``.rW   N)r'   Úappend©rT   r'   r:   s      r(   Úadd_linezCode.add_lineÀ   s   € à�	‰	×Ñ˜˜v™¨Ñ,Õ-r)   c                ó8   — |D ]  }| j                  ||¬«       Œ y)z:Add multiple source code lines without line ending ``\n``.r9   N)rs   )rT   r'   r:   r]   s       r(   Ú	add_lineszCode.add_linesÄ   s   € ãˆDØ�M‰M˜$ vˆMÕ.ñ r)   c                óú  — | j                   j                  |j                   «       | j                  j                  |j                  «       | j                  j                  |j                  «       | j                  j                  |j                  «       | j
                  j                  |j
                  «       | j                  j                  |j                  «       | j                  |j                  |¬«       y)z!Add another :class:`Code` object.r9   N)	rM   ÚupdaterN   rP   rO   rQ   rR   ru   r'   rr   s      r(   Úmergez
Code.mergeÉ   sž   € ð 	�‰×Ñ˜DŸL™LÔ)Ø�‰×Ñ˜4Ÿ;™;Ô'Ø�‰×Ñ˜dŸn™nÔ-Ø�‰×Ñ˜4Ÿ;™;Ô'Ø�‰×Ñ˜dŸn™nÔ-Ø�‰×Ñ˜4Ÿ;™;Ô'ð 	�‰�t—y‘y¨ˆÕ0r)   N)ÚreturnÚNone©r   )r:   Úintry   Ústr)éX   )ry   r}   ©rn   r}   ry   rz   )r'   r}   r:   r|   ry   rz   )r'   úIterable[str]r:   r|   ry   rz   )r'   r*   r:   r|   ry   rz   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rU   rc   re   rg   rj   ro   rs   ru   rx   rZ   r)   r(   r*   r*   ƒ   s4   „ Ù ó&ô@ô
3óô
Có$ô.ô/õ
1r)   >   ÚownerÚhandleÚ
paperspaceÚmaterial_handleÚplotstyle_handleÚvisualstyle_handlec                óh   — | j                  «       D ��ci c]  \  }}|t        vsŒ||“Œ c}}S c c}}w )zæPurge handles from DXF attributes which will be invalid in a new
    document, or which will be set automatically by adding an entity to a
    layout (paperspace).

    Args:
        attribs: entity DXF attributes dictionary

    )ÚitemsÚ_PURGE_DXF_ATTRIBUTES)ÚattribsÚkÚvs      r(   r=   r=   á   s2   € ð %Ÿ]™]œ_ÔO™_‘T�Q˜°Ô9NÒ0NˆAˆq‰D˜_ÒOÐOùÓOs   ”.¥.c              #  óú   K  — d|z  dz   }| j                  «       D ]\  \  }}t        |t        «      sJ ‚t        |t        «      rt        j                  |«      }nt        |«      }|j                  ||«      –— Œ^ y ­w)NrW   z	'{}': {},)rŒ   Ú
isinstancer}   ÚjsonÚdumpsÚformat)Úmappingr:   Úfmtr�   r�   s        r(   rB   rB   í   si   è ø€ à
�‰,˜Ñ
$€CØ—‘–‰ˆˆ1Ü˜!œSÔ!Ð!Ð!Ü�aœÔÜ—
‘
˜1“‰Aä�A“ˆAØ�j‰j˜˜AÓÓñ  ùs   ‚A9A;c              #  óÂ   K  — dd„}d|z  dz   }| D ]J  }t        |t        t        t        f«      st	         ||«      «      }|j                  t        |«      «      –— ŒL y ­w)Nc              3  ór   K  — | D ].  }t        |t        j                  «      rt        |«      –— Œ+|–— Œ0 y ­wrK   )r’   ÚnpÚfloat64Úfloat)ÚvaluesÚvalues     r(   Úcleanupz_fmt_list.<locals>.cleanupú   s-   è ø€ ÛˆEÜ˜%¤§¡Ô,Ü˜E“lÓ"à“ñ	 ùs   ‚57rW   z{},)r�   r   ry   r   )r’   rœ   r|   r}   Útupler•   )Úlr:   rŸ   r—   r�   s        r(   Ú	_fmt_listr¢   ù   sW   è ø€ óð �‰,˜Ñ
€CÛˆÜ˜!œe¤S¬#Ð.Ô/Ü‘g˜a“jÓ!ˆAØ�j‰jœ˜Q›Ó Ó ñ ùs   ‚AAc                óþ   ‡‡— t        |«      Š‰rt        ‰«      ng Šdˆˆfd„}| g}|j                   |«       «       |j                  d«       |j                  t	        ‰d¬«      «       |j                  ddg«       |S )Nc               3  óÒ   •K  — ‰D ]]  } | ‰vrŒ‰j                  | «      }t        |t        «      rt        j                  |«      }nt        |«      }dj                  | |«      –— Œ_ y ­w)Nú
    {}={},)r?   r’   r}   r“   r”   r•   )Úargrž   ÚvaluestrÚargsÚ
attributess      €€r(   Úfmt_keywordsz#_fmt_api_call.<locals>.fmt_keywords  s^   øè ø€ ÛˆCØ˜*Ñ$ØØ—N‘N 3Ó'ˆEÜ˜%¤Ô%ÜŸ:™: eÓ,‘ä˜u›:�Ø×%Ñ% c¨8Ó4Ó4ñ ùs   ƒA$A'ú    dxfattribs={é   r9   ú    },r;   )ry   r€   )ÚdictÚlistÚextendrq   rB   )Ú	func_callr¨   r>   rª   Úsr©   s    `   @r(   Ú_fmt_api_callr³     sv   ù€ ô �jÓ!€JÙŒ4�Œ: 2€Dö	5ð 
ˆ€AØ‡H�H‰\‹^ÔØ‡H�HÐÔ Ø‡H�HŒ\˜*¨QÔ/Ô0Ø‡H�HàØð	
ôð €Hr)   c              #  óÞ   K  — d|z  dz   }| D ]\  \  }}t        |t        «      sJ ‚t        |t        «      rt        j                  |«      }nt        |«      }|j                  ||«      –— Œ^ y ­w)NrW   zdxftag({}, {}),)r’   r|   r}   r“   r”   r•   )Útagsr:   r—   r'   rž   s        r(   Ú_fmt_dxf_tagsr¶   &  se   è ø€ Ø
�‰,Ð*Ñ
*€CÛ‰ˆˆeÜ˜$¤Ô$Ð$Ð$Ü�eœSÔ!Ü—J‘J˜uÓ%‰Eä˜“JˆEØ�j‰j˜˜uÓ%Ó%ñ ùs   ‚A+A-c                  óâ  — e Zd ZdZd/d0d„Zd1d„Z	 d2	 	 	 	 	 d3d„Zd4d„Zd5d„Zd6d„Z	d7d	„Z
	 	 	 d8	 	 	 	 	 	 	 	 	 d9d
„Z	 	 	 d:	 	 	 	 	 	 	 	 	 d;d„Z	 d<	 d=d„Z	 d>	 	 	 	 	 	 	 d?d„Z	 d>	 	 	 	 	 	 	 	 	 d@d„ZdAd„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„Zd1d„ZdBd„ZdCd„ZdDd„Z dEd „Z!dFd!„Z"dGd"„Z#dHd#„Z$dId$„Z%dJd%„Z&dKd&„Z'dLd'„Z(dMd(„Z)dNd)„Z*dOd*„Z+dPd+„Z,dQd,„Z-dRd-„Z.dSd.„Z/y)Tr1   al  
    The :class:`_SourceCodeGenerator` translates DXF entities into Python source
    code for creating the same DXF entity in another model space or block
    definition.

    :ivar code: list of source code lines without line endings
    :ivar required_imports: list of import source code lines, which are required
        to create executable Python code.

    c                ó>   — || _         || _        t        «       | _        y rK   )rH   r-   r*   r'   )rT   r-   rH   s      r(   rU   z_SourceCodeGenerator.__init__=  s   € ØˆŒØˆŒÜ“Fˆ�	r)   c                ó¸   — |j                  «       }	 t        | d|j                  «       z   «      } ||«       y# t        $ r | j	                  d|› d�«       Y yw xY w)z¾Translates one DXF entity into Python source code. The generated
        source code is appended to the attribute `source_code`.

        Args:
            entity: DXFEntity object

        Ú_z# unsupported DXF entity "Ú"N)ÚdxftypeÚgetattrÚlowerÚAttributeErrorr@   )rT   Úentityr¼   Úentity_translators       r(   Útranslate_entityz%_SourceCodeGenerator.translate_entityB  sb   € ð —.‘.Ó"ˆð	&Ü '¨¨c°G·M±M³OÑ.CÓ DÐñ ˜fÕ%øô ò 	OØ×%Ñ%Ð(BÀ7À)È1Ð&MÖNð	Oús   ’8 ¸AÁANc                óˆ   — |rt        |«      n	t        «       }|D ]&  }|j                  «       |vsŒ| j                  |«       Œ( y)a<  Translates multiple DXF entities into Python source code. The
        generated source code is appended to the attribute `source_code`.

        Args:
            entities: iterable of DXFEntity
            ignore: iterable of entities types to ignore as strings
                like ['IMAGE', 'DIMENSION']

        N)rL   r¼   rÂ   )rT   r3   r/   rÀ   s       r(   r2   z'_SourceCodeGenerator.translate_entitiesR  s:   € ñ !'”�V”¬C«EˆãˆFØ�~‰~Ó vÒ-Ø×%Ñ% fÕ-ñ r)   c                óf  — d|v r(| j                   j                  j                  |d   «       d|v r(| j                   j                  j                  |d   «       d|v r(| j                   j                  j                  |d   «       d|v r)| j                   j
                  j                  |d   «       yy)z¥Register used resources like layers, line types, text styles and
        dimension styles.

        Args:
            dxfattribs: DXF attributes dictionary

        ÚlayerÚlinetypeÚstyleÚdimstyleN)r'   rN   rl   rP   rO   rQ   )rT   r>   s     r(   Úadd_used_resourcesz'_SourceCodeGenerator.add_used_resourcesf  s�   € ð �jÑ Ø�I‰I×Ñ× Ñ  ¨GÑ!4Ô5Ø˜Ñ#Ø�I‰I×Ñ×#Ñ# J¨zÑ$:Ô;Ø�jÑ Ø�I‰I×Ñ× Ñ  ¨GÑ!4Ô5Ø˜Ñ#Ø�I‰I×Ñ×#Ñ# J¨zÑ$:Õ;ð $r)   c                ó:   — | j                   j                  |«       y rK   )r'   ro   rm   s     r(   Úadd_import_statementz)_SourceCodeGenerator.add_import_statementw  s   € Ø�	‰	×Ñ˜YÕ'r)   c                ó:   — | j                   j                  |«       y rK   )r'   rs   ©rT   r'   s     r(   r@   z)_SourceCodeGenerator.add_source_code_linez  s   € Ø�	‰	×Ñ˜4Õ r)   c                ó^   — t        |t        «      rJ ‚| j                  j                  |«       y rK   )r’   r}   r'   ru   rÍ   s     r(   rA   z*_SourceCodeGenerator.add_source_code_lines}  s$   € Ü˜d¤CÔ(Ð(Ð(Ø�	‰	×Ñ˜DÕ!r)   c                óÒ   — d|z  dz   }| j                  |j                  |«      «       | j                  t        |d|z   ¬«      «       | j                  |j                  |«      «       y ©NrW   z{}r8   r9   )r@   r•   rA   r¢   )rT   r�   rE   Úepilogr:   Úfmt_strs         r(   Úadd_list_source_codez)_SourceCodeGenerator.add_list_source_code�  sY   € ð ˜‘, Ñ%ˆØ×!Ñ! '§.¡.°Ó"8Ô9Ø×"Ñ"¤9¨V¸AÀ¹JÔ#GÔHØ×!Ñ! '§.¡.°Ó"8Õ9r)   c                óÒ   — d|z  dz   }| j                  |j                  |«      «       | j                  t        |d|z   ¬«      «       | j                  |j                  |«      «       y rÐ   )r@   r•   rA   rB   )rT   r–   rE   rÑ   r:   rÒ   s         r(   Úadd_dict_source_codez)_SourceCodeGenerator.add_dict_source_code�  sY   € ð ˜‘, Ñ%ˆØ×!Ñ! '§.¡.°Ó"8Ô9Ø×"Ñ"¤<°ÀÀFÁ
Ô#KÔLØ×!Ñ! '§.¡.°Ó"8Õ9r)   c                óÒ   — d|z  dz   }| j                  |j                  |«      «       | j                  t        |d|z   ¬«      «       | j                  |j                  |«      «       y rÐ   )r@   r•   rA   r¶   )rT   rµ   rE   rÑ   r:   rÒ   s         r(   Úadd_tags_source_codez)_SourceCodeGenerator.add_tags_source_code™  sY   € ð ˜‘, Ñ%ˆØ×!Ñ! '§.¡.°Ó"8Ô9Ø×"Ñ"¤=°¸aÀ&¹jÔ#IÔJØ×!Ñ! '§.¡.°Ó"8Õ9r)   c                óÌ   — t        |«      }| j                  |«       |› | j                  › d�d|› d�dg}|j                  t	        |d¬«      «       |j                  ddg«       |S )	a)  Returns the source code strings to create a DXF entity by a generic
        `new_entity()` call.

        Args:
            dxftype: DXF entity type as string, like 'LINE'
            dxfattribs: DXF attributes dictionary
            prefix: prefix string like variable assignment 'e = '

        z.new_entity(z    'ú',r«   r¬   r9   r­   r;   )r=   rÉ   r-   r°   rB   )rT   r¼   r>   Úprefixr²   s        r(   Úgeneric_api_callz%_SourceCodeGenerator.generic_api_call¡  sw   € ô $ JÓ/ˆ
Ø×Ñ 
Ô+àˆh�t—{‘{�m <Ð0Ø�G�9˜BÐØð
ˆð
 	
�‰”˜j°Ô3Ô4Ø	�‰àØðô	
ð ˆr)   c                óX   — t        |«      }|› | j                  › d|› �}t        |||«      S )aW  Returns the source code strings to create a DXF entity by the
        specialised API call.

        Args:
            api_call: API function call like 'add_line('
            args: DXF attributes to pass as arguments
            dxfattribs: DXF attributes dictionary
            prefix: prefix string like variable assignment 'e = '

        Ú.)r=   r-   r³   )rT   Úapi_callr¨   r>   rÚ   r±   s         r(   rÞ   z_SourceCodeGenerator.api_call½  s5   € ô" $ JÓ/ˆ
Ø�h˜tŸ{™{˜m¨1¨X¨JÐ7ˆ	Ü˜Y¨¨jÓ9Ð9r)   c                óö   — | j                   › dt        |   › �}t        |«      }|j                  d«      }d|› d|› d�d|› d�d|› d	�d
g}|j	                  t        |d¬«      «       |j	                  ddg«       |S )z×Returns the source code strings to create a new table entity by
        ezdxf.

        Args:
            dxftype: table entry type as string, like 'LAYER'
            dxfattribs: DXF attributes dictionary

        rÝ   r5   zif 'z	' not in Ú:z    t = z.new(z	        'rÙ   z        dxfattribs={é   r9   z
        },z    ))rH   r   r=   r?   r°   rB   )rT   r¼   r>   Útabler5   r²   s         r(   Únew_table_entryz$_SourceCodeGenerator.new_table_entryÒ  s�   € ð —8‘8�*˜Aœj¨Ñ1Ð2Ð3ˆÜ# JÓ/ˆ
Ø�~‰~˜fÓ%ˆà�4�&˜	 % ¨Ð*Ø�u�g˜UÐ#Ø˜�v˜RÐ Ø"ð	
ˆð 	
�‰”˜j°Ô4Ô5Ø	�‰àØðô	
ð ˆr)   c                óh   — | j                  | j                  dddg|j                  «       «      «       y )Nz	add_line(ÚstartÚend©rA   rÞ   r>   ©rT   rÀ   s     r(   Ú_linez_SourceCodeGenerator._lineï  s.   € Ø×"Ñ"Ø�M‰M˜+¨°Ð'7¸×9JÑ9JÓ9LÓMõ	
r)   c                óf   — | j                  | j                  ddg|j                  «       «      «       y )Nz
add_point(Úlocationrç   rè   s     r(   Ú_pointz_SourceCodeGenerator._pointô  s+   € Ø×"Ñ"Ø�M‰M˜,¨¨°f×6GÑ6GÓ6IÓJõ	
r)   c                óh   — | j                  | j                  dddg|j                  «       «      «       y )Nzadd_circle(ÚcenterÚradiusrç   rè   s     r(   Ú_circlez_SourceCodeGenerator._circleù  s1   € Ø×"Ñ"Ø�M‰MØ ¨(Ð3°V×5FÑ5FÓ5Hóõ	
r)   c                óh   — | j                  | j                  dg d¢|j                  «       «      «       y )Nzadd_arc()rî   rï   Ústart_angleÚ	end_anglerç   rè   s     r(   Ú_arcz_SourceCodeGenerator._arc   s.   € Ø×"Ñ"Ø�M‰MØÚ@Ø×!Ñ!Ó#óõ	
r)   c                óf   — | j                  | j                  ddg|j                  «       «      «       y )Nz	add_text(Útextrç   rè   s     r(   Ú_textz_SourceCodeGenerator._text	  s+   € Ø×"Ñ"Ø�M‰M˜+¨ x°×1BÑ1BÓ1DÓEõ	
r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚSOLID©rA   rÛ   r>   rè   s     r(   Ú_solidz_SourceCodeGenerator._solid  ó)   € Ø×"Ñ"Ø×!Ñ! '¨6×+<Ñ+<Ó+>Ó?õ	
r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚTRACErú   rè   s     r(   Ú_tracez_SourceCodeGenerator._trace  rü   r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚ3DFACErú   rè   s     r(   Ú_3dfacez_SourceCodeGenerator._3dface  ó)   € Ø×"Ñ"Ø×!Ñ! (¨F×,=Ñ,=Ó,?Ó@õ	
r)   c                óh   — | j                  | j                  dg d¢|j                  «       «      «       y )Nz
add_shape()r5   ÚinsertÚsizerç   rè   s     r(   Ú_shapez_SourceCodeGenerator._shape  s-   € Ø×"Ñ"Ø�M‰MØÒ8¸&×:KÑ:KÓ:Móõ	
r)   c                óh   — | j                  | j                  dg d¢|j                  «       «      «       y )Nzadd_attrib()Útagrö   r  rç   rè   s     r(   Ú_attribz_SourceCodeGenerator._attrib$  s-   € Ø×"Ñ"Ø�M‰MØÒ8¸&×:KÑ:KÓ:Móõ	
r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚATTDEFrú   rè   s     r(   Ú_attdefz_SourceCodeGenerator._attdef+  r  r)   c                óh   — | j                  | j                  dg d¢|j                  «       «      «       y )Nzadd_ellipse()rî   Ú
major_axisÚratioÚstart_paramÚ	end_paramrç   rè   s     r(   Ú_ellipsez_SourceCodeGenerator._ellipse0  s.   € Ø×"Ñ"Ø�M‰MØÚMØ×!Ñ!Ó#óõ	
r)   c                ó„   — | j                  | j                  d|j                  «       «      «       | j                  d«       y )NÚVIEWPORTzm# Set valid handles or remove attributes ending with "_handle", otherwise the DXF file is invalid for AutoCAD)rA   rÛ   r>   r@   rè   s     r(   Ú	_viewportz_SourceCodeGenerator._viewport9  s>   € Ø×"Ñ"Ø×!Ñ! *¨f×.?Ñ.?Ó.AÓBô	
ð 	×!Ñ!ð<õ	
r)   c                óþ  — | j                   j                  j                  |j                  j                  «       | j                  | j                  dddg|j                  «       «      «       t        |j                  «      r}|j                  D ]m  }|j                  «       }|j                  j                  |d<   | j                  | j                  d|j                  «       d¬«      «       | j                  d«       Œo y y )	Nzadd_blockref(r5   r  rÅ   ÚATTRIBza = )rÚ   ze.attribs.append(a))r'   rR   rl   Údxfr5   rA   rÞ   r>   ÚlenrŽ   rÅ   rÛ   r@   )rT   rÀ   Úattribr>   s       r(   Ú_insertz_SourceCodeGenerator._insertD  sà   € Ø�	‰	×Ñ×Ñ˜VŸZ™ZŸ_™_Ô-Ø×"Ñ"Ø�M‰MØ &¨(Ð!3°V×5FÑ5FÓ5Hóô	
ô
 ˆv�~‰~ÔØ Ÿ.œ.�Ø#×.Ñ.Ó0�
ð —J‘J×$Ñ$ð Øñð ×*Ñ*Ø×)Ñ)Ø  &×"3Ñ"3Ó"5¸fð *ó ôð
 ×)Ñ)Ð*?Õ@ñ )ð r)   c                óÜ   — | j                  | j                  d|j                  «       «      «       | j                  dj	                  t        j                  |j                  «      «      «       y )NÚMTEXTze.text = {})rA   rÛ   r>   r@   r•   r“   r”   rö   rè   s     r(   Ú_mtextz_SourceCodeGenerator._mtextX  sQ   € Ø×"Ñ"Ø×!Ñ! '¨6×+<Ñ+<Ó+>Ó?ô	
ð
 	×!Ñ! -×"6Ñ"6´t·z±zÀ&Ç+Á+Ó7NÓ"OÕPr)   c                ó¦   — | j                  | j                  d|j                  «       «      «       | j                  |j	                  «       dd¬«       y )NÚ
LWPOLYLINEze.set_points([ú])©rE   rÑ   )rA   rÛ   r>   rÓ   Ú
get_pointsrè   s     r(   Ú_lwpolylinez _SourceCodeGenerator._lwpolyline`  sO   € Ø×"Ñ"Ø×!Ñ! ,°×0AÑ0AÓ0CÓDô	
ð 	×!Ñ!Ø×ÑÓÐ(8Àð 	"õ 	
r)   c                ó   — | j                  | j                  ddg|j                  «       «      «       t        |j                  «      r| j                  |j                  dd¬«       t        |j                  «      r| j                  |j                  dd¬«       t        |j                  «      r| j                  |j                  dd¬«       t        |j                  «      r| j                  |j                  dd¬«       y y )	Nzadd_spline(Údegreeze.fit_points = [Ú]r#  ze.control_points = [ze.knots = [ze.weights = [)	rA   rÞ   r>   r  Ú
fit_pointsrÓ   Úcontrol_pointsÚknotsÚweightsrè   s     r(   Ú_splinez_SourceCodeGenerator._splinei  sê   € Ø×"Ñ"Ø�M‰M˜-¨(¨°V×5FÑ5FÓ5HÓIô	
ô ˆv× Ñ Ô!Ø×%Ñ%Ø×!Ñ!Ð*<ÀSð &ô ô ˆv×$Ñ$Ô%Ø×%Ñ%Ø×%Ñ%Ð.DÈSð &ô ô ˆv�|‰|ÔØ×%Ñ%Ø—‘ ]¸3ð &ô ô ˆv�~‰~ÔØ×%Ñ%Ø—‘ ¸sð &õ ð r)   c                ó(  — | j                  | j                  d|j                  «       «      «       |j                  D ]T  }t	        |j                  «       «      }|j                  d«      }d|v r|d= | j                  dt        |«      › d|› d�«       ŒV y )NÚPOLYLINErë   rÅ   ze.append_vertex(z, dxfattribs=r;   )rA   rÛ   r>   Úverticesr=   r?   r@   r}   )rT   rÀ   r�   rŽ   rë   s        r(   Ú	_polylinez_SourceCodeGenerator._polyline‚  s�   € Ø×"Ñ"Ø×!Ñ! *¨f×.?Ñ.?Ó.AÓBô	
ð —”ˆAÜ$ Q§\¡\£^Ó4ˆGØ—{‘{ :Ó.ˆHØ˜'Ñ!ØØðð
 ×%Ñ%Ø"¤3 x£= /°¸w¸iÀqÐIõñ !r)   c                óÀ   — | j                  d«       | j                  | j                  d|j                  «       «      «       | j	                  |j
                  dd¬«       y )Nú8# Dimension style attribute overriding is not supported!ÚLEADERze.set_vertices([r"  r#  )r@   rA   rÛ   r>   rÓ   r0  rè   s     r(   Ú_leaderz_SourceCodeGenerator._leader”  s]   € Ø×!Ñ!ØFô	
ð 	×"Ñ"Ø×!Ñ! (¨F×,=Ñ,=Ó,?Ó@ô	
ð 	×!Ñ!Ø�O‰OÐ$6¸tð 	"õ 	
r)   c                óÌ   — | j                  d«       | j                  d«       | j                  | j                  d|j	                  «       «      «       | j                  g d¢«       y )Nz3from ezdxf.dimstyleoverride import DimStyleOverrider3  Ú	DIMENSION)z?# You have to create the required graphical representation for zA# the DIMENSION entity as anonymous block, otherwise the DXF filez0# is invalid for AutoCAD (but not for BricsCAD):z# DimStyleOverride(e).render()Ú )rË   r@   rA   rÛ   r>   rè   s     r(   Ú
_dimensionz_SourceCodeGenerator._dimensionŸ  sd   € Ø×!Ñ!ØAô	
ð 	×!Ñ!ØFô	
ð 	×"Ñ"Ø×!Ñ! +¨v×/@Ñ/@Ó/BÓCô	
ð 	×"Ñ"òõ	
r)   c                ó  — | j                  d«       | j                  | j                  d|j                  «       «      «       t	        |j
                  «      r%| j                  d„ |j
                  D «       dd¬«       | j                  d«       y )NzM# Image requires IMAGEDEF and IMAGEDEFREACTOR objects in the OBJECTS section!ÚIMAGEc              3  ó    K  — | ]  }|–— Œ y ­wrK   rZ   ©r\   r�   s     r(   r_   z._SourceCodeGenerator._image.<locals>.<genexpr>½  ó   è ø€ Ð1Ñ0�q”Ñ0ùó   ‚úe.set_boundary_path([r"  r#  zh# Set valid image_def_handle and image_def_reactor_handle, otherwise the DXF file is invalid for AutoCAD)r@   rA   rÛ   r>   r  Úboundary_pathrÓ   rè   s     r(   Ú_imagez_SourceCodeGenerator._image³  sŠ   € Ø×!Ñ!ðô	
ð 	×"Ñ"Ø×!Ñ! '¨6×+<Ñ+<Ó+>Ó?ô	
ô ˆv×#Ñ#Ô$Ø×%Ñ%Ù1˜F×0Ò0Ó1Ø.Øð &ô ð
 	×!Ñ!ð<õ	
r)   c                óØ   — | j                  | j                  d|j                  «       «      «       t        |j                  «      r&| j                  d„ |j                  D «       dd¬«       y y )NÚWIPEOUTc              3  ó    K  — | ]  }|–— Œ y ­wrK   rZ   r=  s     r(   r_   z0_SourceCodeGenerator._wipeout.<locals>.<genexpr>Ì  r>  r?  r@  r"  r#  )rA   rÛ   r>   r  rA  rÓ   rè   s     r(   Ú_wipeoutz_SourceCodeGenerator._wipeoutÆ  se   € Ø×"Ñ"Ø×!Ñ! )¨V×->Ñ->Ó-@ÓAô	
ô ˆv×#Ñ#Ô$Ø×%Ñ%Ù1˜F×0Ò0Ó1Ø.Øð &õ ð %r)   c                ó  — | j                  | j                  dg |j                  «       «      «       t        |j                  «      r| j                  |j                  dd¬«       t        |j                  «      r%| j                  d„ |j                  D «       dd¬«       t        |j                  «      r%| j                  d„ |j                  D «       dd¬«       t        |j                  «      r| j                  |j                  d	d¬«       y y )
Nz	add_mesh(ze.vertices = [r(  r#  c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrK   ©r    )r\   Úes     r(   r_   z-_SourceCodeGenerator._mesh.<locals>.<genexpr>Ü  ó   è ø€ Ð0¡<˜a”�q—¡<ùó   ‚ze.edges = [c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrK   rI  )r\   Úfs     r(   r_   z-_SourceCodeGenerator._mesh.<locals>.<genexpr>ã  rK  rL  ze.faces = [ze.creases = [)	rA   rÞ   r>   r  r0  rÓ   ÚedgesÚfacesÚcreasesrè   s     r(   Ú_meshz_SourceCodeGenerator._meshÑ  sí   € Ø×"Ñ"Ø�M‰M˜+ r¨6×+<Ñ+<Ó+>Ó?ô	
ô ˆv�‰ÔØ×%Ñ%Ø—‘Ð(8Àð &ô ô ˆv�|‰|Ôà×%Ñ%Ù0 6§<¢<Ó0Ø$Øð &ô ô
 ˆv�|‰|Ôà×%Ñ%Ù0 6§<¢<Ó0Ø$Øð &ô ô
 ˆv�~‰~ÔØ×%Ñ%Ø—‘ ¸sð &õ ð r)   c                ó–   — |j                  «       }d|d<   | j                  | j                  ddg|«      «       | j                  |«       y )Nr   Úassociativez
add_hatch(Úcolor)r>   rA   rÞ   Ú_polygon©rT   rÀ   r>   s      r(   Ú_hatchz_SourceCodeGenerator._hatchì  sH   € Ø×&Ñ&Ó(ˆ
Ø$%ˆ
�=Ñ!Ø×"Ñ"Ø�M‰M˜,¨¨	°:Ó>ô	
ð 	�‰�fÕr)   c                ó
  — |j                  «       }| j                  | j                  ddg|«      «       |j                  j                  r)| j                  d|j                  j                  › d�«       | j                  |«       y )Nzadd_mpolygon(rU  ze.set_solid_fill(color=z)
)r>   rA   rÞ   r  Ú
solid_fillr@   Ú
fill_colorrV  rW  s      r(   Ú	_mpolygonz_SourceCodeGenerator._mpolygonô  sr   € Ø×&Ñ&Ó(ˆ
Ø×"Ñ"Ø�M‰M˜/¨G¨9°jÓAô	
ð �:‰:× Ò Ø×%Ñ%Ø)¨&¯*©*×*?Ñ*?Ð)@ÀÐDôð 	�‰�fÕr)   c                ó–  — | j                   }t        |j                  «      r |d|j                  › d�«       |j                  rG| j	                  t        t        |j                  j                  «      dd¬«       | j                  d«       d}|j                  ��|j                  } |d«        ||j                  d	t        |j                  «      «      «        ||j                  d
t        |j                  «      «      «        ||j                  d|j                  «      «        ||j                  d|j                  «      «        ||j                  d|j                  «      «        ||j                  dt        j                   |j"                  «      «      «        |d«       t%        |j&                  d¬«      D �]þ  \  }}|j(                  t*        j,                  k(  r” |dj                  |«      «       | j	                  |j.                  dd¬«        ||j                  dt        |j0                  «      «      «        ||j                  dt        |j2                  «      «      «        |d«       Œ¸ |d|› d�«        |d|j2                  › d�«       |j4                  D �]  }|j(                  t6        j8                  k(  r- |d|j:                  › dt        |j<                  «      › d�«       ŒN|j(                  t6        j>                  k(  rÅ |d«        ||j                  dt        |j@                  «      «      «        ||j                  d|jB                  «      «        ||j                  d|jD                  «      «        ||j                  d|jF                  «      «        ||j                  d |jH                  «      «        |d«       �Œ0|j(                  t6        jJ                  k(  rð |d!«        ||j                  dt        |j@                  «      «      «        ||j                  d"t        |jL                  «      «      «        ||j                  d#|jN                  «      «        ||j                  d|jD                  «      «        ||j                  d|jF                  «      «        ||j                  d |jH                  «      «        |d«       �Œ=|j(                  t6        jP                  k(  s�Œ\ |d$«       |jR                  r9 ||j                  d%t        |jR                  D �cg c]  }|‘Œ c}«      «      «       |jT                  r9 ||j                  d&t        |jT                  D �	cg c]  }	|	‘Œ c}	«      «      «       |jV                  r+ ||j                  d't        |jV                  «      «      «       |jX                  r+ ||j                  d(t        |jX                  «      «      «        ||j                  d)|jZ                  «      «        ||j                  d*|j\                  «      «       |j^                  �+ ||j                  d+t        |j^                  «      «      «       |j`                  �+ ||j                  d,t        |j`                  «      «      «        |d«       �Œ �Œ y c c}w c c}	w )-Nze.set_seed_points(r;   ze.set_pattern_definition([r"  r#  ze.dxf.solid_fill = 0r¥   ze.set_gradient(Úcolor1Úcolor2ÚrotationÚcenteredÚ	one_colorr5   é   )rå   z# {}. polyline pathze.paths.add_polyline_path([z    ],Ú	is_closedÚflagsz# z,. edge path: associative hatch not supportedz!ep = e.paths.add_edge_path(flags=zep.add_line(z, zep.add_arc(rî   rï   rò   ró   Úccwzep.add_ellipse(r  r  zep.add_spline(r)  r*  Úknot_valuesr,  r'  ÚperiodicÚstart_tangentÚend_tangent)1r@   r  ÚseedsÚpatternrÓ   Úmapr}   ÚlinesÚgradientr•   r^  r_  r`  ra  rb  r“   r”   r5   Ú	enumerateÚpathsÚtyper
   r/  r0  rd  Úpath_type_flagsrO  r   ÚLINErå   ræ   ÚARCrî   rï   rò   ró   rf  ÚELLIPSEr  r  ÚSPLINEr)  r*  rg  r,  r'  rh  ri  rj  )
rT   rÀ   rs   r¦   ÚgÚcountÚpathÚedgeÚfpÚcps
             r(   rV  z_SourceCodeGenerator._polygonÿ  s/  € Ø×,Ñ,ˆÜˆv�|‰|ÔÙÐ)¨&¯,©,¨°qÐ9Ô:Ø�>Š>Ø×%Ñ%Ü”C˜Ÿ™×-Ñ-Ó.Ø3Øð &ô ð
 ×%Ñ%Ð&<Ô=Øˆà�?‰?Ñ&Ø—‘ˆAÙÐ&Ô'Ù�S—Z‘Z ¬#¨a¯h©h«-Ó8Ô9Ù�S—Z‘Z ¬#¨a¯h©h«-Ó8Ô9Ù�S—Z‘Z 
¨A¯J©JÓ7Ô8Ù�S—Z‘Z 
¨A¯J©JÓ7Ô8Ù�S—Z‘Z ¨Q¯[©[Ó9Ô:Ù�S—Z‘Z ¬¯
©
°1·6±6Ó(:Ó;Ô<Ù�SŒMÜ$ V§\¡\¸×;Ð;‰KˆE�4Ø�y‰yÔ,×5Ñ5Ò5ÙÐ.×5Ñ5°eÓ<Ô=Ø×)Ñ)Ø—M‘MØ8Ø#ð *ô ñ
 ˜Ÿ™ K´°T·^±^Ó1DÓEÔFÙ˜Ÿ™ G¬S°×1EÑ1EÓ-FÓGÔHÙ˜•áØ˜˜ÐKÐLôñ Ø7¸×8LÑ8LÐ7MÈQÐOôð !ŸJ�J�DØ—y‘y¤H§M¡MÒ1Ù  <°·
±
¨|¸2¼cÀ$Ç(Á(»m¸_ÈAÐ!NÕOØŸ™¤h§l¡lÒ2ñ ! Ô/Ù  §¡¨H´c¸$¿+¹+Ó6FÓ!GÔHÙ  §¡¨H°d·k±kÓ!BÔCÙ  §¡¨M¸4×;KÑ;KÓ!LÔMÙ  §¡¨K¸¿¹Ó!HÔIÙ  §¡¨E°4·8±8Ó!<Ô=Ù  žØŸ™¤h×&6Ñ&6Ò6ñ !Ð!2Ô3Ù  §¡¨H´c¸$¿+¹+Ó6FÓ!GÔHÙ  §¡¨L¼#¸d¿o¹oÓ:NÓ!OÔPÙ  §¡¨G°T·Z±ZÓ!@ÔAÙ  §¡¨M¸4×;KÑ;KÓ!LÔMÙ  §¡¨K¸¿¹Ó!HÔIÙ  §¡¨E°4·8±8Ó!<Ô=Ù  žØŸ™¤h§o¡oÔ5Ù Ð!1Ô2ØŸ?š?Ù$Ø #§
¡
Ø$0Ü$'°d·o²oÓ(F±o°ª°oÑ(FÓ$Gó!"ôð  ×.Ò.Ù$Ø #§
¡
Ø$4Ü$'°d×6IÒ6IÓ(JÑ6I°ªÐ6IÑ(JÓ$Kó!"ôð  ×+Ò+Ù$Ø #§
¡
¨=¼#¸d×>NÑ>NÓ:OÓ Pôð  Ÿ<š<Ù$ S§Z¡Z°	¼3¸t¿|¹|Ó;LÓ%MÔNÙ  §¡¨H°d·k±kÓ!BÔCÙ  §¡¨J¸¿¹Ó!FÔGØ×-Ñ-Ð9Ù$Ø #§
¡
Ø$3´S¸×9KÑ9KÓ5Ló!"ôð
  ×+Ñ+Ð7Ù$Ø #§
¡
¨=¼#¸d×>NÑ>NÓ:OÓ Pôñ ! žòu 'ñ% <ùò` )Gùò )Ks   Ô5	[Õ:	[c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚLAYER©rA   rã   r>   )rT   rÅ   s     r(   Ú_layerz_SourceCodeGenerator._layere  ó)   € Ø×"Ñ"Ø× Ñ  ¨%×*:Ñ*:Ó*<Ó=õ	
r)   c                ó<  — | j                  d«       | j                  d«       | j                  d«       | j                  | j                  d|j                  «       «      «       | j	                  |j
                  j                  ddd¬«       | j                  d	«       y )
Nz!from ezdxf.lldxf.tags import Tagsz$from ezdxf.lldxf.types import dxftagz0from ezdxf.entities.ltype import LinetypePatternÚLTYPEztags = Tags([r"  r8   )rE   rÑ   r:   z*    t.pattern_tags = LinetypePattern(tags))rË   rA   rã   r>   r×   Úpattern_tagsrµ   r@   )rT   Últypes     r(   Ú_ltypez_SourceCodeGenerator._ltypej  s˜   € Ø×!Ñ!Ð"EÔFØ×!Ñ!Ð"HÔIØ×!Ñ!Ø>ô	
ð 	×"Ñ"Ø× Ñ  ¨%×*:Ñ*:Ó*<Ó=ô	
ð 	×!Ñ!Ø×Ñ×#Ñ#Ø"ØØð	 	"ô 	
ð 	×!Ñ!Ð"NÕOr)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚSTYLEr€  )rT   rÇ   s     r(   Ú_stylez_SourceCodeGenerator._style{  r‚  r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚDIMSTYLEr€  )rT   rÈ   s     r(   Ú	_dimstylez_SourceCodeGenerator._dimstyle€  s)   € Ø×"Ñ"Ø× Ñ  ¨X×-@Ñ-@Ó-BÓCõ	
r)   c                ób   — | j                  | j                  d|j                  «       «      «       y )NÚAPPIDr€  )rT   Úappids     r(   Ú_appidz_SourceCodeGenerator._appid…  r‚  r)   )r-   rH   )r-   r}   rH   r}   )rÀ   r   ry   rz   rK   )r3   úIterable[DXFEntity]r/   úOptional[Iterable[str]]ry   rz   )r>   r   ry   rz   r   )r'   r}   ry   rz   )r'   r€   ry   rz   )Ú[r(  r   )
r�   r   rE   r}   rÑ   r}   r:   r|   ry   rz   )Ú{Ú}r   )
r–   r   rE   r}   rÑ   r}   r:   r|   ry   rz   )ztags = Tags(r;   r8   )rµ   r	   )ze = )r¼   r}   r>   r®   rÚ   r}   ry   r€   )
rÞ   r}   r¨   r€   r>   r®   rÚ   r}   ry   r€   )r¼   r}   r>   r®   ry   r€   )rÀ   r   ry   rz   )rÀ   r   ry   rz   )rÀ   r   ry   rz   )rÀ   r   ry   rz   )rÀ   r   ry   rz   )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   )0r�   r‚   rƒ   r„   rU   rÂ   r2   rÉ   rË   r@   rA   rÓ   rÕ   r×   rÛ   rÞ   rã   ré   rì   rð   rô   r÷   rû   rÿ   r  r  r
  r  r  r  r  r  r%  r-  r1  r5  r9  rB  rF  rR  rX  r\  rV  r�  r‡  rŠ  r�  r‘  rZ   r)   r(   r1   r1   1  sê  „ ñ	ôó
&ð& +/ð.à%ð.ð (ð.ð 
ó	.ó(<ó"(ó!ó"ð ØØð
:àð
:ð ð
:ð ð	
:ð
 ð
:ð 
ó
:ð ØØð
:àð
:ð ð
:ð ð	
:ð
 ð
:ð 
ó
:ð EFð:Øó:ð =CðØðØ(,ðØ69ðà	óðB ð:àð:ð ð:ð ð	:ð
 ð:ð 
ó:ó*ó:
ó

ó

ó
ó
ó

ó

ó

ó

ó
ó
ó

ó
óAó(Qó
óó2ó$	
ó
ó(
ó&	óó6ó	óc&óL
ó
Pó"
ó

ô

r)   r1   )r~   T)r'   r}   r"   Úboolry   r}   )r-   N)r3   r’  r-   r}   r/   r“  ry   r*   )rH   N)r<   r   rC   r}   r/   r“  ry   r*   rG   )r3   r’  ry   r*   )rŽ   r®   ry   r®   r{   )r–   r   r:   r|   ry   r€   )r¡   r   r:   r|   ry   r€   )r±   r}   r¨   r€   r>   r®   ry   z	list[str])rµ   zIterable[DXFTag]r:   r|   )2Ú
__future__r   Útypingr   r   r   r   r“   Úezdxf.sections.tablesr   Úezdxf.lldxf.tagsr	   Úezdxf.entitiesr
   r   Únumpyrš   Úezdxf.lldxf.typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úezdxf.entities.polygonr   Úezdxf.layoutsr   Ú__all__r    r   r   r   r*   r�   r=   rB   r¢   r³   r¶   r1   rZ   r)   r(   Ú<module>r¢     s)  ðõ #ß =Ó =Û å ,Ý !ß 5Û áÝ(÷÷ ÷ ó ÷ 3Ý1Ý)ò€ôBð: Ø&*ðØ!ðàðð $ðð 
ó	ð4 Ø&*ðØðàðð $ðð 
ó	ðB ,1ðØ!ðà	ó÷Q1ñ Q1òhÐ ó	Pô	ô!ðØðØ'ðØ59ðàóô<&÷W	
ò W	
r)   