
    OgM                       U d dl mZ d dlmZmZmZ d dlmZmZm	Z	m
Z
 ddlmZmZ erd dlmZ d dlmZ d dlmZ d	Zd
Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z  G d! d"e      Z! G d# d$e!      Z" G d% d&e!      Z# G d' d(e!      Z$ G d) d*e!      Z% G d+ d,e%      Z& G d- d.e      Z' G d/ d0e'      Z( G d1 d2e      Z) G d3 d4e      Z* G d5 d6e*      Z+ G d7 d8e      Z, G d9 d:e,      Z- G d; d<e,      Z. G d= d>e,      Z/ G d? d@      Z0	 dE	 	 	 	 	 	 	 	 	 dFdAZ1dGdHdBZ2 e0       Z3d@e4dC<   yD)I    )annotations)TYPE_CHECKINGIterableIterator)Vec2Shape2dNULLVECUVec   )
open_arrowarrow2)
DXFGraphic)BlocksSection)GenericLayoutTypegPqx2@g     F@c                  &    e Zd ZddZdddZddZy)		BaseArrowc                $    t        |      | _        y N)r   shape)selfverticess     X/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/render/arrows.py__init__zBaseArrow.__init__   s    X&
    Nc                     y r    r   layout
dxfattribss      r   renderzBaseArrow.render   s    r   c                p    | j                   j                  |       | j                   j                  |       y r   )r   rotate	translate)r   insertangles      r   placezBaseArrow.place   s&    

% 

V$r   )r   zIterable[UVec]r   r   r   )r$   r
   r%   float)__name__
__module____qualname__r   r    r&   r   r   r   r   r      s    '%r   r   c                  "     e Zd Zdd fdZ xZS )
NoneStrokec                8    t         |   t        |      g       y r   )superr   r   r   r$   sizer%   	__class__s       r   r   zNoneStroke.__init__    s    $v,(r         ?r   r$   r
   r1   r(   r%   r(   r)   r*   r+   r   __classcell__r2   s   @r   r-   r-      s    ) )r   r-   c                  ,     e Zd Zdd fdZdddZ xZS )ObliqueStrokec                    || _         |dz  }t        | 	  t        | | f      t        ||f      g       | j	                  ||       y )N   )r1   r/   r   r   r&   r   r$   r1   r%   s2r2   s        r   r   zObliqueStroke.__init__%   sH    	AX$bSz*D"bN;<

