Ë
    £èhW  ã                  óÎ  — d Z 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ZddlZddlmZmZmZ d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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) ddl*m+Z+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 erddl:m;Z; g d¢Z<dZ= ej|                  d«      Z?e=dœd6d„Z@e=dœd7d„ZAe=dœ	 	 	 	 	 	 	 d8d„ZB	 	 	 	 	 	 	 	 d9d„ZC	 	 	 	 	 	 	 	 d:d„ZDd;d„ZEd<d„ZFd=d„ZGd>d!„ZHd>d"„ZId>d#„ZJd>d$„ZKe3fd?d%„ZLd>d&„ZMd>d'„ZNd>d(„ZOd@d)„ZP	 	 	 	 	 	 	 	 	 	 dAd*„ZQdBd+„ZRdBd,„ZSdBd-„ZTh d.£ZU G d/„ d0e+«      ZV G d1„ d2«      ZWd3ZXdCd4„ZY G d5„ d «      ZZy)Da  
Module to export any DXF document as DXF version R12 without modifying the source
document.

.. versionadded:: 1.1

To get the best result use the ODA File Converter add-on::

    from ezdxf.addons import odafc

    odafc.convert("any.dxf", "r12.dxf", version="R12")

é    )Úannotations)ÚTYPE_CHECKINGÚTextIOÚCallableÚOptionalN)ÚStringIO)ÚconstÚproxygraphicÚpath)ÚDrawing)ÚBlockRecordÚ	DXFEntityÚDXFTagStorageÚEllipseÚHatchÚInsertÚ
LWPolylineÚMPolygonÚMTextÚMeshÚPolyfaceÚPolylineÚSplineÚ	Textstyle)Ú
DXFPolygon)ÚMTextExplode)ÚEntitySpace)ÚBlockLayoutÚVirtualLayout)Ú	TagWriterÚAbstractTagWriter)ÚDXFTagÚTAG_STRING_FORMAT)ÚZ_AXISÚVec3ÚNULLVEC)ÚR12NameTranslator)ÚMeshBuilder)ÚTextstyleTable)ÚGenericLayoutType)ÚR12ExporterÚconvertÚsaveasÚwriteç{®Gáz„?Úezdxf©Úmax_sagittac               óž   — t        «       }t        | |¬«      }|j                  |«       |j                  d«       t	        j
                  |«      S )z¿Export and reload DXF document as DXF version R12.

    Writes the DXF document into a temporary file at the file-system and reloads this
    file by the :func:`ezdxf.readfile` function.
    r1   r   )r   r+   r.   Úseekr0   Úread)Údocr2   ÚstreamÚexporters       ú6lib/python3.12/site-packages/ezdxf/addons/r12export.pyr,   r,   >   s=   € ô ‹Z€FÜ˜3¨KÔ8€HØ‡N�N�6ÔØ
‡K�K�„NÜ�:‰:�fÓÐó    c               ó@   — t        | |¬«      }|j                  |«       y)aò  Write a DXF document as DXF version R12 to a text stream. The `max_sagitta`
    argument determines the accuracy of the curve flatting for SPLINE and ELLIPSE
    entities.

    Args:
        doc: DXF document to export
        stream: output stream, use :attr:`doc.encoding` as encoding
        max_sagitta: maximum distance from the center of the curve to the
            center of the line segment between two approximation points to
            determine if a segment should be subdivided.

    r1   N)r+   r.   )r6   r7   r2   r8   s       r9   r.   r.   K   s   € ô ˜3¨KÔ8€HØ‡N�N�6Õr:   c               ó|   — t        |d| j                  d¬«      5 }t        | ||¬«       ddd«       y# 1 sw Y   yxY w)aÉ  Write a DXF document as DXF version R12 to a file. The `max_sagitta`
    argument determines the accuracy of the curve flatting for SPLINE and ELLIPSE
    entities.

    Args:
        doc: DXF document to export
        filepath: output filename
        max_sagitta: maximum distance from the center of the curve to the
            center of the line segment between two approximation points to
            determine if a segment should be subdivided.

    ÚwtÚ
dxfreplace)ÚencodingÚerrorsr1   N)Úopenr?   r.   )r6   Úfilepathr2   r7   s       r9   r-   r-   \   s6   € ô 
ˆh˜ s§|¡|¸LÕ	IÈVÜØØØ#õ	
÷ 
J×	IÑ	Iús   š2²;c                ó4  — t        j                  | j                  j                  | j                  j                  | j                  j
                  t        j                  dœ¬«      }|j                  | j                  ||«      ¬«       |j                  «        |S ©N)ÚlayerÚlinetypeÚcolorÚflags©Ú
