Ë
    £èh¾Š  ã                  ó†  — d dl mZ d dlmZmZmZmZmZmZm	Z	 d dl
Z
d dlZd dlZd dlmZ d dlmZ d dlm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" d d
l#m$Z$ d dl%Z%er"d dl&m'Z' d dl(m)Z) d dl*m+Z+ d dl#m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1  e%jd                  d«      Z3dZ4 G d„ de5«      Z6	 d+	 	 	 	 	 	 	 d,d„Z7	 	 d+	 	 	 	 	 	 	 	 	 d-d„Z8d.d„Z9d.d„Z:d.d„Z;d.d„Z<d.d„Z=d.d„Z>d.d„Z?d.d„Z@e:dfe;dfe<dfe=dfe>dfe?dfdœZA	 	 	 	 	 	 	 	 	 	 d/d „ZB	 	 	 	 	 	 	 	 d0d!„ZC G d"„ d#e«      ZD G d$„ d%«      ZE G d&„ d'eE«      ZFd1d(„ZGd2d)„ZHd3d*„ZIy)4é    )Úannotations)ÚTYPE_CHECKINGÚOptionalÚIterableÚIteratorÚcastÚSequenceÚAnyN)ÚIntEnum)Úrepeat)Úconst)Úbytes_to_hexstrÚ
ByteStreamÚ	BitStream)Úcolors)	ÚVec3ÚVec2ÚMatrix44ÚZ_AXISÚConstructionCircleÚConstructionArcÚOCSÚUCSÚX_AXIS)Úfactory)ÚDrawing)ÚTags)ÚAbstractTagWriter)Ú
DXFGraphicÚPolymeshÚPolyfaceÚPolylineÚHatchÚ
LWPolylineÚezdxfé   c                  ó   — e Zd Zy)ÚProxyGraphicErrorN)Ú__name__Ú
__module__Ú__qualname__© ó    ú2lib/python3.12/site-packages/ezdxf/proxygraphic.pyr(   r(   5   s   „ Ør-   r(   c                ó¼   — | j                  ||f¬«      D �cg c]  }|j                  |k(  r|j                  ‘Œ }}t        |«      rdj	                  |«      S d S c c}w )N)Úcodesr-   )Úpop_tagsÚcodeÚvalueÚlenÚjoin)ÚtagsÚlength_codeÚ	data_codeÚtagÚbinary_datas        r.   Úload_proxy_graphicr;   9   sf   € ð
 —=‘=¨°YÐ'?�=Ô@óá@ˆCØ�8‰8�yÒ ð 	�	‹	Ø@ð ð ô
 %(¨Ô$4ˆ3�8‰8�KÓ Ð>¸$Ð>ùòs   —"Ac                ó  — |j                   t        j                  kD  sJ ‚t        | «      }|dk(  ry |j	                  ||«       d}||k  r7t        | ||t        z    «      }|j	                  ||«       |t        z  }||k  rŒ6y y )Nr   )Ú
dxfversionr   ÚDXF12r4   Ú
write_tag2r   Ú
CHUNK_SIZE)ÚdataÚ	tagwriterr7   r8   ÚlengthÚindexÚhex_strs          r.   Úexport_proxy_graphicrF   D   s„   € ð ×Ñ¤%§+¡+Ò-Ð-Ð-ä�‹Y€FØ�‚{Øà×Ñ˜ fÔ-Ø€EØ
�&Š.Ü! $ u¨u´zÑ/AÐ"BÓCˆØ×Ñ˜Y¨Ô0Ø”Ñˆð �&�.r-   c                ó   — t        | dz  «      S )Niÿÿ  ©Úbool©Úflagss    r.   Úhas_prim_traitsrL   Y   ó   € Ü�˜‘ÓÐr-   c                ó   — t        | dz  «      S )Né   rH   rJ   s    r.   Úprims_have_colorsrP   ]   rM   r-   c                ó   — t        | dz  «      S )Né   rH   rJ   s    r.   Úprims_have_layersrS   a   rM   r-   c                ó   — t        | dz  «      S )Né   rH   rJ   s    r.   Úprims_have_linetypesrV   e   rM   r-   c                ó   — t        | dz  «      S )Né    rH   rJ   s    r.   Úprims_have_markersrY   i   rM   r-   c                ó   — t        | dz  «      S )Né@   rH   rJ   s    r.   Úprims_have_visibilitiesr\   m   rM   r-   c                ó   — t        | dz  «      S )Né€   rH   rJ   s    r.   Úprims_have_normalsr_   q   rM   r-   c                ó   — t        | dz  «      S )Né   rH   rJ   s    r.   Úprims_have_orientationrb   u   rM   r-   ÚRLÚ3RD)r   ÚlayersÚ	linetypesÚmarkersÚvisibilitiesÚnormalsc                óÂ   ‡ ‡— ˆ ˆfd„}ˆ ˆfd„}t        «       }|D ]A  }t        |   \  }}	 ||«      sŒ|	dk(  r |«       ||<   Œ(|	dk(  r |«       ||<   Œ8t        |	«      ‚ |S )Nc                 ó\   •— t        ‰«      D � cg c]  } ‰j                  «       ‘Œ c} S c c} w ©N)ÚrangeÚ	read_long©Ú_ÚbsÚcounts    €€r.   Úread_float_listz)read_prim_traits.<locals>.read_float_list†   s%   ø€ Ü(-¨e¬Ó5© 1�—‘•¨Ñ5Ð5ùÒ5s   �)c                 ón   •— t        ‰«      D � cg c]  } t        ‰j                  «       «      ‘Œ c} S c c} w rl   )rm   r   Úread_vertexro   s    €€r.   Úread_verticesz'read_prim_traits.<locals>.read_vertices‰   s+   ø€ Ü05°e´Ó=±¨1”�R—^‘^Ó%Õ&°Ñ=Ð=ùÒ=s   � 2rd   rc   )ÚdictÚTRAIT_TESTERÚ	TypeError)
rq   ÚtypesÚ
prim_flagsrr   rs   rv   rA   ÚtÚ
test_traitÚ	data_types
   `  `      r.   Úread_prim_traitsr   ƒ   so   ù€ õ6õ>ô ‹6€DÛˆÜ ,¨Q¡Ñˆ
�IÙ�jÕ!Ø˜EÒ!Ù'›/��Q’Ø˜dÒ"Ù)Ó+��Q’ä 	Ó*Ð*ð ð €Kr-   c                ó  — t        «       }| j                  «       }t        |«      rt        | g d¢||«      |d<   | j                  «       }t        |«      rt        | g d¢||«      |d<   |dkD  r�| j                  «       }t        |«      rtt        «       }t	        |«      r3t        |«      D �	cg c]  }	t        | j                  «       «      ‘Œ c}	|d<   t        |«      rt        | j                  «       «      |d<   ||d<   |S c c}	w )	N)r   re   rf   rg   rh   Úedges)r   re   rg   ri   rh   Úfacesr   ri   ÚorientationÚvertices)
rw   rn   rL   r   r_   rm   r   ru   rb   rI   )
rq   Ú
edge_countÚ
face_countÚvertex_countÚtraitsÚ
edge_flagsÚ
face_flagsÚvertex_flagsr„   rp   s
             r.   Úread_mesh_traitsrŒ   ™   sö   € ô* ‹V€FØ—‘“€JÜ�zÔ"Ü*ØÚHØØó	