65!r   c                `    |j                  | j                  d   | j                  d   |       y )Nr   r   startendr   )add_liner   r   s      r   r    zObliqueStroke.render,   s*    **Q-TZZ]z 	 	
r   r3   r5   r   r'   r)   r*   r+   r   r    r7   r8   s   @r   r:   r:   $   s    "
 
r   r:   c                      e Zd ZdddZy)ArchTickNc                    | j                   dz  }|xs i }|j                  dkD  r$||d<   |j                  | j                  d|       y ||d<   ||d<   |j	                  | j                  |       y )	Ng333333?AC1009const_widthxy)formatr   default_start_widthdefault_end_widthr   )r1   
dxfversionadd_lwpolyliner   add_polyline2d)r   r   r   widths       r   r    zArchTick.render3   s    		D %2
x'(-J}%!!

4J "  16J,-.3J*+!!$**!Dr   r   r'   r)   r*   r+   r    r   r   r   rF   rF   2   s    Er   rF   c                  ,     e Zd Zdd fdZdddZ xZS )ClosedArrowBlankc                f    t         |   t        |t                     | j	                  ||       y )Nr%   )r/   r   r   DEFAULT_ARROW_ANGLEr&   r0   s       r   r   zClosedArrowBlank.__init__B   s&    D0CDE

65!r   c                    |j                   dkD  r|j                  | j                  |      }n|j                  | j                  |      }|j	                  d       y NrH   pointsr   TrO   rP   r   rQ   closer   r   r   polylines       r   r    zClosedArrowBlank.renderF   \    x',,zzj - H ,,zzj - H 	tr   r3   r5   r   r'   rD   r8   s   @r   rU   rU   A   s    "	 	r   rU   c                  "     e Zd Zdd fdZ xZS )ClosedArrowc                    t         |   ||       | j                  d   j                  | j                  d         }|j	                  | j                  d   ||       y )Nr   r<   r   r@   )r/   r    r   lerprC   )r   r   r   	end_pointr2   s       r   r    zClosedArrow.renderS   sQ    vz*JJqM&&tzz!}5	**Q-Y: 	 	
r   r   r'   r)   r*   r+   r    r7   r8   s   @r   rc   rc   R   s    
 
r   rc   c                      e Zd ZdddZy)ClosedArrowFilledNc                >    |j                  | j                  |       y Nr[   	add_solidr   r   s      r   r    zClosedArrowFilled.render]   s    ::! 	 	
r   r   r'   rS   r   r   r   ri   ri   \   s    
r   ri   c                  >     e Zd Z	 	 d	 	 	 	 	 	 	 d fdZdddZ xZS )
_OpenArrowc                    t        t        ||            }|j                  d       t        |   |       | j                  ||       y NrW   )r   )listr   appendr/   r   r&   )r   arrow_angler$   r1   r%   r\   r2   s         r   r   z_OpenArrow.__init__e   s=     j[9:g 

65!r   c                    |j                   dkD  r!|j                  | j                  d d |       n |j                  | j                  d d |       |j	                  | j                  d   | j                  d   |       y )NrH   rr   r[   r   r@   )rO   rP   r   rQ   rC   r   s      r   r    z_OpenArrow.renderq   sr    x'!!CRZ!P!!CRZ!P**Q-TZZ^
 	 	
r   r3   )ru   r(   r$   r
   r1   r(   r%   r(   r   r'   rD   r8   s   @r   ro   ro   d   s@    
 
"
" 
" 	
"
 
"
 
r   ro   c                  "     e Zd Zdd fdZ xZS )	OpenArrowc                2    t         |   t        |||       y r   )r/   r   rX   r0   s       r   r   zOpenArrow.__init__|   s    ,fdEBr   r3   r5   r6   r8   s   @r   rx   rx   {   s    C Cr   rx   c                  "     e Zd Zdd fdZ xZS )OpenArrow30c                *    t         |   d|||       y )N   r/   r   r0   s       r   r   zOpenArrow30.__init__       VT51r   r3   r5   r6   r8   s   @r   r{   r{          2 2r   r{   c                  "     e Zd Zdd fdZ xZS )OpenArrow90c                *    t         |   d|||       y )NZ   r~   r0   s       r   r   zOpenArrow90.__init__   r   r   r3   r5   r6   r8   s   @r   r   r      r   r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Circlec                    |dz  | _         t        | 	  t        d      t        | j                    df      t        | df      g       | j	                  ||       y )Nr<   r   r   r   )radiusr/   r   r   r&   r0   s       r   r   zCircle.__init__   sX    QhVt{{lA&'teQZ 	
 	

65!r   c                Z    |j                  | j                  d   | j                  |       y )Nr   centerr   r   )
add_circler   r   r   s      r   r    zCircle.render   s(    ::a= 	 	
r   r3   r5   r   r'   rD   r8   s   @r   r   r      s    
"
 
r   r   c                  "     e Zd Zdd fdZ xZS )Originc                    t         |   ||       |j                  | j                  d   | j                  d   |       y )Nr   r<   r@   r/   r    rC   r   r   r   r   r2   s      r   r    zOrigin.render   9    vz***Q-TZZ]z 	 	
r   r   r'   rg   r8   s   @r   r   r          
 
r   r   c                  "     e Zd Zdd fdZ xZS )CircleBlankc                    t         |   ||       |j                  | j                  d   | j                  d   |       y Nr   r<   r@   r   r   s      r   r    zCircleBlank.render   r   r   r   r'   rg   r8   s   @r   r   r      r   r   r   c                      e Zd ZdddZy)Origin2Nc                   |j                  | j                  d   | j                  |       |j                  | j                  d   | j                  dz  |       |j                  | j                  d   | j                  d   |       y )Nr   r   r<   r   r@   )r   r   r   rC   r   s      r   r    zOrigin2.render   s~    ::a= 	 	
 	::a=qZ 	 	
 	**Q-TZZ]z 	 	
r   r   r'   rS   r   r   r   r   r      s    	
r   r   c                      e Zd ZdddZy)DotSmallNc                   | j                   d   }t        | j                  dz  df      }||z
  }||z   }|xs i }|j                  dkD  r+| j                  |d<   |j	                  |df|dfgdd|       y | j                  |d	<   | j                  |d
<   |j                  ||gd|      }d|d   j                  _        d|d   j                  _        y )Nr   r<   rH   rI   r   vbT)rK   r^   r   rL   rM   )r\   r^   r   )r   r   r   rO   rP   rQ   dxfbulge)r   r   r   r   dp1p2r`   s           r   r    zDotSmall.render   s    A$++/1%&aZaZ%2
x'(,J}%!!a2q'"%	 "  15J,-.2kkJ*+,,Bxt
 - H %&HQKOO!$%HQKOO!r   r   r'   rS   r   r   r   r   r      s    &r   r   c                  "     e Zd Zdd fdZ xZS )Dotc                    |j                  | j                  d   | j                  d   |       t        |   ||       y r   )rC   r   r/   r    r   s      r   r    z