dxfattribs)Úpoints©r   ÚnewÚdxfrE   rF   rG   r	   ÚPOLYLINE_3D_POLYLINEÚappend_verticesÚ
flatteningÚ
new_seqend)Úspliner2   Úmin_segmentsÚpolylines       r9   Úspline_to_polylinerV   s   sx   € ô �|‰|à—Z‘Z×%Ñ%ØŸ
™
×+Ñ+Ø—Z‘Z×%Ñ%Ü×/Ñ/ñ	
ô€Hð ×Ñ F×$5Ñ$5°kÀ<Ó$PÐÔQØ×ÑÔØ€Or:   c                ó4  — t        j                  | j                  j                  | j                  j                  | j                  j
                  t        j                  dœ¬«      }|j                  | j                  ||«      ¬«       |j                  «        |S rD   rL   )Úellipser2   rT   rU   s       r9   Úellipse_to_polylinerY   „   sx   € ô �|‰|à—[‘[×&Ñ&ØŸ™×,Ñ,Ø—[‘[×&Ñ&Ü×/Ñ/ñ	
ô€Hð ×Ñ G×$6Ñ$6°{ÀLÓ$QÐÔRØ×ÑÔØ€Or:   c                óà  — t        j                  | j                  j                  | j                  j                  | j                  j
                  dœ¬«      }|j                  «        |j                  | j                  «       d¬«       | j                  r|j                  «        | j                  j                  d«      r8| j                  j                  }||j                  _        ||j                  _        t        | j                  j                   «      }|j#                  t$        «      sC||j                  _        | j                  j&                  }t        dd|«      |j                  _        |S )N©rE   rF   rG   rI   Úxyseb)ÚformatÚconst_widthr   )r   rM   rN   rE   rF   rG   rR   Úappend_formatted_verticesÚ
get_pointsÚ	is_closedÚcloseÚhasattrr^   Údefault_start_widthÚdefault_end_widthr%   Ú	extrusionÚiscloser$   Ú	elevation)Ú
lwpolylinerU   Úwidthrf   rh   s        r9   Úlwpolyline_to_polylinerk   ”   s  € Ü�|‰|à—^‘^×)Ñ)Ø"Ÿ™×/Ñ/Ø—^‘^×)Ñ)ñ
ô€Hð ×ÑÔØ×&Ñ& z×'<Ñ'<Ó'>ÀwÐ&ÔOØ×ÒØ�‰ÔØ‡~�~×Ñ˜mÔ,Ø—‘×*Ñ*ˆØ+0ˆ�‰Ô(Ø).ˆ�‰Ô&Ü�Z—^‘^×-Ñ-Ó.€IØ×ÑœVÔ$Ø!*ˆ�‰ÔØ—N‘N×,Ñ,ˆ	Ü!% a¨¨IÓ!6ˆ�‰Ôð €Or:   c                óâ   — t        j                  | «      }|j                  t        «       | j                  j
                  | j                  j                  | j                  j                  dœ¬«      S )Nr[   rI   )r(   Ú	from_meshÚrender_polyfacer   rN   rE   rF   rG   )ÚmeshÚbuilders     r9   Úmesh_to_polyface_meshrq   ®   sW   € Ü×#Ñ# DÓ)€GØ×"Ñ"Ü‹à—X‘X—^‘^ØŸ™×)Ñ)Ø—X‘X—^‘^ñ
ð #ó ð r:   c                ó†   — | j                   j                  €J ‚d| j                  «       › d| j                   j                  › �S )NÚ
EZDXF_XPL_Ú_)rN   ÚhandleÚdxftype)Úentitys    r9   Úget_xpl_block_namerx   º   s>   € Ø�:‰:×ÑÐ(Ð(Ð(Ø˜Ÿ™Ó(Ð)¨¨6¯:©:×+<Ñ+<Ð*=Ð>Ð>r:   r+   c                ó¨   — t        |t        «      sJ ‚t        |«      }t        |j                  «      r |j                  | j                  «       «       y y ©N)Ú
isinstancer   rk   ÚlenÚverticesÚ
export_dxfÚ	tagwriter©r8   rw   rU   s      r9   Úexport_lwpolyliner�   ¿   sF   € Ü�fœjÔ)Ð)Ð)Ü% fÓ-€HÜ
ˆ8×ÑÔØ×Ñ˜H×.Ñ.Ó0Õ1ð r:   c                ó¨   — t        |t        «      sJ ‚t        |«      }t        |j                  «      r |j                  | j                  «       «       y y rz   )r{   r   rq   r|   r}   r~   r   )r8   rw   Úpolyface_meshs      r9   Úexport_meshr„   Æ   sF   € Ü�fœdÔ#Ð#Ð#Ü)¨&Ó1€MÜ
ˆ=×!Ñ!Ô"Ø× Ñ  ×!3Ñ!3Ó!5Õ6ð #r:   c                óÔ   — t        |t        «      sJ ‚t        || j                  | j                  «      }t        |j                  «      r |j                  | j                  «       «       y y rz   )	r{   r   rV   r2   Úmin_spline_segmentsr|   r}   r~   r   r€   s      r9   Úexport_spliner‡   Í   s[   € Ü�fœfÔ%Ð%Ð%Ü!Ø�×$Ñ$ h×&BÑ&Bó€Hô ˆ8×ÑÔØ×Ñ˜H×.Ñ.Ó0Õ1ð r:   c                óÔ   — t        |t        «      sJ ‚t        || j                  | j                  «      }t        |j                  «      r |j                  | j                  «       «       y y rz   )	r{   r   rY   r2   Úmin_ellipse_segmentsr|   r}   r~   r   r€   s      r9   Úexport_ellipserŠ   Ö   s[   € Ü�fœgÔ&Ð&Ð&Ü"Ø�×$Ñ$ h×&CÑ&Có€Hô ˆ8×ÑÔØ×Ñ˜H×.Ñ.Ó0Õ1ð r:   c                ó²   — t        j                  | |j                  j                  |j                  j                  |j                  j
                  |dœ¬«      S )N)ÚnamerE   rF   rG   ÚinsertrI   )r   rM   rN   rE   rF   rG   )rŒ   rw   Úlocations      r9   Úmake_insertr�   ß   sE   € Ü�:‰:àØ—Z‘Z×%Ñ%ØŸ
