
    'j                     z   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$d*S )+    )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                   B    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d	S )DrawingUnitsr   r   baseunitc                     t          |          | _        |                                | _        t          | _        || j        | j                 z  | _        d S N)floatr$   lowerr%   MSP_METRIC_UNITS_FACTORS_units_msp_factor)selfr$   r%   s      E/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/units.py__init__zDrawingUnits.__init__N   sA    $KK	JJLL	.$+di"88    returnc                 P    | j         | j        |                                         z  S r'   )r,   r+   r)   r-   r%   s     r.   factorzDrawingUnits.factorT   s    $+djjll";;;r0   c                 ,    |                      |          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        9 9U 9 9 9 9 9< <3 < < < < <!S !U ! ! ! ! ! !r0   r#   c                   V    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d	S )
PaperSpaceUnitsr   r   r%   scalec                     |                                 | _        || _        || _        t	          d| j                  | _        d S )Nr   )r)   r%   r>   _mspr#   _psp)r-   mspr%   r>   s       r.   r/   zPaperSpaceUnits.__init__\   s6    JJLL	
	 DI..			r0   valuec                     ||                      |                                          z  }||                      | j                  | j        z  z  S r'   )r@   r)   r%   r>   )r-   rC   r%   drawing_unitss       r.   from_mspzPaperSpaceUnits.from_mspb   s@    		$**,, 7 77		$) 4 4tz ABBr0   c                     || j         z  | j                            |          z  }|| 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   sG    !DJ.1A1A$1G1GG-	0@0@0K0KK  r0   N)	r7   r8   r9   r#   r:   r(   r/   rF   rJ   r;   r0   r.   r=   r=   [   s        '<>>tA / / /E / / / /Ce C3 C C C C!E ! ! ! ! ! ! !r0   r=   )Nr   r   r   r   r   r   r   u   µinmilr      Ånmr   r   damhmgmaulypcNNNNenumr1   c                 6    t           t          |                    S r'   )
_unit_specintrT   s    r.   decoderY      s    c$ii  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

    NzUnsupported conversion.zInvalid unit enum.)METER_FACTOR	TypeError
IndexError
ValueError)rZ   r[   source_factortarget_factors       r.   conversion_factorrc      sj    /$\2$\2 M$95666},, / / /-.../s	   14 Ac                 N    	 t          |           j        S # t          $ r Y dS w xY w)z"Returns the name of the unit enum.unitless)r   namer`   rX   s    r.   	unit_namerg      s:    4  %%   zzs    
$$zDecimal DegreeszDegrees/Minutes/SecondsGradRadians)r   r   r   r   c                 @    t                               | 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!9$!9!9!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      s         # # # # # # 	






      :! ! ! ! ! ! ! !! ! ! ! ! ! ! !p  
:! !# ! ! ! !//-8/
/ / / /*C C      	 ;# ;# ; ; ; ; ; ;r0   