Dot.render   s;    **Q-TZZ]z 	 	
 	vz*r   r   r'   rg   r8   s   @r   r   r      s    + +r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Boxc                    |dz  }t         |   t        | | f      t        || f      t        ||f      t        | |f      t        | df      t        | df      g       | j                  ||       y )Nr<   r   r/   r   r   r&   r=   s        r   r   zBox.__init__   s    AXrcB3Z rcB3Z rcB3Z rcB3Z rc1XteQZ 		
 	

65!r   c                "   |j                   dkD  r!|j                  | j                  dd |      }n |j                  | j                  dd |      }|j	                  d       |j                  | j                  d   | j                  d   |       y )NrH   r      r[   T   r@   )rO   rP   r   rQ   r^   rC   r_   s       r   r    z
Box.render   s    x',,zz!A: - H ,,zz!A: - H 	t**Q-TZZ]z 	 	
r   r3   r5   r   r'   rD   r8   s   @r   r   r      s    "
 
r   r   c                      e Zd ZdddZy)	BoxFilledNc                      fd}|j                   |       |       |j                   j                  d    j                  d   |       y )Nc                 T    j                   j                  } | d   | d   | d   | d   gS )Nr   r      r<   )r   r   )vr   s    r   solid_orderz%BoxFilled.render.<locals>.solid_order   s1    

##AaD!A$!ad++r   r[   r   r   r@   )rm   rC   r   )r   r   r   r   s   `   r   r    zBoxFilled.render   sG    	, 	*E**Q-TZZ]z 	 	
r   r   r'   rS   r   r   r   r   r      s    
r   r   c                  ,     e Zd Zdd fdZdddZ xZS )Integralc                    |dz  | _         || _        t        |   t	        d      t	        | j                    df      t	        | j                   df      g       | j                  ||       y )NgPp?r   r   )r   r%   r/   r   r   r&   r0   s       r   r   zIntegral.__init__  sc    Y&
Vt{{lA&'dkk1%&	
 	

65!r   c                    | j                   }|j                  | j                  d   | j                  d|z   ||       |j                  | j                  d   | j                  d|z   d|z   |       y )Nr   i)r   r   start_angle	end_angler   r<   r      )r%   add_arcr   r   )r   r   r   r%   s       r   r    zIntegral.render  sq    

::a=;;e! 	 	
 	::a=;;U
Ek! 	 	
r   r3   r5   r   r'   rD   r8   s   @r   r   r     s    "
 
r   r   c                  0     e Zd ZdZdd fdZdddZ xZS )DatumTriangler   c                    d|z  }t         |   t        d|f      t        d| f      t        | df      g       | j                  ||       y )Ng?#vEy?r   r   )r   r$   r1   r%   r   r2   s        r   r   zDatumTriangle.__init__)  sU    $aVa!WteQZ 	
 	

65!r   c                    |j                   dkD  r|j                  | j                  |      }n|j                  | j                  |      }|j	                  d       y rZ   r]   r_   s       r   r    zDatumTriangle.render5  ra   r   r3   r5   r   r'   )r)   r*   r+   REVERSE_ANGLEr   r    r7   r8   s   @r   r   r   &  s    M
"	 	r   r   c                      e Zd ZdddZy)DatumTriangleFilledNc                >    |j                  | j                  |       y rk   rl   r   s      r   r    zDatumTriangleFilled.renderB  s    

zBr   r   r'   rS   r   r   r   r   r   A  s    Cr   r   c                  ,     e Zd Zdd fdZdddZ xZS )_EzArrowc                    t        t        |t                    }|j                  d       t        |   |       | j                  ||       y rq   )rs   r   rX   rt   r/   r   r&   )r   r$   r1   r%   r\   r2   s        r   r   z_EzArrow.__init__G  s<    fT)<=>g 

65!r   c                    |j                   dkD  r!|j                  | j                  d d |      }n |j                  | j                  d d |      }|j	                  d       y )NrH   rr   rN   Tr]   r_   s       r   r    z_EzArrow.renderM  sh    x',,

3BJ - H ,,