™
×+Ñ+Ø—Z‘Z×%Ñ%Øñ
ôð r:   c                ó  — t        |j                  t        «      sJ ‚t        j                  |j                  «      }	 t        |j                  «       «      }| j                  |«       y # t        j                  $ r Y y w xY wrz   )	r{   Úproxy_graphicÚbytesr
   ÚProxyGraphicr   Úvirtual_entitiesÚProxyGraphicErrorÚexport_entity_space)r8   rw   ÚpgÚentitiess       r9   Úexport_proxy_graphicr™   ë   sp   € Ü�f×*Ñ*¬EÔ2Ð2Ð2Ü	×	"Ñ	" 6×#7Ñ#7Ó	8€BðÜ˜r×2Ñ2Ó4Ó5ˆð × Ñ  Õ*øô ×)Ñ)ò Ùðús   ½A( Á(A>Á=A>c                ó–   — t        |t        «      sJ ‚t        «       }| j                  ||«       | j	                  |j
                  «       y rz   )r{   r   r   Úexplode_mtextr–   Úentity_space)r8   rw   Úlayouts      r9   Úexport_mtextrž   õ   s=   € Ü�fœeÔ$Ð$Ð$Ü‹_€FØ×Ñ˜6 6Ô*Ø× Ñ  ×!4Ñ!4Õ5r:   c                ó¼   — t        «       }	 |j                  «       D ]  }|j                  |«       Œ 	 | j	                  |j
                  «       y # t        $ r Y y w xY wrz   )r   r”   Ú
add_entityÚ	Exceptionr–   rœ   )r8   rw   r�   Úes       r9   Úexport_virtual_entitiesr£   ü   sY   € Ü‹_€FðØ×(Ñ(Ö*ˆAØ×Ñ˜aÕ ñ +ð × Ñ  ×!4Ñ!4Õ5øô ò Ùðús   Œ&A Á	AÁAc                óÚ   — t        | t        «      sJ ‚| j                  j                  | j                  j                  dœ}| j                  «       D ]  \  }}|j                  |||¬«       Œ y )N©rE   rG   rI   )r{   r   rN   rE   rG   Úrender_pattern_linesÚadd_line)rw   ÚblockrJ   ÚstartÚends        r9   Úexport_pattern_fillr«     s^   € Ü�fœjÔ)Ð)Ð)à—‘×!Ñ!Ø—‘×!Ñ!ñ€Jð ×1Ñ1Ö3‰
ˆˆsØ�‰�u˜c¨jˆÕ9ñ 4r:   c                ó<  — | j                   j                  | j                   j                  dœ}t        | j                   j                  «      }|j
                  s|j                  t        «      s||d<   | j                  ||«      D ]  }|j                  ||¬«       Œ y )Nr¥   rf   rI   )
rN   rE   rG   r%   rf   Úis_nullrg   r$   ÚtriangulateÚ	add_solid)rw   r¨   r2   rT   rJ   rf   r}   s          r9   Úexport_solid_fillr°     s…   € ð —‘×!Ñ!Ø—‘×!Ñ!ñ€Jô
 �V—Z‘Z×)Ñ)Ó*€IØ×Ò Y×%6Ñ%6´vÔ%>Ø"+ˆ