ˆˆw‰ð —‘“€JÜ�zÔ"Ü*ØÚFØØó	
ˆˆw‰ð �aÒØ—|‘|“~ˆÜ˜<Ô(Ü“vˆHÜ! ,Ô/ä49¸,Ô4Gó'Ù4G¨q”D˜Ÿ™Ó)Õ*Ð4Gñ'�˜Ñ#ô & lÔ3Ü*.¨r¯|©|«~Ó*>�˜Ñ'Ø!)ˆF�:ÑØ€Mùò's   Â) C=c                  ó¨   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)y())ÚProxyGraphicTypesrO   rR   é   rU   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   rX   é!   é"   é#   é$   é%   é&   é,   N)*r)   r*   r+   ÚEXTENTSÚCIRCLEÚ	CIRCLE_3PÚCIRCULAR_ARCÚCIRCULAR_ARC_3PÚPOLYLINEÚPOLYGONÚMESHÚSHELLÚTEXTÚTEXT2ÚXLINEÚRAYÚATTRIBUTE_COLORÚ	UNUSED_15ÚATTRIBUTE_LAYERÚ	UNUSED_17ÚATTRIBUTE_LINETYPEÚATTRIBUTE_MARKERÚATTRIBUTE_FILLÚ	UNUSED_21ÚATTRIBUTE_TRUE_COLORÚATTRIBUTE_LINEWEIGHTÚATTRIBUTE_LTSCALEÚATTRIBUTE_THICKNESSÚATTRIBUTE_PLOT_STYLE_NAMEÚ	PUSH_CLIPÚPOP_CLIPÚPUSH_MATRIXÚPUSH_MATRIX2Ú
POP_MATRIXÚPOLYLINE_WITH_NORMALSÚ
LWPOLYLINEÚATTRIBUTE_MATERIALÚATTRIBUTE_MAPPERÚUNICODE_TEXTÚ
UNKNOWN_37ÚUNICODE_TEXT2ÚELLIPTIC_ARCr,   r-   r.   rŽ   rŽ   Ð   sÏ   „ Ø€GØ€FØ€IØ€LØ€OØ€HØ€GØ€DØ€EØ€DØ€EØ€EØ
€CØ€OØ€IØ€OØ€IØÐØÐØ€NØ€IØÐØÐØÐØÐØ "ÐØ€IØ€HØ€KØ€LØ€JØÐØ€JØÐØÐØ€LØ€JØ€MØ�Lr-   rŽ   c                  óŠ  — e Zd Z	 d.ej                  dœ	 	 	 d/d„Zd0d„Zd1d„Zd1d„Zd2d„Z	d3d„Z
d3d	„Zd
„ Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd3d„Zd„ Zdedœd4d„Zd3d„Zd3d„Zd3d„Z d3d „Z!d3d!„Z"d3d"„Z#d3d#„Z$d3d$„Z%d5d6d%„Z&d3d&„Z'd3d'„Z(d3d(„Z)d3d)„Z*d7d*„Z+d8d+„Z,e-d5d9d,„«       Z.d:d-„Z/y);ÚProxyGraphicN)r=   c               ó”  — || _         t        j                  | _        || _        d| _        |r|j                  n|| _        | j                  t        j                  k  rdnd| _	        t        j                  | _        d| _        d| _        d| _        d| _        d | _        t        j"                  | _        d| _        d	| _        g | _        g | _        t/        «       | _        t3        «       | _        g | _        | j                   rÄt9        d
„ | j                   j*                  D «       «      | _        t9        d„ | j                   j,                  D «       «      | _        | j                   j:                  D �ci c]-  }|j<                  j>                  |j<                  j@                  “Œ/ c}| _        | j                   j                  | _	        y y c c}w )Nr“   Úcp1252zutf-8Ú0ÚBYLAYERr   Fç      ð?ç        c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrl   ©ÚdxfÚname)Ú.0Úlayers     r.   Ú	<genexpr>z(ProxyGraphic.__init__.<locals>.<genexpr>  s   è ø€ ÐLÑ;K°%˜uŸy™yŸ~�~Ñ;Kùó   ‚ "c              3  óH   K  — | ]  }|j                   j                  –— Œ y ­wrl   râ   )rå   Úlinetypes     r.   rç   z(ProxyGraphic.__init__.<locals>.<genexpr>  s   è ø€ Ð!XÑDW¸ (§,¡,×"3Õ"3ÑDWùrè   )!Ú_docr   ÚnewÚ_factoryÚ_bufferÚ_indexr=   r   ÚDXF2007ÚencodingrÞ   Úcolorræ   rê   Úmarker_indexÚfillÚ
true_colorÚLINEWEIGHT_DEFAULTÚ
lineweightÚltscaleÚ	thicknessre   rf   rw   Ú
textstylesÚsetÚrequired_fontsÚmatricesÚlistÚstylesrã   Úfonträ   )ÚselfrA   Údocr=   Ústyles        r.   Ú__init__zProxyGraphic.__init__û   sT  € ð ˆŒ	ÜŸ™ˆŒØ"ˆŒØˆŒÙ,/˜#Ÿ.š.°ZˆŒØ)-¯©¼5¿=¹=Ò)H™XÈgˆŒÜŸ-™-ˆŒ
ØˆŒ
Ø&ˆŒØ!"ˆÔØˆŒ	Ø)-ˆŒÜ$×7Ñ7ˆŒØ!ˆŒØ #ˆŒà!#ˆŒà$&ˆŒä*.«&ˆŒÜ(+«ˆÔØ(*ˆŒà�9Š9ÜÑL¸4¿9¹9×;KÒ;KÓLÓLˆDŒKÜ!Ñ!XÀDÇIÁI×DWÒDWÓ!XÓXˆDŒNà<@¿I¹I×<LÒ<LóÙ<L°5�—	‘	—‘ §	¡	§¡Ñ.Ð<LñˆDŒOð !ŸI™I×.Ñ.ˆD�Mð ùòs   Å.2Gc              #  ó.  K  — | j                   }| j                  }|t        |«      k  rWt        j                  d| j                  |¬«      \  }}	 t        |«      j                  }|||f–— ||z  }|t        |«      k  rŒVy y # t        $ r d|› �}Y Œ-w xY w­w)Nú<2L©ÚoffsetÚUNKNOWN_TYPE_)rï   rî   r4   ÚstructÚunpack_fromrŽ   rä   Ú
ValueError)r  rD   ÚbufferÚsizeÚtype_rä   s         r.   ÚinfozProxyGraphic.info  s—   è ø€ Ø—‘ˆØ—‘ˆØ”c˜&“kÒ!Ü ×,Ñ,¨U°D·L±LÈÔO‰KˆD�%ð/Ü(¨Ó/×4Ñ4�ð ˜˜tÐ#Ò#Ø�T‰MˆEð ”c˜&“kÕ!øô ò /Ø& u gÐ.’ð/üs0   ‚ABÁB Á$BÁ?BÂBÂBÂBÂBc                ó"   — | j                  «       S rl   )Ú__virtual_entities__©r  s    r.   Úvirtual_entitieszProxyGraphic.virtual_entities*  s   € Ø×(Ñ(Ó*Ð*r-   c              #  ó’   K  — 	 | j                  «       E d{  –—†  y7 Œ# t        $ r}t        dt        |«      › �«      ‚d}~ww xY w­w)z0Implements the SupportsVirtualEntities protocol.NzProxy graphic error: )Úunsafe_virtual_entitiesÚ	Exceptionr(   Ústr)r  Úes     r.   r  z!ProxyGraphic.__virtual_entities__-  sF   è ø€ ð	FØ×3Ñ3Ó5×5Ò5ùÜò 	FÜ#Ð&;¼CÀ»F¸8Ð$DÓEÐEûð	Füs.   ‚A„ —˜ œA� Ÿ	A¨?¿AÁAc              #  ó|  ‡ K  — ˆ fd„}‰ j                   }‰ j                  }|t        |«      k  rßt        j                  d||¬«      \  }}|dk  rt        d«      ‚	 t        |«      j                  j                  «       }t        ‰ |d «      }|rS |‰ j                  |dz   ||z    «      }t        |t        «      r|D ]  }	 ||	«      –— Œ n|r
 ||«      –— |r!d‰ _        nt        j                  d|› d	�«       ||z  }|t        |«      k  rŒÞy y # t
        $ r! t        j                  d|› �«       ||z  }Y �Œw xY w­w)
