
    h?                        S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	  SSK
JrJrJrJr  \(       a  S SKJr  Sr " S	 S
\5      rg)    )annotations)TYPE_CHECKINGOptional)Vec2UCS)DimStyleOverride   )RadiusDimensionadd_center_markMeasurementRadiusMeasurement)	Dimension   Øc                     ^  \ rS rSrSrSS jrS r  S     SU 4S jjjr        SU 4S jjrSU 4S jjr	SS jr
SS	 jrSS
 jrSS jrSS jrSrU =r$ )DiameterDimension   a  
Diameter dimension line renderer.

Supported render types:
- default location inside, text aligned with diameter dimension line
- default location inside horizontal text
- default location outside, text aligned with diameter dimension line
- default location outside horizontal text
- user defined location, text aligned with diameter dimension line
- user defined location horizontal text

Args:
    dimension: DXF entity DIMENSION
    ucs: user defined coordinate system
    override: dimension style override management object

c                8    [        U R                  X[        5      $ N)r   	dim_stylePREFIX)selfcolorscales      K/var/www/html/env/lib/python3.13/site-packages/ezdxf/render/dim_diameter.pyinit_measurement"DiameterDimension.init_measurement(   s     vFF    c                    [        U R                  R                  R                  5      R	                  U R                  R                  R
                  5      $ r   )r   	dimensiondxfdefpointlerp	defpoint4)r   s    r   _centerDiameterDimension._center+   s=    DNN&&//055NN((
 	
r   c                   > [         TU ]  XU5        [        U R                  R                  R
                  5      U l        g r   )super__init__r   r   r    r!   point_on_circle2)r   r   ucsoverride	__class__s       r   r(   DiameterDimension.__init__0   s1     	2 $T^^%7%7%@%@ Ar   c                P   > [         TU ]  UR                  [        S5      X#U5        g )Nz%%c)r'   add_textreplacer   )r   textposrotation
dxfattribsr,   s        r   r/   DiameterDimension.add_text;   s!     	fe4cZPr   c                  > U R                   nUR                  (       a  UR                  (       a  [        TU ]  5       $ [
        R                  " UR                  5      nUR                  SS9nUR                  5       nUR                  (       a  U R                  nOOU R                  S-  U R                  R                  -   UR                  -   nU R                   U R"                  U-  -   nXSU-  -   $ )zIReturns default text midpoint based on `text_valign` and
`text_outside`.
T)ccwg       @)measurementtext_is_outsidetext_outside_horizontalr'   get_default_text_locationr   from_deg_angletext_rotation
orthogonaltext_vertical_distancetext_is_insidecenter_total_text_widtharrows
arrow_sizetext_gappoint_on_circledim_line_vec)r   r8   text_directionvertical_directionvertical_distancetext_midpointhdistr,   s          r   r;   +DiameterDimension.get_default_text_locationA   s     &&&&;+N+N7466,,[-F-FG+6646@'>>@%% KKM &&,++(()&&' 
 !00D4E4E4MNM5F FGGr   c                    U R                   R                  (       d  U R                  U R                  US9$ U R                  $ Nrotate)rC   	suppress1	add_arrowrF   r   rQ   s     r   _add_arrow_1DiameterDimension._add_arrow_1W   s4    {{$$>>$"6"6v>FF'''r   c                    U R                   R                  (       d  U R                  U R                  US9$ U R                  $ rO   )rC   	suppress2rS   r)   rT   s     r   _add_arrow_2DiameterDimension._add_arrow_2]   s4    {{$$>>$"7"7>GG(((r   c                
   U R                   nUR                  (       a  U R                  SS9nU R                  (       a   U R	                  X R                  5       5        O[        U 5        UR                  (       a  U R                  U5        gU R                  U5        gU R                  SS9nUR                  S:X  a(  U R                  U R                  U5        [        U 5        gU R	                  X R                  5       5        g)zBCreate dimension geometry at the default dimension line locations.TrP   Fr	   N)r8   r9   rU   outside_text_force_dimlineadd_diameter_dim_linerY   r   r:   add_horiz_ext_line_defaultadd_radial_ext_line_defaulttext_movement_ruleadd_radial_dim_line_from_textrA   )r   r8   connection_point1s      r   render_default_location)DiameterDimension.render_default_locationc   s    &&&& $ 1 1 1 >..**%'8'8':  %22//0AB001BC $ 1 1 1 ?--222KK!2  % **%'8'8':r   c                   U R                   nUR                  nUR                  S:g  nU(       d  SUl        U R                  UR                  S9nUR                  (       am  U R                  (       a  U R                  U R                  5        O[        U 5        UR                  (       a  U R                  U5        OU R                  U5        OUR                  (       a  U R                  U5        OqUR                  S:X  a:  U R                  SS9nU R                  UUU R                  R                  5       SS9  O'U R!                  UR"                  U5        [        U 5        X!l        g)z>Create dimension geometry at user defined dimension locations.   FrP   Tr4   remove_hidden_linesN)r8   r9   r`   rU   r\   add_radial_dim_linerF   r   r:   add_horiz_ext_line_useradd_radial_ext_line_usertext_inside_horizontalrY   add_linedimension_liner4   ra   user_location)r   r8   preserve_outsideleaderrb   connection_point2s         r   render_user_location&DiameterDimension.render_user_location   s<   &&&66//14*/K' --.. . 
 &&..(()=)=>%22,,->?--.?@11,,->?11Q6(,(9(9(9(F%MM))#'#6#6#A#A#C,0	 "  66#113D $D)&6#r   c                Z    U R                   R                  5       nU R                  XUSS9  g)zAdd diameter dimension line.Trg   N)rn   r4   rm   )r   startendattribss       r   r]   'DiameterDimension.add_diameter_dim_line   s(    %%002eW$Or   )r)   )r   intr   floatreturnr   )NN)r   r   r*   zOptional[UCS]r+   zOptional[DimStyleOverride])r1   strr2   r   r3   r{   r|   None)r|   r   )F)T)r|   r~   )rv   r   rw   r   r|   r~   )__name__
__module____qualname____firstlineno____doc__r   r$   r(   r/   r;   rU   rY   rc   rs   r]   __static_attributes____classcell__)r,   s   @r   r   r      s    $G
 "/3		B	B 	B -		B 	BQQ"Q.3Q	QH,():*7XP Pr   r   N)
__future__r   typingr   r   
ezdxf.mathr   r   ezdxf.entities.dimstyleoverrider   
dim_radiusr
   r   r   r   ezdxf.entitiesr   r   r    r   r   <module>r      s:    # *   <  (	ZP ZPr   