�;Ñð ×&Ñ& {°LÖAˆØ�‰˜¨ZˆÕ8ñ Br:   c                ó*  — t        |t        «      sJ ‚| j                  |«      }t        |j                  |«      }|j                  | j                  «       «       |j                  rt        ||«       y t        ||| j                  | j                  «       y rz   )r{   r   Ú	new_blockr�   rŒ   r~   r   Úhas_pattern_fillr«   r°   r2   r†   ©r8   rw   r¨   r�   s       r9   Úexport_hatchrµ   $  sy   € Ü�fœeÔ$Ð$Ð$à×Ñ˜vÓ&€EÜ˜Ÿ™ VÓ,€FØ
×Ñ�h×(Ñ(Ó*Ô+à×ÒÜ˜F EÕ*äØ�E˜8×/Ñ/°×1MÑ1Mõ	
r:   c                ó¦  — t        |t        «      sJ ‚| j                  |«      }t        |j                  |«      }|j                  | j                  «       «       t        j                  |t        j                  |t        |j                  j                  «      ¬«      | j                  | j                  t        |j                  j                  «      |j                  j                   |j                  j"                  |j                  j$                  dœ¬«       |j&                  rt)        ||«       y t+        ||| j                  | j                  «       y )N)Úoffsetr[   )ÚdistanceÚsegmentsrf   rJ   )r{   r   r²   r�   rŒ   r~   r   r   Úrender_polylines2dÚfrom_hatch_ocsr%   rN   r·   r2   r†   rf   rE   rF   rG   r³   r«   r°   r´   s       r9   Úexport_mpolygonr¼   3  sý   € Ü�fœhÔ'Ð'Ð'à×Ñ˜vÓ&€EÜ˜Ÿ™ VÓ,€FØ
×Ñ�h×(Ñ(Ó*Ô+ô 	×ÑØÜ×Ñ˜F¬4°·
±
×0AÑ0AÓ+BÔCØ×%Ñ%Ø×-Ñ-Ü�v—z‘z×+Ñ+Ó,à—Z‘Z×%Ñ%ØŸ
™
×+Ñ+Ø—Z‘Z×%Ñ%ñ
õð ×ÒÜ˜F EÕ*äØ�E˜8×/Ñ/°×1MÑ1Mõ	
r:   c                ó”  — ddl m} t        ||«      sJ ‚|}|j                  «       }|j	                  «       }|j                  d«      sy 	 |j                  j                  d«      }|j                  dd«      }t        j                  |||dœ¬«      }|j                  | j                  «       «       y # t        j                  $ r Y y w xY w)	Nr   )ÚAcadTableBlockContentz*TÚ
AcDbEntityé   Ú0)rŒ   rE   r�   rI   )Úezdxf.entities.acad_tabler¾   r{   Úget_insert_locationÚget_block_nameÚ
startswithÚxtagsÚget_subclassr	   ÚDXFIndexErrorÚget_first_valuer   rM   r~   r   )	r8   rw   r¾   ÚtablerŽ   Ú
block_nameÚacdb_entityrE   r�   s	            r9   Úexport_acad_tablerÍ   O  sÀ   € Ý?ä�fÐ3Ô4Ð4Ð4Ø#)€EØ×(Ñ(Ó*€HØ×%Ñ%Ó'€JØ× Ñ  Ô&ØðØ—k‘k×.Ñ.¨|Ó<ˆð ×'Ñ'¨¨3Ó/€EÜ�Z‰ZØ&°À(ÑKô€Fð ×Ñ�h×(Ñ(Ó*Õ+øô ×Ñò Ùðús   Á
B1 Â1CÃC>   éé  éë  é   é   é   é   rÀ   c                  ó@   ‡ — e Zd Zdˆ fd„Zdd„Zdd„Zd	d„Zd
d„Zˆ xZS )ÚR12TagWriterc                ó€   •— t         ‰| �  |t        j                  d¬«       d| _        d| _        t        «       | _        y )NF)Ú
dxfversionÚwrite_handlesÚ )ÚsuperÚ__init__r	   ÚDXF12Ú
skip_xdataÚcurrent_entityr'   Ú
translator)Úselfr7   Ú	__class__s     €r9   rÛ   zR12TagWriter.__init__|  s4   ø€ Ü‰Ñ˜¬E¯K©KÀuÐÔMØˆŒØ ˆÔÜ+Ó-ˆ�r:   c                ó   — || _         y rz   )Ú_stream©rà   r7   s     r9   Ú
set_streamzR12TagWriter.set_stream‚  s	   € Øˆ�r:   c                ó(  — |\  }}|dk(  rt        |«      | _        |dkD  r| j                  ry |t        v r5| j                  j                  t        || j                  ||«      fz  «       y | j                  j                  |j                  «       «       y )Nr   éç  )	ÚstrrÞ   rÝ   ÚNAME_TAG_CODESrã   r.   r#   Úsanitize_nameÚdxfstr)rà   ÚtagÚcodeÚvalues       r9   Ú	write_tagzR12TagWriter.write_tag…  s|   € Ø‰ˆˆeØ�1Š9Ü"% e£*ˆDÔØ�#Š:˜$Ÿ/š/ØØ”>Ñ!Ø�L‰L×ÑÜ! T¨4×+=Ñ+=¸dÀEÓ+JÐ$KÑKõð �L‰L×Ñ˜sŸz™z›|Õ,r:   c                óÎ   — |dkD  r| j                   ry |dk(  rt        |«      | _        |t        v r| j	                  ||«      }| j
                  j                  t        ||fz  «       y )Nrç   r   )rÝ   rè   rÞ   ré   rê   rã   r.   r#   )rà   rí   rî   s      r9   Ú
