
    Og                        d dl mZ d dlmZ ddddddd	d
ddd
ZdZdZdZdZdZ	dZ
dZdZdZej                  ej                  ej                   ej"                  ej$                  ej&                  ej(                  ej*                  ej,                  ej.                  h
Zg dZ G d d      Z G d d      Zg dZdedee   fdZd ed!ede fd"Z!dedefd#Z"d$d%d&d'd(Z#dedefd)Z$y*)+    )Optional)InsertUnitsMbP?      ?      $@      Y@     @@    .A[Vp?!(?
@Xz^C@Hxp\D?)
kmmdmcmmm   µmydftinmi                     
      )Nr   r   r   r	   r   r   r   NNr   g    _Bg    eAr
   r   g?g{Gz?g&.>g-f=gTLw<gu'ۧ<NNNNc                   @    e Zd ZddedefdZd	dedefdZdedefdZy)
DrawingUnitsbaseunitc                     t        |      | _        |j                         | _        t        | _        || j
                  | j                     z  | _        y N)floatr$   lowerr%   MSP_METRIC_UNITS_FACTORS_units_msp_factor)selfr$   r%   s      P/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/units.py__init__zDrawingUnits.__init__N   s;    $K	JJL	.$++dii"88    returnc                 V    | j                   | j                  |j                            z  S r'   )r,   r+   r)   r-   r%   s     r.   factorzDrawingUnits.factorT   s"    $++djjl";;;r0   c                 $    | j                  |      S r'   )r4   r3   s     r.   __call__zDrawingUnits.__call__W   s    {{4  r0   N)r   r   )r   )__name__
__module____qualname__r(   strr/   r4   r6    r0   r.   r#   r#   M   s;    9U 9 9<3 < <!S !U !r0   r#   c                   N    e Zd Z e       ddfdedefdZdedefdZdedefdZy	)
PaperSpaceUnitsr   r   r%   scalec                     |j                         | _        || _        || _        t	        d| j                        | _        y )Nr   )r)   r%   r>   _mspr#   _psp)r-   mspr%   r>   s       r.   r/   zPaperSpaceUnits.__init__\   s/    JJL	
	 DII.	r0   valuec                     || j                  |j                               z  }|| j                  | j                        | j                  z  z  S r'   )r@   r)   r%   r>   )r-   rC   r%   drawing_unitss       r.   from_mspzPaperSpaceUnits.from_mspb   s<    		$**, 77		$)) 4tzz ABBr0   c                     || j                   z  | j                  j                  |      z  }|| j                  j                  | j                        z  }|S r'   )r>   rA   r4   r@   r%   )r-   rC   r%   paper_space_unitsmodel_space_unitss        r.   to_mspzPaperSpaceUnits.to_mspf   sI    !DJJ.1A1A$1GG-		0@0@0KK  r0   N)	r7   r8   r9   r#   r:   r(   r/   rF   rJ   r;   r0   r.   r=   r=   [   sG    '>tA / /E /Ce C3 C!E ! !r0   r=   )Nr   r   r   r   r   r   r   u   µinmilr      Ånmr   r   damhmgmaulypcNNNNenumr1   c                 &    t         t        |          S r'   )
_unit_specintrT   s    r.   decoderY      s    c$i  r0   source_unitstarget_unitsc                     	 t         |    }t         |   }||t        d      ||z  S # t        $ r t        d      w xY w)zReturns the conversion factor to represent `source_units` in
    `target_units`.

    E.g. millimeter in centimeter :code:`conversion_factor(MM, CM)` returns 0.1,
    because 1 mm = 0.1 cm

    zUnsupported conversion.zInvalid unit enum.)METER_FACTOR	TypeError
IndexError
ValueError)rZ   r[   source_factortarget_factors       r.   conversion_factorrc      sX    /$\2$\2 M$9566},, /-../s   %( =c                 L    	 t        |       j                  S # t        $ r Y yw xY w)z"Returns the name of the unit enum.unitless)r   namer`   rX   s    r.   	unit_namerg      s*    4 %%% s    	##zDecimal DegreeszDegrees/Minutes/SecondsGradRadians)r   r   r   r   c                 6    t         j                  | d|  d      S )z(Returns the name of the angle unit enum.zunknown unit <>)ANGLE_UNITSgetrX   s    r.   angle_unit_namern      s    ??4>$q!9::r0   N)%typingr   ezdxf.enumsr   r*   INFTMIMMCMMKMYDDMInchesFeetMilesMicroinchesMilsYardsUSSurveyFeetUSSurveyInchUSSurveyYardUSSurveyMileIMPERIAL_UNITSr]   r#   r=   rV   rW   r:   rY   r(   rc   rg   rl   rn   r;   r0   r.   <module>r      sY    # 	






   :! !! !p
:! !# !//-8/
/*C C   	;# ;# ;r0   