Nc                ó\   •— ‰j                   r| j                  ‰j                   d   «      S | S )Néÿÿÿÿ)rý   Ú	transform)Úentityr  s    €r.   r  z7ProxyGraphic.unsafe_virtual_entities.<locals>.transform5  s)   ø€ Ø�}Š}Ø×'Ñ'¨¯©°bÑ(9Ó:Ð:à�r-   r  r  r“   z#parsing error: chunk size < 8 byteszUnsupported Type Code: Fz!Unsupported feature ProxyGraphic.z())rï   rî   r4   r
  r  r  rŽ   rä   ÚlowerÚloggerÚdebugÚgetattrÚ
isinstanceÚtuplerô   )
r  r  rD   r  r  r  rä   ÚmethodÚresultr  s
   `         r.   r  z$ProxyGraphic.unsafe_virtual_entities4  s9  øè ø€ ô	ð —‘ˆØ—‘ˆØ”c˜&“kÒ!ä ×,Ñ,¨U°FÀ5ÔI‰KˆD�%à�aŠxÜ Ð!FÓGÐGðÜ(¨Ó/×4Ñ4×:Ñ:Ó<�ô
 ˜T 4¨Ó.ˆFÙÙ §¡¨U°Q©Y¸À¹Ð FÓG�Ü˜f¤eÔ,Û"(˜Ù'¨Ó/Ó/ñ #)áÙ# FÓ+Ò+ÙØ %�D•Iä—‘Ð@ÀÀÀbÐIÔJØ�T‰MˆEð1 ”c˜&“kÕ!øô ò Ü—‘Ð6°u°gÐ>Ô?Ø˜‘�Úðüs1   ƒAD<Á#D Á>BD<ÄD<Ä&D9Ä5D<Ä8D9Ä9D<c                óœ   — t        j                  d|«      }t        |«      }|j                  «        | j                  j                  |«       y )Nz<16d)r
  Úunpackr   Ú	transposerý   Úappend)r  rA   ÚvaluesÚms       r.   Úpush_matrixzProxyGraphic.push_matrixW  s7   € Ü—‘˜v tÓ,ˆÜ�VÓˆØ	�‰ŒØ�‰×Ñ˜QÕr-   c                óR   — | j                   r| j                   j                  «        y y rl   )rý   Úpop©r  rA   s     r.   Ú
pop_matrixzProxyGraphic.pop_matrix]  s   € Ø�=Š=Ø�M‰M×ÑÕð r-   c                ó<   — t         j                  | _        d | _        y rl   )r   rÞ   rò   rõ   r  s    r.   Úreset_colorszProxyGraphic.reset_colorsa  s   € Ü—]‘]ˆŒ
Øˆ�r-   c                óÈ   — | j                  «        t        j                  d|«      d   | _        | j                  dk  s| j                  dkD  rt        j
                  | _        y y )Nú<Lr   é   )r3  r
  r(  rò   r   rÞ   r0  s     r.   Úattribute_colorzProxyGraphic.attribute_colore  sK   € Ø×ÑÔÜ—]‘] 4¨Ó.¨qÑ1ˆŒ
Ø�:‰:˜Š>˜TŸZ™Z¨#Ò-ÜŸ™ˆD�Jð .r-   c                óª   — | j                   rGt        j                  d|«      d   }|t        | j                  «      k  r| j                  |   | _        y y y ©Nr5  r   )rë   r
  r(  r4   re   ræ   ©r  rA   rD   s      r.   Úattribute_layerzProxyGraphic.attribute_layerk  sI   € Ø�9Š9Ü—M‘M $¨Ó-¨aÑ0ˆEØ”s˜4Ÿ;™;Ó'Ò'Ø!Ÿ[™[¨Ñ/�•
ð (ð r-   c                óÈ   — | j                   r2t        j                  d|«      d   }	 | j                  |dz      | _        y y # t
        $ r |dk(  r	d| _        Y y d| _        Y y w xY w)Nr5  r   rR   iþ  ÚBYBLOCKrÞ   )rë   r
  r(  rf   rê   Ú
IndexErrorr:  s      r.   Úattribute_linetypezProxyGraphic.attribute_linetypeq  sb   € Ø�9Š9Ü—M‘M $¨Ó-¨aÑ0ˆEð.à $§¡¨u°q©yÑ 9�•ð	 øô
 ò .Ø˜E’>Ø$-�D–Mà$-�D–Mð	.ús   §A  Á A!ÁA!Á A!c                ó@   — t        j                  d|«      d   | _        y r9  )r
  r(  ró   r0  s     r.   Úattribute_markerzProxyGraphic.attribute_marker}  s   € Ü"ŸM™M¨$°Ó5°aÑ8ˆÕr-   c                óR   — t        t        j                  d|«      d   «      | _        y r9  )rI   r
  r(  rô   r0  s     r.   Úattribute_fillzProxyGraphic.attribute_fill€  s   € ÜœŸ™ t¨TÓ2°1Ñ5Ó6ˆ�	r-   c                óì   — | j                  «        t        j                  t        j                  d|«      d   «      \  }}|t        j
                  k(  rt        j                  |«      | _        y || _        y r9  )	r3  r   Údecode_raw_colorr
  r(  ÚCOLOR_TYPE_RGBÚrgb2intrõ   rò   )r  rA   r2   r3   s       r.   Úattribute_true_colorz!ProxyGraphic.attribute_true_colorƒ  sW   € Ø×ÑÔÜ×-Ñ-¬f¯m©m¸DÀ$Ó.GÈÑ.JÓK‰ˆˆeØ”6×(Ñ(Ò(Ü$Ÿn™n¨UÓ3ˆD�OàˆD�Jr-   c                ó°   — t        j                  d|«      d   }|t        j                  kD  r#t	        |dz
  t        j
                  «      | _        y || _        y )Nr5  r   l        )r
  r(  r   ÚMAX_VALID_LINEWEIGHTÚmaxrö   r÷   )r  rA   Úlws      r.   Úattribute_lineweightz!ProxyGraphic.attribute_lineweight‹  sE   € Ü�]‰]˜4 Ó& qÑ)ˆØ”×*Ñ*Ò*Ü! " {Ñ"2´E×4LÑ4LÓMˆD�Oà ˆD�Or-   c                ó@   — t        j                  d|«      d   | _        y ©Nz<dr   )r
  r(  rø   r0  s     r.   Úattribute_ltscalezProxyGraphic.attribute_ltscale’  s   € Ü—}‘} T¨4Ó0°Ñ3ˆ�r-   c                ó@   — t        j                  d|«      d   | _        y rO  )r
  r(  rù   r0  s     r.   Úattribute_thicknessz ProxyGraphic.attribute_thickness•  s   € ÜŸ™ t¨TÓ2°1Ñ5ˆ�r-   c                ó^  — t        |«      }| j                  «       }t        |j                  «       «      }|j	                  «       |d<   t        |j                  «       «      }||d<   |j                  t        «      st        |«      }|j                  |«      }||d<   | j                  d|¬«      S )NÚradiusÚ	extrusionÚcenterr³   ©Ú
dxfattribs)
r   Ú_build_dxf_attribsr   ru   Ú
read_floatÚiscloser   r   Úfrom_wcsrí   )r  rA   rq   ÚattribsrV  ÚnormalÚocss          r.   ÚcirclezProxyGraphic.circle˜  s˜   € Ü˜ÓˆØ×)Ñ)Ó+ˆÜ�b—n‘nÓ&Ó'ˆØŸM™M›Oˆ�ÑÜ�b—n‘nÓ&Ó'ˆØ%ˆ�ÑØ�~‰~œfÔ%ô
 �f“+ˆCØ—\‘\ &Ó)ˆFØ"ˆ�ÑØ�}‰}˜X°'ˆ}Ó:Ð:r-   c                ó^  — t        |«      }| j                  «       }t        |j                  «       «      }t        |j                  «       «      }t        |j                  «       «      }t	        j
                  |||«      }|j                  |d<   |j                  |d<   | j                  d|¬«      S )NrV  rT  r³   rW  )	r   rY  r   ru   r   Úfrom_3prV  rT  rí   )r  rA   rq   r]  Úp1Úp2Úp3r`  s           r.   Ú	circle_3pzProxyGraphic.circle_3p©  s�   € Ü˜ÓˆØ×)Ñ)Ó+ˆÜ�"—.‘.Ó"Ó#ˆÜ�"—.‘.Ó"Ó#ˆÜ�"—.‘.Ó"Ó#ˆÜ#×+Ñ+¨B°°BÓ7ˆØ"ŸM™Mˆ�ÑØ"ŸM™Mˆ�ÑØ�}‰}˜X°'ˆ}Ó:Ð:r-   c                ó  — t        |«      }| j                  «       }t        |j                  «       «      }|j	                  «       |d<   t        |j                  «       «      }t        |j                  «       «      }|j	                  «       }|j                  t        «      sœt        ||¬«      }t        |«      }	|	j                  |j                  t        «      «      j                  }