write_tag2zR12TagWriter.write_tag2’  s[   € Ø�#Š:˜$Ÿ/š/ØØ�1Š9Ü"% e£*ˆDÔØ”>Ñ!Ø×&Ñ& t¨UÓ3ˆEØ�‰×ÑÔ,°°e¨}Ñ<Õ=r:   c                ód   — |dk(  r| j                   dk7  r|S | j                  j                  |«      S )NrÑ   Ú	DIMENSION)rÞ   rß   Ú	translate)rà   rí   rŒ   s      r9   rê   zR12TagWriter.sanitize_name›  s2   € ð �1Š9˜×,Ñ,°Ò;ØˆKØ�‰×(Ñ(¨Ó.Ð.r:   )r7   r   ©r7   r   ÚreturnÚNone)rì   r"   rö   r÷   )rí   Úintrö   r÷   )rí   rø   rŒ   rè   rö   rè   )	Ú__name__Ú
__module__Ú__qualname__rÛ   rå   rï   rñ   rê   Ú__classcell__)rá   s   @r9   rÕ   rÕ   {  s   ø„ õ.óó-ó>÷/r:   rÕ   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚSpecialStyleTablec                ó    — || _         || _        y rz   )ÚstylesÚextra_styles)rà   r   r  s      r9   rÛ   zSpecialStyleTable.__init__ª  s   € ØˆŒØ(ˆÕr:   c                ó  — t        | j                  j                  j                  «       «      }| j                  j                  j                  «       D ]2  \  }}| j                  j                  |«      rŒ"|j                  |«       Œ4 |S rz   )Úlistr   ÚentriesÚvaluesr  ÚitemsÚ	has_entryÚappend)rà   r  rŒ   Úextra_styles       r9   Úget_text_stylesz!SpecialStyleTable.get_text_styles®  si   € Ü�t—{‘{×*Ñ*×1Ñ1Ó3Ó4ˆØ!%×!2Ñ!2×!:Ñ!:×!@Ñ!@Ö!BÑˆD�+Ø—;‘;×(Ñ(¨Õ.Ø—‘˜{Õ+ð "Cð ˆr:   c                óö   — | j                  «       }|j                  dd«       |j                  dd«       |j                  dt        |«      «       |D ]  }|j                  |«       Œ |j                  dd«       y )Nr   ÚTABLErÐ   ÚSTYLEéF   ÚENDTAB)r
  rñ   r|   r~   )rà   r   Útext_stylesÚstyles       r9   r~   zSpecialStyleTable.export_dxfµ  sm   € Ø×*Ñ*Ó,ˆØ×Ñ˜Q Ô(Ø×Ñ˜Q Ô(Ø×Ñ˜R¤ [Ó!1Ô2Û ˆEØ×Ñ˜YÕ'ð !à×Ñ˜Q Õ)r:   N)r   r)   r  r)   )rö   zlist[Textstyle])r   r!   rö   r÷   )rù   rú   rû   rÛ   r
  r~   © r:   r9   rþ   rþ   ©  s   „ ó)óô*r:   rþ   z0
EOF
c                ó¶   — d}| D ]?  }|j                  «       }|j                  d«      sŒ%	 t        |dd  «      }t	        ||«      }ŒA |dz   S # t        $ r Y ŒRw xY w)Nr   Ú*rÐ   é   )ÚupperrÅ   rø   Ú
ValueErrorÚmax)ÚnamesÚ
max_numberrŒ   Únumbers       r9   Údetect_max_block_numberr  Â  sm   € Ø€JÛˆØ�z‰z‹|ˆØ�‰˜sÔ#Øð	Ü˜˜a˜b˜“]ˆFô ˜ VÓ,‰
ð ð ˜‰>Ðøô ò 	Ùð	ús   «AÁ	AÁAc                  ó²   — e Zd Zddd„Zdd„Zedd„«       Zddd„Zdd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Zd d„Zd!d„Zdd„Zd"d„Zd#d„Zdd„Zd$d„Zy)%r+   c                óà  — t        |t        «      sJ ‚|| _        t        t	        «       «      | _        t        |«      | _        d| _        d| _	        t        j                  d«      | _        t        |j                  D �cg c]  }|j                  j                   ‘Œ c}«      | _        t$        t&        t(        t*        t,        t.        t.        t.        t.        t0        t2        t4        dœ| _        y c c}w )Né   rÀ   ÚR12)Ú
LWPOLYLINEÚMESHÚSPLINEÚELLIPSEÚMTEXTÚLEADERÚMLEADERÚMULTILEADERÚMLINEÚHATCHÚMPOLYGONÚ
ACAD_TABLE)r{   r   Ú_docrÕ   r   Ú
_tagwriterÚfloatr2   r†   r‰   r0   rM   Ú
_extra_docr  Úblock_recordsrN   rŒ   Ú_next_block_numberr�   r„   r‡   rŠ   rž   r£   rµ   r¼   rÍ   Ú	exporters)rà   r6   r2   Úbrs       r9   rÛ   zR12Exporter.__init__Ñ  s¸   € Ü˜#œwÔ'Ð'Ð'ØˆŒ	Ü&¤x£zÓ2ˆŒÜ  Ó-ˆÔØ()ˆÔ Ø)*ˆÔ!ÜŸ)™) EÓ*ˆŒÜ"9Ø#&×#4Ò#4Ó5Ñ#4˜RˆR�V‰V�[‹[Ð#4Ñ5ó#
ˆÔô ,ÜÜ#Ü%Ü!Ü-Ü.Ü2Ü,Ü!Ü'Ü+ñO
ˆ�ùò	 6s   Á=C+c                ó   — | j                   |= y rz   )r3  )rà   Úentity_types     r9   Údisable_exporterzR12Exporter.disable_exporterí  s   € Ø�N‰N˜;Ñ'r:   c                ó   — | j                   S rz   )r-  ©rà   s    r9   r6   zR12Exporter.docð  s   € à�y‰yÐr:   Nc                óT   — |�| j                   j                  |«       | j                   S rz   )r.  rå   rä   s     r9   r   zR12Exporter.tagwriterô  s$   € ØÐØ�O‰O×&Ñ& vÔ.Ø�‰Ðr:   c                óB   — |j                  | j                  «       «       y)z"Write DXF document to text stream.N)r.   Ú	to_stringrä   s     r9   r.   zR12Exporter.writeù  s   € à�‰�T—^‘^Ó%Õ&r:   c                ó®   — | j                  «       }| j                  «       }dj                  | j                  «       | j	                  «       ||t
        f«      S )zExport DXF document as string.rÙ   )Úexport_layouts_to_stringÚexport_blocks_to_stringÚjoinÚexport_header_to_stringÚexport_tables_to_stringÚEOF_STR)rà   r˜   Úblockss      r9   r<  zR12Exporter.to_stringý  sW   € ð ×0Ñ0Ó2ˆà×-Ñ-Ó/ˆà�w‰wà×,Ñ,Ó.Ø×,Ñ,Ó.ØØÜðó