3BJ - H 	tr   r3   r5   r   r'   rD   r8   s   @r   r   r   F  s    "	 	r   r   c                  "     e Zd Zdd fdZ xZS )EzArrowBlankc                    t         |   ||       |j                  | j                  d   | j                  d   |       y )Nrr   r@   r   r   s      r   r    zEzArrowBlank.renderZ  s9    vz***R.djjn 	 	
r   r   r'   rg   r8   s   @r   r   r   Y  r   r   r   c                  "     e Zd Zdd fdZ xZS )EzArrowc                    t         |   ||       |j                  | j                  d   | j                  d   |       y )Nr   rr   r@   r   r   s      r   r    zEzArrow.renderb  s9    vz***Q-TZZ^
 	 	
r   r   r'   rg   r8   s   @r   r   r   a  r   r   r   c                      e Zd ZdddZy)EzArrowFilledNc                    | j                   j                  }|j                  |d   |d   |d   |d   g|       |j                  | j                   d   | j                   d   |       y )	Nr   r   r   r<   rN   r   rr   r@   )r   r   rm   rC   )r   r   r   r\   s       r   r    zEzArrowFilled.renderj  sl    $$AYq	6!9fQi8Z 	 	
 	**R.djjn 	 	
r   r   r'   rS   r   r   r   r   r   i  s    
r   r   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i eeeeeeeeeeeee	e e
e!ee"ee#ee$ee%ee&ee'ee(ee)ee*ee+ee,ee-ee.ee/ee0iZ1eeeeeehZ2eeeeeee	e
eeeeeeeeeeeehZ3eeehZ4e3e4z  Z5eeeeeehZ6d)dZ7d)dZ8d Z9d)dZ:d*dZ;d*dZ<d+dZ=d,dZ>e?d d!fd"d#	 	 	 	 	 	 	 	 	 	 	 d-d$Z@e?d d!fd"d#	 	 	 	 	 	 	 	 	 	 	 d-d%ZAe?d&d!fd"d#	 	 	 	 	 	 	 	 	 d.d'ZB	 	 	 	 	 	 	 	 	 	 d/d(ZCy")0_Arrows DOTDOTSMALLDOTBLANKORIGINORIGIN2OPENOPEN90OPEN30CLOSEDSMALLNONEOBLIQUE	BOXFILLEDBOXBLANKCLOSEDBLANKDATUMFILLED
DATUMBLANKINTEGRALARCHTICKEZ_ARROWEZ_ARROW_BLANKEZ_ARROW_FILLEDc                :    |j                         | j                  v S )z7Returns ``True`` if `item` is a standard AutoCAD arrow.)upper__acad__r   items     r   is_acad_arrowz_Arrows.is_acad_arrow  s    zz|t}},,r   c                :    |j                         | j                  v S )z6Returns ``True`` if `item` is a special `ezdxf` arrow.)r   	__ezdxf__r   s     r   is_ezdxf_arrowz_Arrows.is_ezdxf_arrow  s    zz|t~~--r   c                    || j                   v S )z>Returns ``True`` if the arrow `name` supports extension lines.)EXTENSIONS_ALLOWEDr   names     r   has_extension_linez_Arrows.has_extension_line  s    t....r   c                @    |y|j                         | j                  v S )z;Returns `True` if `item` is an arrow managed by this class.F)r   __all_arrows__r   s     r   __contains__z_Arrows.__contains__  s!    <zz|t2222r   c                    | j                  |      }||vr<|j                  |      }| j                  |ddd      }|j                  |ddd       |S )z.Creates the BLOCK definition for arrow `name`.r   r   r   )r$   r1   rotationBYBLOCK)colorlinetyperN   )
block_namenewarrow_shaper    )r   blocksr   r  blockarrows         r   create_blockz_Arrows.create_block  sZ    __T*
V#JJz*E$$T&q1$MELLQI+NLOr   c                    | j                  |      }| j                  ||      }|j                  |      }|j                  S )z1Returns the BLOCK_RECORD handle for arrow `name`.)
arrow_namer	  getblock_record_handle)r   r  r   r  r  r  s         r   arrow_handlez_Arrows.arrow_handle  s<    __T*
&&vz:


:&(((r   c                v    | j                  |      s|j                         S |dk(  ryd|j                         z   S )zReturns the block name.r   _CLOSEDFILLED_)r   r   r   s     r   r  z_Arrows.block_name  s;    !!$'::<RZ # %%r   c                    |j                  d      r,|dd j                         }|dk(  ry| j                  |      r|S |S )zReturns the arrow name.r  r   NCLOSEDFILLEDr   )
startswithr   r   )r   r  r   s      r   r  z_Arrows.arrow_name  sH      %ab>'')D~%##D)r   r4   r   NrN   c                   | j                  |j                  j                  |      }t        |xs i       }||d<   ||d<   ||d<   |j	                  |||       t        ||||      S )z.Insert arrow as block reference into `layout`.r   xscaleyscale)r$   r   r$   scaler   )r	  docr  dictadd_blockrefconnection_point)r   r   r   r$   r1   r   r   r  s           r   insert_arrowz_Arrows.insert_arrow  sx     &&vzz'8'8$?
**+
!)
:#
8#
8Jv*Mth
 	
r   c                   t        |xs i       }| j                  ||||      }|j                  ||       t        ||||      S )z1Render arrow as basic DXF entities into `layout`.r  )r  r  r    r  )r   r   r   r$   r1   r   r   r  s           r   render_arrowz_Arrows.render_arrow'  sM     **+
  vtX>VZ(th
 	
r   g      ?c             #     K   ddl m} || v r6 |       }t        j                  ||||||       t	        |      E d{    yy7 w)z5Returns all arrow components as virtual DXF entities.r   )VirtualLayout)r$   r1   r   r   N)ezdxf.layoutsr"  ARROWSr   iter)r   r   r$   r1   r   r   r"  r   s           r   virtual_entitiesz_Arrows.virtual_entities9  sW      	04<"_F!%    F|##  $s   ;AAAc                    |j                         }|| j                  k(  r|dz  }n|| j                  k(  r|dz  }| j                  |   } ||||      S )zCReturns an instance of the shape management class for arrow `name`.g      ?g      ?)r   	dot_smalldot_smallblankCLASSES)r   r   r$   r1   r   clss         r   r  z_Arrows.arrow_shapeQ  sX    
 zz|4>>!DLDT(((CKDll4 64**r   )r   strreturnbool)r  r   r   r,  r-  r,  )r   r,  r-  r,  )r  r,  r-  r,  )r   r   r   r,  r$   r
   r1   r(   r   r(   r-  r   )
r   r,  r$   r
   r1   r(   r   r(   r-  zIterator[DXFGraphic])
r   r,  r$   r
   r1   r(   r   r(   r-  r   )Dr)   r*   r+   closed_filleddotr(  	dot_blankorigin_indicatororigin_indicator_2openright_angleopen_30closedr)  noneoblique
box_filledboxclosed_blankdatum_triangle_filleddatum_triangleintegralarchitectural_tickez_arrowez_arrow_blankez_arrow_filledri   r   r   r   r   r   rx   r   r{   rc   r   r-   r:   r   r   rU   r   r   r   rF   r   r   r   r*  ORIGIN_ZEROr   r   r   r   r   r   r   r   r	  r  r  r  r	   r  r   r&  r  r   r   r   r   r   t  sQ   M
CII"DKGFNDGJ
C L)!NH#H%N'O(S 	8 	;	
 	& 	G 	i 	[ 	 	 	 	j 	 	I 	S  	&!" 	#$ 	2(H'/G6 	K 	)H. 	I
 	)N 	-./3)& 
 
!
 
 	

 
 
 

4 
 
!
 
 	

 
 
 

* $ $$ $ 	$
 $ 
$0++!%+-2+>C+	+r   r   c                    t        |      }t        j                  |       t        j                  v r|S |t        j
                  ||      z
  S )z.Returns the connection point for `arrow_name`.)r   r$  r  r   rD  from_deg_angle)r  r$   r  r   s       r   r  r  _  sC     &\F$(;(;;++He<<<r   c                R    t         j                  |       t        j                  v ry|S )z0Returns the scaled arrow length of `arrow_name`.        )r$  r  r   rD  )r  r  s     r   arrow_lengthrI  j  s#    $(;(;;r   r$  N)r4   rH  )
r  r,  r$   r
   r  r(   r   r(   r-  r   )r4   )r  r,  r  r(   r-  r(   )5
__future__r   typingr   r   r   
ezdxf.mathr   r   r	   r
   formsr   r   ezdxf.entitiesr   ezdxf.sections.blocksr   ezdxf.eztypesr   rX   DEFAULT_BETAr   r-   r:   rF   rU   rc   ri   ro   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rI  r$  __annotations__r   r   r   <module>rS     s   # 4 4 3 3 %)3/ 
	% 	%) )

I 
E} Ey "
" 

 

 
.C
 C
2* 2
2* 2

Y 
&
V 

& 


f 

&v &2+( +
) 
>	
 	

y 
@I 6C- C
y &
8 

h 

H 
h+ h+X JM==!=*/=AF=	= ) r   