t        j                  |«      }|	j                  |j                  |«      «      j                  }||d<   |	j                  |«      }n$|j                  }
|
t        j                  |«      z   }||d<   |
|d<   ||d<   | j!                  d|¬«      S )	NrT  )ÚuxÚuzrU  rV  Ústart_angleÚ	end_angleÚARCrW  )r   rY  r   ru   rZ  r[  r   r   r   r\  Úto_wcsr   Ú	angle_degÚ
from_angleÚmathÚdegreesrí   )r  rA   rq   r]  rV  r^  Ú	start_vecÚsweep_angleÚucsr_  rj  Úend_vecrk  s                r.   Úcircular_arczProxyGraphic.circular_arc´  s:  € Ü˜ÓˆØ×)Ñ)Ó+ˆÜ�b—n‘nÓ&Ó'ˆØŸM™M›Oˆ�ÑÜ�b—n‘nÓ&Ó'ˆÜ˜Ÿ™Ó)Ó*ˆ	à—m‘m“oˆð �~‰~œfÔ%ä˜ vÔ.ˆCä�f“+ˆCàŸ,™, s§z¡z´&Ó'9Ó:×DÑDˆKä—o‘o kÓ2ˆGØŸ™ S§Z¡Z°Ó%8Ó9×CÑCˆIà#)ˆG�KÑ à—\‘\ &Ó)‰Fà#×-Ñ-ˆKØ#¤d§l¡l°;Ó&?Ñ?ˆIØ"ˆ�ÑØ!,ˆ�ÑØ(ˆ�ÑØ�}‰}˜U¨wˆ}Ó7Ð7r-   c                óš  — t        |«      }| j                  «       }t        |j                  «       «      }t        |j                  «       «      }t        |j                  «       «      }t	        j
                  |||«      }|j                  |d<   |j                  |d<   |j                  |d<   |j                  |d<   | j                  d|¬«      S )NrV  rT  rj  rk  rl  rW  )r   rY  r   ru   r   rb  rV  rT  rj  rk  rí   )r  rA   rq   r]  rc  rd  re  Úarcs           r.   Úcircular_arc_3pzProxyGraphic.circular_arc_3pÖ  s¬   € Ü˜ÓˆØ×)Ñ)Ó+ˆÜ�"—.‘.Ó"Ó#ˆÜ�"—.‘.Ó"Ó#ˆÜ�"—.‘.Ó"Ó#ˆä×%Ñ% b¨"¨bÓ1ˆØŸJ™Jˆ�ÑØŸJ™Jˆ�ÑØ!$§¡ˆ�ÑØ"Ÿ}™}ˆ�ÑØ�}‰}˜U¨wˆ}Ó7Ð7r-   c                ó   — t        |«      }| j                  «       }t        |j                  «       «      |d<   t        |j                  «       «      }||d<   |j	                  «       }|j	                  «       }||z  |d<   |j	                  «       }|j	                  «       }|j	                  «       }	t        |«      }
|
j                  t        j                  |	|«      «      }||d<   ||d<   ||d<   | j                  d|¬«      S )	NrV  rU  ÚratioÚ
major_axisÚstart_paramÚ	end_paramÚELLIPSErW  )	r   rY  r   ru   rZ  r   rm  ro  rí   )r  rA   rq   r]  rU  Úmajor_axis_lengthÚminor_axis_lengthr}  r~  Úmajor_axis_angler_  r|  s               r.   Úelliptic_arczProxyGraphic.elliptic_arcä  sê   € Ü˜ÓˆØ×)Ñ)Ó+ˆÜ  §¡Ó!1Ó2ˆ�ÑÜ˜Ÿ™Ó)Ó*ˆ	Ø(ˆ�ÑØŸM™M›OÐØŸM™M›OÐØ,Ð/@Ñ@ˆ�ÑØ—m‘m“oˆØ—M‘M“Oˆ	ØŸ=™=›?Ðä�)‹nˆØ—Z‘Z¤§¡Ð0@ÐBSÓ TÓUˆ
Ø *ˆ�ÑØ!,ˆ�ÑØ(ˆ�ÑØ�}‰}˜Y°7ˆ}Ó;Ð;r-   c                óò   — t        d| j                  d|¬«      «      }t        |«      }|j                  j	                  t        j                  |«      d¬«       |rt        dd|«      |j                  _	        |S )Nr#   ÚHATCHrW  T)Ú	is_closedr   )
r   rí   Ú_get_elevationÚpathsÚadd_polyline_pathr   Úgenerater   rã   Ú	elevation)r  r„   r]  Úhatchr‹  s        r.   Ú_filled_polygonzProxyGraphic._filled_polygonø  sb   € Ü�W˜dŸm™m¨GÀ˜mÓHÓIˆÜ" 8Ó,ˆ	Ø�‰×%Ñ%¤d§m¡m°HÓ&=ÈÐ%ÔNÙÜ"& q¨!¨YÓ"7ˆE�I‰IÔØˆr-   F)Úcloser^  c               ó�  — | j                  «       }t        |«      }|dk(  s|dk(  r2|d   j                  |d   «      r|d   |d<   | j                  d|¬«      S t	        |«      st
        j                  |d<   t        d| j                  d	|¬«      «      }|j                  |«       |r|j                  «        |j                  «        |S )
NrO   rR   r   ÚlocationÚPOINTrW  rK   r"   r·   )rY  r4   r[  rí   Úis_2d_polyliner   ÚPOLYLINE_3D_POLYLINEr   Úappend_verticesrŽ  Ú
new_seqend)r  r„   rŽ  r^  r]  rr   Úpolylines          r.   Ú	_polylinezProxyGraphic._polyline   s»   € ð ×)Ñ)Ó+ˆÜ�H“ˆØ�AŠ:˜% 1š*¨°!©×)<Ñ)<¸XÀa¹[Ô)IØ"*¨1¡+ˆG�JÑØ—=‘= °W�=Ó=Ð=Ü˜hÔ'Ü$×9Ñ9ˆG�GÑÜ˜
 D§M¡M°*È MÓ$QÓRˆØ× Ñ  Ô*ÙØ�N‰NÔØ×ÑÔØˆr-   c                óT   — | j                  |d¬«      \  }}| j                  ||¬«      S )NT©Úload_normal)r^  ©Ú_load_verticesr—  ©r  rA   r„   r^  s       r.   Úpolyline_with_normalsz"ProxyGraphic.polyline_with_normals  s1   € ð  ×.Ñ.¨tÀÐ.ÓFÑˆ�&Ø�~‰~˜h¨vˆ~Ó6Ð6r-   c                óP   — | j                  |d¬«      \  }}| j                  |«      S )NFr™  r›  r�  s       r.   r–  zProxyGraphic.polyline  s-   € ð  ×.Ñ.¨tÀÐ.ÓGÑˆ�&Ø�~‰~˜hÓ'Ð'r-   c                ó¬   — | j                  |d¬«      \  }}| j                  r | j                  || j                  «       «      S | j	                  |d¬«      S )NFr™  T)rŽ  )rœ  rô   r�  rY  r—  r�  s       r.   ÚpolygonzProxyGraphic.polygon  sR   € à×.Ñ.¨tÀÐ.ÓGÑˆ�&Ø�9Š9Ø×'Ñ'¨°$×2IÑ2IÓ2KÓLÐLØ�~‰~˜h¨dˆ~Ó3Ð3r-   c                ó”  — | j                  «       }d}d}d}d}t        |«      }|j                  «       }|j                  «       }	|	dz  r|j	                  «       |d<   |	dz  r|j	                  «       |d<   |	dz  r|j	                  «       |d<   |	d	z  rt        |j	                  d