ð 	
r:   c                óR   — d|› | j                   › �}| xj                   dz  c_         |S )Nr  r  )r2  )rà   ÚcharrŒ   s      r9   Únext_block_namezR12Exporter.next_block_name  s/   € Ø�4�&˜×0Ñ0Ð1Ð2ˆØ×Ò 1Ñ$ÕØˆr:   c                óÈ   — | j                  d«      }| j                  j                  j                  ||j                  j                  dd«      t        j                  dœ¬«      S )NÚUrE   rÁ   )rE   rH   rI   )rG  r0  rD  rM   rN   Úgetr	   ÚBLK_ANONYMOUS)rà   rw   rŒ   s      r9   r²   zR12Exporter.new_block  sW   € Ø×#Ñ# CÓ(ˆØ�‰×%Ñ%×)Ñ)ØàŸ™Ÿ™¨°Ó5Ü×,Ñ,ñð *ó 
ð 	
r:   c                óž   — t        «       }| j                  j                  j                  | j	                  |«      «       |j                  «       S rz   )r   r6   Úheaderr~   r   Úgetvalue©rà   Úin_memory_streams     r9   rA  z#R12Exporter.export_header_to_string  s9   € Ü#›:ÐØ�‰�‰×"Ñ" 4§>¡>Ð2BÓ#CÔDØ×(Ñ(Ó*Ð*r:   c                óZ  — t        «       }| j                  j                  }|j                  }t	        | j                  j                  | j
                  j                  «      |_        | j                  |«      }d|_        |j                  |«       ||_        d|_        |j                  «       S )NTF)
