
    Og                       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__     W/var/www/html/public_html/myphp/venv/lib/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   sc    
 ==Y'?=@88y  			K 
 %($4388K >$>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     %++---YF{f-E
&.!$uuz/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51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'    05e=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      st    6> 6D + ,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    * VFJz"*H	
w Jz"*F	
w a||~<(vH!,/49,4G'/0D)*'# &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                   rt9        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%uyy~~L    "c              3  H   K   | ]  }|j                   j                    y wrl   r   )r   linetypes     r.   r   z(ProxyGraphic.__init__.<locals>.<genexpr>  s     !X(,,"3"3!Xr   )!_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__   sO    	",/#..Z)-5==)HXg--

&!"	)-$77! #!#$&*.&(+(*99L499;K;KLLDK!!XDIIDWDW!XXDN<@II<L<L38				.DO !II..DM 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! ,,UDLLOKD%/(/44 t##TME c&k!  /&ug./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F8$DEE	Fs.   A  A 	A?AAc              #  p   K    fd} j                   } j                  }|t        |      k  rt        j                  d j                  |      \  }}	 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  zUnsupported Type Code: r   Fz!Unsupported feature ProxyGraphic.z())r   r   r4   r
  r  r   r   lowerr  loggerdebuggetattr
isinstancetupler   )
r  r  rD   r  r  r  r   methodresultr  s
   `         r.   r  z$ProxyGraphic.unsafe_virtual_entities4  s/    	 c&k! ,,UDLLOKD%(/44::<
 T4.FUQY FGfe,"( 0'//0#F++ %DI@bIJTME) c&k!  6ug>?s1   AD6#D	 8BD6D6	&D3/D62D33D6c                    t        j                  d|      }t        |      }|j                          | j                  j                  |       y )Nz<16d)r
  unpackr   	transposer   append)r  rA   valuesms       r.   push_matrixzProxyGraphic.push_matrixS  s7    vt,V	Qr-   c                R    | j                   r| j                   j                          y y rl   )r   popr  rA   s     r.   
pop_matrixzProxyGraphic.pop_matrixY  s    ==MM r-   c                <    t         j                  | _        d | _        y rl   )r   r   r   r   r  s    r.   reset_colorszProxyGraphic.reset_colors]  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_colora  sK    ]]4.q1
::>TZZ#-DJ .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_layerg  sI    99MM$-a0Es4;;''![[/
 ( 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_linetypem  sb    99MM$-a0E. $uqy 9	 
  .E>$-DM$-DM	.s   A   A!A! A!c                @    t        j                  d|      d   | _        y r9  )r
  r(  r   r0  s     r.   attribute_markerzProxyGraphic.attribute_markery  s    "MM$5a8r-   c                R    t        t        j                  d|      d         | _        y r9  )rI   r
  r(  r   r0  s     r.   attribute_fillzProxyGraphic.attribute_fill|  s    tT21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    --fmmD$.G.JKe6((($nnU3DODJr-   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)***!"{"2E4L4LMDO DOr-   c                @    t        j                  d|      d   | _        y Nz<dr   )r
  r(  r   r0  s     r.   attribute_ltscalezProxyGraphic.attribute_ltscale  s    }}T403r-   c                @    t        j                  d|      d   | _        y rO  )r
  r(  r   r0  s     r.   attribute_thicknessz ProxyGraphic.attribute_thickness  s    tT21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    ))+bnn&'MMObnn&'%~~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"MM"MM}}X'}::r-   c                   t        |      }| j                         }t        |j                               }|j	                         |d<   t        |j                               }t        |j                               }|j	                         }|j                  t              st        ||      }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:   ))+bnn&'MMObnn&')*	mmo ~~f%v.Cf+C,,szz&'9:DDKook2GSZZ%89CCI#)GK \\&)F#--K#dll;&??I"!,(}}Uw}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JJJJ!$"}}}}Uw}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)*	(MMOMMO,/@@mmoMMO	==?)nZZ0@BS TU
 *!,(}}Y7};;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    WdmmGmHI"8,	%%dmmH&=%N"&q!Y"7EII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*!)<)<Xa[)I"*1+GJ==W===h'$99GG
DMM*M$QR  *NN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&~~hv~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&99''$2I2I2KLL~~hd~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%9GM"!8#%#5#5#7GK !8#%#5#5#7GK !8#'(:(:1(=#>GK #:I%%'
?"9))+J??h&d{!#!1!1!3by,,.	 02/A/A!/D.Eb\
zA~& 	(A**:a=*AA**:a=*AAQJOOJ'		(
 >C:=NOr113OO=B>=R S!1!1!3 S
 SBG	BR-
=>R!2#5#5#78-
 -
 v;!&J/0Fv;!&45F(*8VV4 	7GAq!MM1Q41qtQqT156	7,lw(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\  s@    	MNu-g 1H/7Q;$2FF 1H15!G^49:L4MNqD)*NN	X%$&6QF
  ))+!	$	 55
DMM*M$QR  *) O || 	XLL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
DMM*M$QR\\^49:L4MNqD)*NN<<>
 ! !++R0023J!j.(J49*4EFqBLLNFLF1=>HUO>D>!
*LL ++ 	Y%$&6QF
 	e$ **W-K)ooh7NN= &k4888&x=G O G> || 	YLL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    zz$z..r-   c                (    | j                  |d      S )NTr  r  r0  s     r.   unicode_textzProxyGraphic.unicode_text  s    zz$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>>+,bnn&'bnn./.0nnU.C+mL446,,T]];
 ))+'"',66
!\\-8	%}}V}88# & LA#a&JKKL
 & B4==/QSTWXYTZS[\ 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>>+,bnn&'bnn./	W((((;D (*~~e'<$ NN5!	
 NN5!	
&!#	1181DM " 5 5x 5 H ))+'"',66
!\\-8	??=:KL*+l*:Q=O*O&'%}}V}88K " 	WLL@
"SQRVHUVV	W, " 	LL9(3s1vh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>>+,bnn&'bnn./	J002D /1nnU.C+ NN5!	
 NN5!	
-/^^E-B*GU	&!#	K557I99;M " = = ? ))+'"',66
!\\-8	??=:KL*+l*:Q=O*O&'%}}V}88O " 	JLL?AxHII	J4 " 	KLL@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.xline0  s    {{4))r-   c                &    | j                  |d      S )Nr   r  r0  s     r.   rayzProxyGraphic.ray3  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._xline6  s~    RS))+2>>+,2>>+,&"-";!F!F!H}}Uw}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_style@  s    %4??"OOD)E  Eyy!1!1!;!;E!B		  $$dw%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_verticesM  s{    QJE!aiOOD!678QJE ai \\^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    "&&::#zzGG::&#zzGG==I%"&--GJ??e666$(OOGL!<<3!%GI??&$(OOGL!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>  '0
.97!46;"	; 8D8<( 8=V $7(49v D,\/.9:.9`/9b*(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__n  s,    "D24=::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_entitiest  s    U3785)++- 	EFvfnn&6%789tF$=$=$?#@CD	E 	$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) $		 	LE4yXeWGD6JK	L$r-   c                T    | j                  |dz         |r| j                  d       y y )NO   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^    DJJ<x

|6$-- I??#;t||n =OO$HTYYK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*  m  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    s]    6{KaE##   %e}FJJQJE#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t||Aqss#6s   *-)r4   r]  all)r   r]  s    @r.   r  r    s0    
8}qA6X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p	 p	fK< K\7r-   