«      «      |d<   |	dz  rd}|j                  «       }
|
dk  ry |	dz  r|j                  «       }| j                  dk\  r*|	dz  r|j                  «       }|	dz  r|j                  «       }|j                  d«      g}|d   }t        |
d	z
  «      D ]A  }|j                  |d   ¬«      }|j                  |d	   ¬«      }||f}|j                  |«       ŒC t        |«      D �cg c]  }|j	                  «       ‘Œ }}t        |«      D �cg c]  }|j                  «       ‘Œ }}t        |«      D �cg c]"  }|j	                  «       |j	                  «       f‘Œ$ }}t        |«      dk(  rt        t        d|
«      «      }t        |«      dk(  rt        t        d|
«      «      }g }t        |||«      D ](  \  }}}|j                  |d   |d	   |d   |d	   |f«       Œ* t!        d| j#                  d|¬«      «      }|j%                  |«       ||_        |S c c}w c c}w c c}w )Nr   FrU   Úconst_widthr“   r‹  rR   rù   rO   r�   rU  i   Tr›   ÚAC1024ra   rX   r  )Údefault)r   r   r$   rÒ   rW  )rY  r   Úread_unsigned_longÚread_bit_shortÚread_bit_doubler   Úread_bit_longr=   Úread_raw_doublerm   Úread_bit_double_defaultr*  r4   rþ   r   Úzipr   rí   Ú
set_pointsÚclosed)r  rA   r]  Ú
num_bulgesÚnum_vertex_idsÚ	num_widthr†  rq   Únum_data_bytesÚflagÚ
num_pointsr„   Ú
prev_pointrp   ÚxÚyÚbulgesÚ
vertex_idsÚwidthsÚpointsÚvÚwÚbÚ
lwpolylines                           r.   r¿  zProxyGraphic.lwpolyline%  sã  € à×)Ñ)Ó+ˆØˆ
ØˆØˆ	Øˆ	Ü�t‹_ˆà ×3Ñ3Ó5ˆØ×%Ñ%Ó'ˆØ�!Š8Ø%'×%7Ñ%7Ó%9ˆG�MÑ"Ø�!Š8Ø#%×#5Ñ#5Ó#7ˆG�KÑ Ø�!Š8Ø#%×#5Ñ#5Ó#7ˆG�KÑ Ø�!Š8Ü#'¨×(:Ñ(:¸1Ó(=Ó#>ˆG�KÑ Ø�#Š:ØˆIØ×%Ñ%Ó'ˆ
Ø˜Š?Øà�"Š9Ø×)Ñ)Ó+ˆJà�?‰?˜hÒ&Ø�dŠ{Ø!#×!1Ñ!1Ó!3�Ø�bŠyØ×,Ñ,Ó.�	ð 02×/AÑ/AÀ!Ó/DÐ.EˆØ˜b‘\ˆ
Ü�z A‘~Ö&ˆAØ×*Ñ*°:¸a±=Ð*ÓAˆAØ×*Ñ*°:¸a±=Ð*ÓAˆAØ˜Q˜ˆJØ�O‰O˜JÕ'ð	 'ô
 >CÀ:Ô=NÓOÑ=N¸˜r×1Ñ1Õ3Ð=NˆÐOÜ=BÀ>Ô=RÓ SÑ=R¸ ×!1Ñ!1Õ!3Ð=Rˆ
Ð SäBGÈ	ÔBRó-
ÙBR¸QˆR×ÑÓ! 2×#5Ñ#5Ó#7Ò8ÐBRð 	ð -
ô ˆv‹;˜!ÒÜœ&  JÓ/Ó0ˆFÜˆv‹;˜!ÒÜœ& ¨Ó4Ó5ˆFØ(*ˆÜ˜8 V¨VÖ4‰GˆAˆq�!Ø�M‰M˜1˜Q™4  1¡ q¨¡t¨Q¨q©T°1Ð5Õ6ð 5ä˜,¨¯©°lÈw¨Ó(WÓXˆ
Ø×Ñ˜fÔ%Ø%ˆ
ÔØÐùò PùÚ Sùò-
s   ÆJ;Æ5K Ç'Kc                ód  — t         j                  d«       t        |«      }|j                  d«      \  }}|dz
  |z  |dz
  |z  z   }|dz
  |dz
  z  }||z  }t	        |«      D �cg c]  }t        |j                  «       «      ‘Œ }	}t        «       }
	 t        |||d¬«      }