r   r6   Útablesr   rþ   r0  r   rÝ   r~   rN  )rà   rP  rR  Úpreserve_tabler   s        r9   rB  z#R12Exporter.export_tables_to_string"  sƒ   € ä#›:ÐØ—‘—‘ˆØŸ™ˆÜ)¨$¯(©(¯/©/¸4¿?¹?×;QÑ;QÓRˆŒà—N‘NÐ#3Ó4ˆ	Ø#ˆ	ÔØ×Ñ˜)Ô$Ø&ˆŒØ$ˆ	ÔØ×(Ñ(Ó*Ð*r:   c                ór  — t        «       }| j                  j                  |«       | j                  d«       | j                  j
                  D ]U  }|j                  r|j                  sŒ|j                  j                  j                  «       }|dv rŒE| j                  |«       ŒW | j                  «       }t        |«      rY|D ]8  }| j                  |«       | j                  |j                  j                  «       Œ: | j                  «       }t        |«      rŒY| j                  «        |j!                  «       S )NÚBLOCKS)z$model_spacez$paper_space)r   r.  rå   Ú_write_section_headerr6   r1  Úis_any_paperspaceÚis_active_paperspacerN   rŒ   ÚlowerÚ_export_block_recordÚget_extra_blocksr|   Údiscard_extra_blockÚ_write_endsecrN  )rà   rP  Úblock_recordrŒ   Úextra_blockss        r9   r?  z#R12Exporter.export_blocks_to_string0  s
  € Ü#›:ÐØ�‰×"Ñ"Ð#3Ô4à×"Ñ" 8Ô,Ø ŸH™H×2Ô2ˆLØ×-Ò-°l×6WÒ6WØØ×#Ñ#×(Ñ(×.Ñ.Ó0ˆDØÐ7Ñ7ð Ø×%Ñ% lÕ3ð 3ð ×,Ñ,Ó.ˆÜ�,ÔÛ ,�Ø×)Ñ)¨,Ô7Ø×(Ñ(¨×)9Ñ)9×)>Ñ)>Õ?ð !-ð  ×0Ñ0Ó2ˆLô �,Õð 	×ÑÔØ×(Ñ(Ó*Ð*r:   c                óN   — | j                   j                  j                  |«       y rz   )r0  r1  Údiscard©rà   rŒ   s     r9   r\  zR12Exporter.discard_extra_blockJ  s   € Ø�‰×%Ñ%×-Ñ-¨dÕ3r:   c                ó    — | j                   j                  D �cg c]*  }|j                  j                  j	                  d«      sŒ)|‘Œ, c}S c c}w )Nz*U)r0  r1  rN   rŒ   rÅ   )rà   r4  s     r9   r[  zR12Exporter.get_extra_blocksM  sD   € àŸ™×6Ò6ó
Ù6�2¸"¿&¹&¿+¹+×:PÑ:PÐQUÕ:VŠBÐ6ñ
ð 	
ùò 
s   ™*AÁAc                ó€   — t        || j                  «      5 }|j                  |d¬«       d d d «       y # 1 sw Y   y xY w)NF)Údestroy)r   r0  Úexplode)rà   Úmtextr�   Úxpls       r9   r›   zR12Exporter.explode_mtextR  s.   € Ü˜& $§/¡/Ô2°cØ�K‰K˜ uˆKÔ-÷ 3×2Ñ2ús   —4´=c                óz  — t        «       }| j                  j                  |«       | j                  d«       | j	                  | j
                  j                  «       j                  «       | j	                  | j
                  j                  «       j                  «       | j                  «        |j                  «       S )NÚENTITIES)r   r.  rå   rV  r–   r6   Ú
modelspacerœ   Ú
paperspacer]  rN  rO  s     r9   r>  z$R12Exporter.export_layouts_to_stringV  sˆ   € Ü#›:ÐØ�‰×"Ñ"Ð#3Ô4à×"Ñ" :Ô.Ø× Ñ  §¡×!4Ñ!4Ó!6×!CÑ!CÔDØ× Ñ  §¡×!4Ñ!4Ó!6×!CÑ!CÔDØ×ÑÔØ×(Ñ(Ó*Ð*r:   c                ó  — | j                   }|j                  €J ‚|j                  j                  |«       |j                  s| j	                  |j
                  «       |j                  €J ‚|j                  j                  |«       y rz   )r.  r¨   r~   Úis_any_layoutr–   rœ   Úendblk)rà   r^  r   s      r9   rZ  z R12Exporter._export_block_record`  st   € Ø—O‘Oˆ	Ø×!Ñ!Ð-Ð-Ð-Ø×Ñ×%Ñ% iÔ0Ø×)Ò)Ø×$Ñ$ \×%>Ñ%>Ô?Ø×"Ñ"Ð.Ð.Ð.Ø×Ñ×&Ñ& yÕ1r:   c                óD  — | j                   }|D ]�  }|j                  t        j                  kD  st	        |t
        «      rO| j                  j                  |j                  «       «      }|r
 || |«       Œe|j                  sŒrt        | |«       Œ|j                  |«       Œ‘ y rz   )r.  ÚMIN_DXF_VERSION_FOR_EXPORTr	   rÜ   r{   r   r3  rJ  rv   r‘   r™   r~   )rà   Úspacer   rw   r8   s        r9   r–   zR12Exporter.export_entity_spacei  s‚   € Ø—O‘Oˆ	ÛˆFØ×0Ñ0´5·;±;Ò>Ä*ØœôCð  Ÿ>™>×-Ñ-¨f¯n©nÓ.>Ó?�ÙÙ˜T 6Ô*ØØ×'Ó'Ü(¨¨vÕ6à×!Ñ! )Õ,ñ r:   c                óB   — | j                   j                  d|› d�«       y )Nz  0
SECTION
  2
Ú
)r.  Ú	write_strrb  s     r9   rV  z!R12Exporter._write_section_headerx  s   € Ø�‰×!Ñ!Ð$7¸°v¸RÐ"@ÕAr:   c                ó<   — | j                   j                  dd«       y )Nr   ÚENDSEC)r.  rñ   r9  s    r9   r]  zR12Exporter._write_endsec{  s   € Ø�‰×"Ñ" 1 hÕ/r:   )r/   )r6   r   r2   r/  )r6  rè   )rö   r   rz   )r7   zOptional[TextIO]rö   rÕ   rõ   )rö   rè   )rF  rè   rö   rè   )rw   r   rö   r   )rŒ   rè   rö   r÷   )rö   zlist[BlockRecord])rg  r   r�   r*   )r^  r   )rr  r   )rö   r÷   )rù   rú   rû   rÛ   r7  Úpropertyr6   r   r.   r<  rG  r²   rA  rB  r?  r\  r[  r›   r>  rZ  r–   rV  r]  r  r:   r9   r+   r+   Ð  sq   „ ô
ó8(ð òó ðôó
'ó
ó"ó

ó+ó
+ó+ó44ó
ó
.ó+ó2ó-óBô0r:   )r6   r   r2   r/  rö   r   )r6   r   r7   r   r2   r/  rö   r÷   )r6   r   rB   zstr | os.PathLiker2   r/  rö   r÷   )rS   r   r2   r/  rT   rø   rö   r   )rX   r   r2   r/  rT   rø   rö   r   )ri   r   rö   r   )ro   r   rö   r   )rw   r   rö   rè   )r8   r+   rw   r   )rŒ   rè   rw   r   rö   r   )rw   r   r¨   r   rö   r÷   )
rw   r   r¨   r   r2   r/  rT   rø   rö   r÷   )r8   r+   rw   r   rö   r÷   )r  z	list[str]rö   rø   )[Ú__doc__Ú
__future__r   Útypingr   r   r   r   ÚosÚior   Úloggingr0   r	   r
   r   Úezdxf.documentr   Úezdxf.entitiesr   r   r   r   r   r   r   r   r   r   r   r   r   r   Úezdxf.entities.polygonr   Úezdxf.addonsr   Úezdxf.entitydbr   Úezdxf.layoutsr   r   Úezdxf.lldxf.tagwriterr    r!   Úezdxf.lldxf.typesr"   r#   Ú
ezdxf.mathr$   r%   r&   Úezdxf.r12strictr'   Úezdxf.renderr(   Úezdxf.sections.tabler)   Úezdxf.eztypesr*   Ú__all__ÚMAX_SAGITTAÚ	getLoggerÚloggerr,   r.   r-   rV   rY   rk   rq   rx   r�   r„   r‡   rŠ   r�   r™   rž   r£   r«   r°   rµ   r¼   rÍ   ré   rÕ   rþ   rC  r  r+   r  r:   r9   Ú<module>r�     sÉ  ðñõ #ß <Ó <Û 	Ý Û ã ß +Ñ +Ý "÷÷ ÷ ÷ õ  .Ý %Ý &ß 4ß >ß 7ß ,Ñ ,Ý -Ý $Ý /áÝ/â
7€à€Ø	ˆ×	Ñ	˜7Ó	#€ð 3>õ 
ð ALõ ð$ HSñ
Ø	ð
Ø-ð
Ø?Dð
à	ó
ð.ØðØ!&ðØ69ðàóð"ØðØ#(ðØ8;ðàóó ó4	ó?ó
2ó7ó2ó2ð 8?ô 	ó+ó6ó6ó:ð9Øð9àð9ð ð9ð ð	9ð
 
ó9ó(
ó
ó8,òR -€ô+/�9ô +/÷\*ñ *ð, €ó÷l0ò l0r:   