|
r	 | j                  «       }||d<   ||d<   t        j                  |d	<   t        d
| j                  d|¬«      «      }|j!                  |	«       |S c c}w # t        j                  $ r t         j                  d«       Y Œ�w xY w)Nz4Untested proxy graphic entity: MESH - Need examples!r  rO   r   ©r‡   z;Structure error while parsing traits for MESH proxy graphicÚm_countÚn_countrK   r    r·   rW  )r   Úwarningr   Úread_structrm   r   ru   rw   rŒ   r
  ÚerrorrY  r   ÚPOLYLINE_3D_POLYMESHr   rí   r”  )r  rA   rq   ÚrowsÚcolumnsÚtotal_edge_countÚtotal_face_countÚtotal_vertex_countrp   r„   rˆ   r]  Úpolymeshs                r.   ÚmeshzProxyGraphic.mesh`  sC  € ô 	�‰ÐMÔNÜ˜ÓˆØŸ™ uÓ-‰ˆˆgØ  1™H¨Ñ/°7¸Q±;À$Ñ2FÑFÐØ  1™H¨°1©Ñ5ÐØ! G™^ÐÜ49Ð:LÔ4MÓNÑ4M¨q”D˜Ÿ™Ó)Õ*Ð4MˆÐNä“ˆð	XÜ%ØÐ$Ð&6ÀQôˆFñ
 àð ×)Ñ)Ó+ˆØ!ˆ�	ÑØ$ˆ�	ÑÜ ×5Ñ5ˆ�ÑÜ˜
 D§M¡M°*È MÓ$QÓRˆØ× Ñ  Ô*Øˆùò) Oøô �|‰|ò 	XÜ�L‰LÐVÖWð	Xús   Á# C?ÂD Ä(D/Ä.D/c                óî  — t        |«      }| j                  «       }t        j                  |d<   t	        d| j                  d|¬«      «      }|j                  «       }t        |«      D �cg c]  }t        |j                  «       «      ‘Œ }}|j                  «       }g }	d}
d}d}|
|k  rzt        |j                  «       «      }|
d|z   z  }
t        |«      D �cg c]  }|j                  «       ‘Œ }}|D �cg c]  }||   ‘Œ	 }}|dz  }||z  }|	j                  |«       |
|k  rŒzt        «       }	 t        |||d¬«      }|j%                  |	«       |rY|j'                  d	«      }|rF|j'                  d
«      }|r3t"        j)                  d«       t+        |t,        «      sJ ‚t/        ||«       |j1                  «        |S c c}w c c}w c c}w # t        j                   $ r t"        j!                  d«       Y Œ·w xY w)NrK   r!   r·   rW  r   rO   rÁ  z<Structure error while parsing traits for SHELL proxy graphicr‚   r   zLUntested proxy graphic feature for SHELL: apply face colors - Need examples!)r   rY  r   ÚPOLYLINE_POLYFACEr   rí   rn   rm   r   ru   ÚabsÚread_signed_longr*  rw   rŒ   r
  rÆ  r   Úappend_facesÚgetrÄ  r#  rþ   Ú_apply_face_colorsÚoptimize)r  rA   rq   r]  ÚpolyfacerÌ  rp   r„   Úface_entry_countr‚   Ú
read_countrË  rÊ  r…   Úface_indicesrD   Úfacerˆ   Úface_traitsÚface_colorss                       r.   ÚshellzProxyGraphic.shell‚  sö  € ô ˜ÓˆØ×)Ñ)Ó+ˆÜ ×2Ñ2ˆ�ÑÜ˜
 D§M¡M°*È MÓ$QÓRˆØŸ\™\›^ÐÜ49Ð:LÔ4MÓNÑ4M¨q”D˜Ÿ™Ó)Õ*Ð4MˆÐNØŸ<™<›>ÐØˆØˆ
Ø !ÐØ !ÐØÐ+Ò+Ü˜R×0Ñ0Ó2Ó3ˆJØ˜!˜j™.Ñ(ˆJÜ49¸*Ô4EÓFÑ4E¨q˜BŸL™L�NÐ4EˆLÐFÙ1=Ó>±¨�H˜U“O°ˆDÐ>Ø Ñ!ÐØ 
Ñ*ÐØ�L‰L˜Ôð Ð+Ó+ô “ˆð	YÜ%ØÐ$Ð&6ÀQôˆFð
 	×Ñ˜eÔ$ÙØ Ÿ*™* WÓ-ˆKÙØ)Ÿo™o¨hÓ7�ÙÜ—N‘Nð=ôô & k´4Ô8Ð8Ð8Ü& x°Ô=Ø×ÑÔØˆùòG Oùò GùÚ>øô �|‰|ò 	YÜ�L‰LÐWÖXð	Yús$   Á) F:ÃF?Ã3GÄ-G	 Ç	(G4Ç3G4c                ó(   — | j                  |d¬«      S )NF©Úunicode©Ú_textr0  s     r.   ÚtextzProxyGraphic.text°  s   € Ø�z‰z˜$¨ˆzÓ.Ð.r-   c                ó(   — | j                  |d¬«      S )NTrà  râ  r0  s     r.   Úunicode_textzProxyGraphic.unicode_text³  s   € Ø�z‰z˜$¨ˆzÓ-Ð-r-   c           	     óø  — t        |«      }t        |j                  «       «      }t        |j                  «       «      }t        |j                  «       «      }|j                  d«      \  }}}	d}
|r	 |j	                  «       }
n	 |j                  | j                  «      }
| j                  «       }||d<   |
|d<   ||d<   ||d	<   |j                  |d
<   t        j                  |	«      |d<   ||d<   | j                  d|¬«      S # t
        $ r+}t        j                  dt        |«      › �«       Y d }~Œ’d }~ww xY w# t
        $ r8}t        j                  d| j                  › dt        |«      › �«       Y d }~ŒÖd }~ww xY w)Nú<3dÚ z"ProxyGraphic._text(unicode=True); z,ProxyGraphic._text(unicode=False); encoding=ú; Úinserträ  ÚheightÚwidthÚrotationÚobliquerU  r»   rW  )r   r   ru   rÅ  Úread_padded_unicode_stringÚUnicodeDecodeErrorr   r!  r  Úread_padded_stringrñ   rY  rn  rp  rq  rí   )r  rA   rá  rq   Ústart_pointr^  Útext_directionrì  Úwidth_factorÚoblique_anglerä  r  r]  s                r.   rã  zProxyGraphic._text¶  sn  € Ü˜ÓˆÜ˜2Ÿ>™>Ó+Ó,ˆÜ�b—n‘nÓ&Ó'ˆÜ˜bŸn™nÓ.Ó/ˆØ.0¯n©n¸UÓ.CÑ+ˆ�˜mØˆÙðLØ×4Ñ4Ó6‘ðØ×,Ñ,¨T¯]©]Ó;�ð
 ×)Ñ)Ó+ˆØ'ˆ�ÑØˆ�‰Ø"ˆ�ÑØ'ˆ�ÑØ,×6Ñ6ˆ�
ÑÜ!Ÿ\™\¨-Ó8ˆ�	ÑØ%ˆ�ÑØ�}‰}˜V°ˆ}Ó8Ð8øô# &ò LÜ—‘ÐAÄ#ÀaÃ&ÀÐJ×KÑKûðLûô
 &ò Ü—‘ØBÀ4Ç=Á=À/ÐQSÔTWÐXYÓTZÐS[Ð\÷ñ ûðús0   Á1D ÂD8 Ä	D5Ä
!D0Ä0D5Ä8	E9Å.E4Å4E9c           	     óº  — | j                   }t        |«      }t        |j                  «       «      }t        |j                  «       «      }t        |j                  «       «      }d}	 |j	                  |¬«      }|j                  d«      \  }	}
|j                  d«      \  }}}}|j                  d«      \  }}}}}d}d}	 |j	                  |¬«      }|j	                  |¬«      }| j                  «       }||d<   ||d<   ||d<   ||d<   |j                  |d<   t        j                  |«      |d<   | j                  ||«      |d<   d|z  d|z  z   |d<   ||d<   | j                  d|¬«      S # t
        $ r/}t        j                  d|› dt        |«      › �«       Y d }~�Œ#d }~ww xY w# t
        $ r.}t        j                  d	|› d
t        |«      › �«       Y d }~Œód }~ww xY w)Nré  )rñ   z%ProxyGraphic.text2(); text; encoding=rê  ú<2lú<4dú<5LúTXT.SHXz'ProxyGraphic.text2(); fonts; encoding='z'; rë  rä  rì  rí  rî  rï  r  rR   rU   Útext_generation_flagrU  r»   rW  )rñ   r   r   ru   rò  rñ  r   r!  r  rÅ  rY  rn  rp  rq  Ú
_get_stylerí   )r  rA   rñ   rq   ró  r^  rô  rä  r  Úignore_length_of_stringÚrawrì  rõ  rö  Útracking_percentageÚis_backwardsÚis_upside_downÚis_verticalÚis_underlineÚis_overlineÚfont_filenameÚbig_font_filenamer]  s                          r.   Útext2zProxyGraphic.text2Ó  s  € Ø—=‘=ˆÜ˜ÓˆÜ˜2Ÿ>™>Ó+Ó,ˆÜ�b—n‘nÓ&Ó'ˆÜ˜bŸn™nÓ.Ó/ˆØˆð	WØ×(Ñ(°(Ð(Ó;ˆDð (*§~¡~°eÓ'<Ñ$Ð ð �N‰N˜5Ó!ñ	
ØØØØð �N‰N˜5Ó!ñ	
ØØØØØà&ˆØ!#Ðð	Ø×1Ñ1¸8Ð1ÓDˆMØ "× 5Ñ 5¸xÐ 5Ó HÐð ×)Ñ)Ó+ˆØ'ˆ�ÑØˆ�‰Ø"ˆ�ÑØ'ˆ�ÑØ,×6Ñ6ˆ�
ÑÜ!Ÿ\™\¨-Ó8ˆ�	ÑØŸ?™?¨=Ð:KÓLˆ�ÑØ*+¨lÑ*:¸QÀÑ=OÑ*OˆÐ&Ñ'Ø%ˆ�ÑØ�}‰}˜V°ˆ}Ó8Ð8øôK "ò 	WÜ�L‰LÐ@ÀÀ
È"ÌSÐQRËVÈHÐU×VÒVûð	Wûô, "ò 	Ü�L‰LØ9¸(¸À3ÄsÈ1ÃvÀhÐO÷ñ ûð	ús0   Á&E( Â>$F# Å(	F Å1$FÆF Æ#	GÆ,$GÇGc                óÚ  — t        |«      }t        |j                  «       «      }t        |j                  «       «      }t        |j                  «       «      }d}	 |j                  «       }|j                  d«      \  }}	|j                  d«      \  }
}}}|j                  d«      \  }}}}}|j                  d«      \  }}}}d}d}d}	 |j                  «       }|j                  «       }|j                  «       }| j                  «       }||d	<   ||d
<   |
|d<   ||d<   |j                  |d<   t        j                  |«      |d<   | j                  ||«      |d<   d|z  d|z  z   |d<   ||d<   | j                  d|¬«      S # t        $ r,}t
        j                  dt        |«      › �«       Y d }~�ŒDd }~ww xY w# t        $ r+}t
        j                  dt        |«      › �«       Y d }~Œíd }~ww xY w)Nré  z$ProxyGraphic.unicode_text2(); text; rø  rù  rú  z<4Lrû  z%ProxyGraphic.unicode_text2(); fonts; rë  rä  rì  rí  rî  rï  r  rR   rU   rü  rU  r»   rW  )r   r   ru   rð  rñ  r   r!  r  rÅ  rY  rn  rp  rq  rý  rí   )r  rA   rq   ró  r^  rô  rä  r  rþ  Ú
ignore_rawrì  rõ  rö  r   r  r  r  r  r  Úis_boldÚ	is_italicÚcharsetÚpitchÚ	type_facer  r  r]  s                              r.   Úunicode_text2zProxyGraphic.unicode_text2  s  € Ü˜ÓˆÜ˜2Ÿ>™>Ó+Ó,ˆÜ�b—n‘nÓ&Ó'ˆÜ˜bŸn™nÓ.Ó/ˆØˆð	JØ×0Ñ0Ó2ˆDð /1¯n©n¸UÓ.CÑ+Ð ð �N‰N˜5Ó!ñ	
ØØØØð �N‰N˜5Ó!ñ	
ØØØØØà-/¯^©^¸EÓ-BÑ*ˆ�˜G Uàˆ	Ø&ˆØ!#Ðð	KØ×5Ñ5Ó7ˆIØ×9Ñ9Ó;ˆMØ "× =Ñ =Ó ?Ðð ×)Ñ)Ó+ˆØ'ˆ�ÑØˆ�‰Ø"ˆ�ÑØ'ˆ�ÑØ,×6Ñ6ˆ�
ÑÜ!Ÿ\™\¨-Ó8ˆ�	ÑØŸ?™?¨=Ð:KÓLˆ�ÑØ*+¨lÑ*:¸QÀÑ=OÑ*OˆÐ&Ñ'Ø%ˆ�ÑØ�}‰}˜V°ˆ}Ó8Ð8øôO "ò 	JÜ�L‰LÐ?ÄÀAÃ¸xÐH×IÒIûð	Jûô4 "ò 	KÜ�L‰LÐ@ÄÀQÃÀÐI×JÑJûð	Kús0   ÁE> Ã0F6 Å>	F3Æ!F.Æ.F3Æ6	G*Æ?!G%Ç%G*c                ó&   — | j                  |d«      S )Nr½   ©Ú_xliner0  s     r.   ÚxlinezProxyGraphic.xline4  s   € Ø�{‰{˜4 Ó)Ð)r-   c                ó&   — | j                  |d«      S )Nr¾   r  r0  s     r.   ÚrayzProxyGraphic.ray7  s   € Ø�{‰{˜4 Ó'Ð'r-   c                ó"  — t         j                  d«       t        |«      }| j                  «       }t	        |j                  «       «      }t	        |j                  «       «      }||d<   ||z
  j                  «       |d<   | j                  ||¬«      S )Nz9Untested proxy graphic entity: RAY/XLINE - Need examples!ÚstartÚunit_vectorrW  )r   rÄ  r   rY  r   ru   Ú	normalizerí   )r  rA   r  rq   r]  ró  Úother_points          r.   r  zProxyGraphic._xline:  s~   € Ü�‰ÐRÔSÜ˜ÓˆØ×)Ñ)Ó+ˆÜ˜2Ÿ>™>Ó+Ó,ˆÜ˜2Ÿ>™>Ó+Ó,ˆØ&ˆ�ÑØ"-°Ñ";×!FÑ!FÓ!Hˆ�ÑØ�}‰}˜U¨wˆ}Ó7Ð7r-   c                óR  — | j                   j                  |«       || j                  v r| j                  |   }|S |}| j                  r^| j                  j                  j                  |«      s9| j                  j                  j                  |||dœ¬«       || j                  |<   |S )N)r   ÚbigfontrW  )rü   Úaddrú   rë   rÿ   Ú	has_entryrì   )r  r   r  r  s       r.   rý  zProxyGraphic._get_styleD  s˜   € Ø×Ñ×Ñ Ô%Ø�4—?‘?Ñ"Ø—O‘O DÑ)ˆEð ˆð ˆEØ�yŠy §¡×!1Ñ!1×!;Ñ!;¸EÔ!BØ—	‘	× Ñ ×$Ñ$Ø¨d¸wÑ%Gð %ô ð ).�—‘ Ñ%Øˆr-   c                óô   — t         }t        | «      }|j                  «       }|r|dz  }g }|dkD  r4|j                  t	        |j                  d«      «      «       |dz  }|dkD  rŒ4|r|j                  «       }||fS )NrO   r   rè  )r   r   rn   r*  r   rÅ  r/  )rA   rš  r^  rq   rr   r„   s         r.   rœ  zProxyGraphic._load_verticesQ  s{   € äˆÜ˜ÓˆØ—‘“ˆÙØ�Q‰JˆEØ!ˆØ�aŠiØ�O‰OœD §¡°Ó!6Ó7Ô8Ø�Q‰JˆEð �a‹iñ Ø—\‘\“^ˆFØ˜ÐÐr-   c                ó´  — t        «       }| j                  dk7  r| j                  |d<   | j                  t        j                  k7  r| j                  |d<   | j
                  dk7  r| j
                  |d<   | j                  t        j                  k7  r| j                  |d<   | j                  dk7  r| j                  |d<   | j                  �| j                  |d	<   |S )
NrÝ   ræ   rò   rÞ   rê   r÷   rß   rø   rõ   )
rw   ræ   rò   r   rÞ   rê   r÷   rö   rø   rõ   )r  r]  s     r.   rY  zProxyGraphic._build_dxf_attribs`  s²   € Ü"&£&ˆØ�:‰:˜ÒØ#Ÿz™zˆG�GÑØ�:‰:œŸ™Ò&Ø#Ÿz™zˆG�GÑØ�=‰=˜IÒ%Ø"&§-¡-ˆG�JÑØ�?‰?œe×6Ñ6Ò6Ø$(§O¡OˆG�LÑ!Ø�<‰<˜3ÒØ!%§¡ˆG�IÑØ�?‰?Ð&Ø$(§O¡OˆG�LÑ!Øˆr-   rl   ©rA   Úbytesr  zOptional[Drawing])ÚreturnzIterable[tuple[int, int, str]])r$  zIterator[DXFGraphic])r$  zIterable[DXFGraphic]©rA   r#  )r„   ú
list[Vec3])F)rA   r#  rá  rI   )rA   r#  r  r  )r   r  r  r  r$  r  )rA   r#  r$  ztuple[list[Vec3], Vec3])r$  zdict[str, Any])0r)   r*   r+   r   ÚDXF2000r  r  r  r  r  r-  r1  r3  r7  r;  r?  rA  rC  rH  rM  rP  rR  r`  rf  rv  ry  rƒ  r�  r   r—  rž  r–  r¡  r¿  rÎ  rÞ  rä  ræ  rã  r  r  r  r  r  rý  Ústaticmethodrœ  rY  r,   r-   r.   rÚ   rÚ   ú   s  „ à48ð!/ØHMÏÉñ!/Øð!/Ø 1ó!/óF
ó+óFó!óF ó òó'ó0ó
.ó9ó7óó!ó4ó6ó;ó"	;ó 8óD8ó<ò(ð 8=ÀVõ ó$7ó(ó4ó9óv óD,ó\/ó.ô9ó:.9ó`/9ób*ó(ó8óð ó ó ð ôr-   rÚ   c                  ó    ‡ — e Zd Zddˆ fd„Zd„ Zd„ Zdd„Zdd„Zd„ Zdd„Z	dˆ fd„Z
dˆ fd	„Zdˆ fd
„Zdˆ fd„Zdˆ fd„Zdˆ fd„Zdˆ fd„Zˆ xZS )ÚProxyGraphicDebuggerc                ó`   •— t         t        | �  ||«       |€t        j                  }|| _        y rl   )Úsuperr*  r  ÚsysÚstdoutÚ_debug_stream)r  rA   r  Údebug_streamÚ	__class__s       €r.   r  zProxyGraphicDebugger.__init__r  s,   ø€ ÜÔ" DÑ2°4¸Ô=ØÐÜŸ:™:ˆLØ)ˆÕr-   c                óH  — | j                  dd¬«       | j                  d«       | j                  d¬«       | j                  «       D ]G  }| j                  d|j                  «       › �«       | j                  d|j	                  «       › d�«       ŒI | j                  d¬	«       y )
NÚ=F©ÚcharÚnewlinezCreate virtual DXF entities:©r6  z
  * z  * Ú
©r5  )Úlog_separatorÚlog_messager  ÚdxftypeÚgraphic_properties)r  r  s     r.   Úlog_entitiesz!ProxyGraphicDebugger.log_entitiesx  s™   € Ø×Ñ ¨UÐÔ3Ø×ÑÐ7Ô8Ø×Ñ 5ÐÔ)Ø×+Ñ+Ö-ˆFØ×Ñ˜v f§n¡nÓ&6Ð%7Ð8Ô9Ø×Ñ˜t F×$=Ñ$=Ó$?Ð#@ÀÐCÕDð .ð 	×Ñ ÐÕ$r-   c           	     óú   — | j                  dd¬«       | j                  d«       | j                  d¬«       | j                  «       D ]   \  }}}| j                  d|› d|› d|› �«       Œ" | j                  d¬	«       y )
Nr3  Fr4  zRaw proxy commands:r7  z	Command: z Index: z Size: r9  )r:  r;  r  )r  rD   r  Úcmds       r.   Úlog_commandsz!ProxyGraphicDebugger.log_commands�  s~   € Ø×Ñ ¨UÐÔ3Ø×ÑÐ.Ô/Ø×Ñ 5ÐÔ)Ø $§	¡	¦ÑˆE�4˜Ø×Ñ˜y¨¨¨X°e°W¸GÀDÀ6ÐJÕKð !,à×Ñ ÐÕ$r-   c                óT   — | j                  |dz  «       |r| j                  d«       y y )NéO   ré  )r;  )r  r5  r6  s      r.   r:  z"ProxyGraphicDebugger.log_separator‰  s*   € Ø×Ñ˜ ™Ô#ÙØ×Ñ˜RÕ ð r-   c                ó2   — t        || j                  ¬«       y )N)Úfile)Úprintr/  )r  Úmsgs     r.   r;  z ProxyGraphicDebugger.log_messageŽ  s   € Üˆc˜×*Ñ*Ö+r-   c                óH   — | j                  d| j                  «       z   «       y )Nz> )r;  Ú	get_stater  s    r.   Ú	log_statezProxyGraphicDebugger.log_state‘  s   € Ø×Ñ˜ §¡Ó 0Ñ0Õ1r-   c                ó¼   — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �S )Nzly: 'z', clr: z, lt: z, lw: z, ltscale: z, rgb: z, fill: )ræ   rò   rê   r÷   rø   rõ   rô   r  s    r.   rI  zProxyGraphicDebugger.get_state”  s^   € à�D—J‘J�<˜x¨¯
©
 |°6¸$¿-¹-¸ð IØ—?‘?Ð# ;¨t¯|©|¨nð =Ø—O‘OÐ$ H¨T¯Y©Y¨Kð9ð	
r-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set COLOR)r;  r,  r7  rJ  ©r  rA   r1  s     €r.   r7  z$ProxyGraphicDebugger.attribute_color›  ó)   ø€ Ø×ÑÐ-Ô.Ü‰Ñ Ô%Ø�‰Õr-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set LAYER)r;  r,  r;  rJ  rM  s     €r.   r;  z$ProxyGraphicDebugger.attribute_layer   rN  r-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set LINETYPE)r;  r,  r?  rJ  rM  s     €r.   r?  z'ProxyGraphicDebugger.attribute_linetype¥  s)   ø€ Ø×ÑÐ0Ô1Ü‰Ñ" 4Ô(Ø�‰Õr-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set TRUE-COLOR)r;  r,  rH  rJ  rM  s     €r.   rH  z)ProxyGraphicDebugger.attribute_true_colorª  ó)   ø€ Ø×ÑÐ2Ô3Ü‰Ñ$ TÔ*Ø�‰Õr-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set LINEWEIGHT)r;  r,  rM  rJ  rM  s     €r.   rM  z)ProxyGraphicDebugger.attribute_lineweight¯  rR  r-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set LTSCALE)r;  r,  rP  rJ  rM  s     €r.   rP  z&ProxyGraphicDebugger.attribute_ltscale´  s)   ø€ Ø×ÑÐ/Ô0Ü‰Ñ! $Ô'Ø�‰Õr-   c                óf   •— | j                  d«       t        ‰| �	  |«       | j                  «        y )NzCommand: set FILL)r;  r,  rC  rJ  rM  s     €r.   rC  z#ProxyGraphicDebugger.attribute_fill¹  s)   ø€ Ø×ÑÐ,Ô-Ü‰Ñ˜tÔ$Ø�‰Õr-   )NNr"  )Ú-T)rG  r  )r$  r  r%  )r)   r*   r+   r  r>  rA  r:  r;  rJ  rI  r7  r;  r?  rH  rM  rP  rC  Ú__classcell__)r1  s   @r.   r*  r*  q  sN   ø„ ö*ò%ò%ó!ó
,ò2ó
õõ
õ
õ
õ
õ
÷
ñ r-   r*  c                ó¦   — t        |«      }|dk(  ry d}| j                  D ]/  }|j                  sŒ||   |j                  _        |dz  }||k\  sŒ/ y  y )Nr   rO   )r4   r„   Úis_face_recordrã   rò   )r×  r   Úcolor_countrD   Úvertexs        r.   rÕ  rÕ  ¿  sX   € Ü˜6“{€KØ�aÒØà€EØ×#Ô#ˆØ× Ó Ø% e™}ˆF�J‰JÔØ�Q‰JˆEØ˜Ó#Ùñ $r-   c                ó&   — | r| d   j                   S y)Nr   rà   )Úz)r„   s    r.   r‡  r‡  Í  s   € ÙØ˜‰{�}‰}ÐØr-   c                óh   ‡— t        | «      dk  ry| d   j                  Št        ˆfd„| D «       «      S )NrO   Tr   c              3  ó^   •K  — | ]$  }t        j                  ‰|j                  «      –— Œ& y ­wrl   )rp  r[  r]  )rå   r¼  r]  s     €r.   rç   z!is_2d_polyline.<locals>.<genexpr>×  s!   øè ø€ Ð6©X¨Œt�|‰|˜A˜qŸs™s×#©Xùs   ƒ*-)r4   r]  Úall)r„   r]  s    @r.   r’  r’  Ó  s0   ø€ Ü
ˆ8ƒ}�qÒØØ�‰�‰€AÜÓ6©XÓ6Ó6Ð6r-   )é    i6  )r6   r   r7   Úintr8   rb  r$  zOptional[bytes])
rA   r#  rB   r   r7   rb  r8   rb  r$  ÚNone)rK   rb  r$  rI   )
rq   r   rz   zSequence[str]r{   rb  rr   rb  r$  rw   )rq   r   r…   rb  r†   rb  r‡   rb  )r×  r!   r   z	list[int]r$  rc  )r$  Úfloat)r„   r&  r$  rI   )JÚ
__future__r   Útypingr   r   r   r   r   r	   r
   r-  r
  rp  Úenumr   Ú	itertoolsr   Úezdxf.lldxfr   Úezdxf.tools.binarydatar   r   r   r%   r   Ú
ezdxf.mathr   r   r   r   r   r   r   r   r   Úezdxf.entitiesr   ÚloggingÚezdxf.documentr   Úezdxf.lldxf.tagsr   Úezdxf.lldxf.tagwriterr   r   r    r!   r"   r#   r$   Ú	getLoggerr   r@   r  r(   r;   rF   rL   rP   rS   rV   rY   r\   r_   rb   rx   r   rŒ   rŽ   rÚ   r*  rÕ  r‡  r’  r,   r-   r.   Ú<module>rr     sÙ  ðõ #÷÷ ñ ó Û Û Ý Ý Ý ß IÑ IÝ ÷
÷ 
õ 
õ #Û áÝ&Ý%Ý7÷÷ ð 
ˆ×	Ñ	˜7Ó	#€à€
ô	˜	ô 	ð
 :=ð?Ø
ð?Ø ð?Ø36ð?àó?ð Øð	Ø
ðà ðð ðð ð	ð
 
óó* ó ó ó ó ó ó ó ð
 ! $Ð'Ø  $Ð'Ø&¨Ð-Ø" DÐ)Ø,¨dÐ3Ø" EÐ*ñ€ðØðØ(ðØ69ðØBEðà	óð,4Øð4Ø #ð4Ø14ð4ØDGó4ôn'˜ô '÷Tt	ñ t	ônK˜<ô Kó\óô7r-   