Ë
    £èh7O  ã                  óÐ   — d dl mZ d dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZmZmZmZ erd d	lmZ d d
lmZ  G d„ de«      Z G d„ de«      Zdd„Zy)é    )Úannotations)ÚTYPE_CHECKINGÚOptional)ÚVec2ÚUCSÚUVec)Únormalize_text_angle)ÚARROWSÚconnection_point)ÚDimStyleOverride)ÚDXFInternalEzdxfError)ÚBaseDimensionRendererÚMeasurementÚLengthMeasurementÚcompile_mtext)Ú	Dimension)ÚGenericLayoutTypec                  ó<   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zdˆ fd„Zˆ xZS )ÚRadiusMeasurementc                ó6   •— t         ‰| �  |||«       || _        y ©N)ÚsuperÚ__init__Útext_prefix)ÚselfÚ	dim_styleÚcolorÚscaleÚprefixÚ	__class__s        €ú7lib/python3.12/site-packages/ezdxf/render/dim_radius.pyr   zRadiusMeasurement.__init__   s   ø€ ô 	‰Ñ˜ E¨5Ô1Ø!ˆÕó    c                ól   •— t         ‰| �  |«      }|r!|d   | j                  k7  r| j                  |z   }|S )Nr   )r   Úformat_textr   )r   ÚvalueÚtextr    s      €r!   r$   zRadiusMeasurement.format_text   s;   ø€ Ü‰wÑ" 5Ó)ˆÙ�D˜‘G˜t×/Ñ/Ò/Ø×#Ñ# dÑ*ˆDØˆr"   )r   r   r   Úintr   Úfloatr   Ústr)r%   r(   Úreturnr)   )Ú__name__Ú
__module__Ú__qualname__r   r$   Ú__classcell__©r    s   @r!   r   r      s2   ø„ ð"Ø)ð"Ø25ð"Ø>Cð"ØMPõ"÷ñ r"   r   c                  óÖ   ‡ — e Zd ZdZd„ Z	 	 d	 	 	 	 	 dˆ fd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dˆ fd	„Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zˆ xZS ) ÚRadiusDimensiona@  
    Radial dimension line renderer.

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

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

    c                óT   — t        | j                  j                  j                  «      S r   )r   Ú	dimensionÚdxfÚdefpoint©r   s    r!   Ú_centerzRadiusDimension._center9   s   € Ü�D—N‘N×&Ñ&×/Ñ/Ó0Ð0r"   c                óž  •— t         ‰| �  |||«       | j                  j                  }| j                  }|dk(  rd| _        n|dk(  rd| _        nt        d|› �«      ‚| j                  «       | _	        t        | j                  j                  j                  «      | _        |j                  €X|j                  rL|j                   r@|j"                  dk(  r1| j                  j%                  | j                  «      |_        d|_        | j                  | j                  z
  }|j)                  «       | _        | j*                  j,                  | _        |j0                  | _        |j5                  | j                  j7                  «       «       | j2                  d| j8                  j:                  z  z   | _        | j                  | j*                  | j<                  z  z   | _        tA        | jB                  jE                  dd«      «      | _#        |jH                   |_%        |j                  � | jM                  |j                  «      |_%        d	| _'        |jP                  rP| jS                  «       | _'        | jT                  jV                  r%| jT                  jY                  |jZ                  «       | j.                  }|jJ                  r|j\                  rd	}n|j                  r|j                   rd	}t_        |d¬
«      |_0        | jc                  «       |_2        | jf                  ji                  | jk                  «       «       |j                  r&|j                  | j                  j                  _6        y |jJ                  r2|j\                  r&| j>                  | j                  j                  _6        y |jd                  | j                  j                  _6        y )Né   Té   zInvalid dimension type é   r   é   Údimtoflç        )Úfix_upside_down)7r   r   r3   ÚdimtypeÚmeasurementÚis_diameter_dimÚis_radius_dimr   r7   Úcenterr   r4   Ú	defpoint4Úpoint_on_circleÚuser_locationÚtext_is_insideÚtext_inside_horizontalÚtext_movement_ruleÚlerpÚtext_valignÚ	normalizeÚdim_line_vecÚ	angle_degÚdim_line_angleÚ	magnitudeÚradiusÚupdateÚget_measurementÚarrowsÚ
arrow_sizeÚoutside_default_distanceÚoutside_default_defpointÚboolr   ÚgetÚoutside_text_force_dimlineÚforce_text_insideÚtext_is_outsideÚis_location_outsideÚ_total_text_widthr&   Útotal_text_widthÚtolÚ
has_limitsÚupdate_limitsr%   Útext_outside_horizontalr	   Útext_rotationÚget_text_locationÚtext_locationÚgeometryÚset_text_boxÚinit_text_boxÚtext_midpoint)	r   r3   ÚucsÚoverrider@   rA   Ú	directionÚrotationr    s	           €r!   r   zRadiusDimension.__init__<   s  ø€ ô 	‰Ñ˜ C¨Ô2Ø—.‘.×(Ñ(ˆØ×&Ñ&ˆØ�aŠ<Ø#'ˆDÕ Ø˜Š\Ø!%ˆDÕä'Ð*AÀ'ÀÐ(KÓLÐLà ŸL™L›NˆŒÜ%)¨$¯.©.×*<Ñ*<×*FÑ*FÓ%GˆÔà×$Ñ$Ð,à×*Ò*Ø×6Ò6Ø×2Ñ2°aÒ7ð -1¯K©K×,<Ñ,<Ø×(Ñ(ó-�Ô)ð +,�Ô'à×(Ñ(¨4¯;©;Ñ6ˆ	Ø%×/Ñ/Ó1ˆÔØ"×/Ñ/×9Ñ9ˆÔØ×)Ñ)ˆŒà×Ñ˜4Ÿ>™>×9Ñ9Ó;Ô<Ø(,¯©°a¸$¿+¹+×:PÑ:PÑ6PÑ(PˆÔ%Ø(,¯©Ø×Ñ × =Ñ =Ñ=ñ)
ˆÔ%ô +/¨t¯~©~×/AÑ/AÀ)ÈQÓ/OÓ*PˆÔ'ð +6×*GÑ*GÐ&GˆÔ#à×$Ñ$Ð0Ø*.×*BÑ*BØ×)Ñ)ó+ˆKÔ'ð ),ˆÔØ×Òà%)×%:Ñ%:Ó%<ˆDÔ"Ø�x‰x×"Ò"ð —‘×&Ñ& {×'8Ñ'8Ô9ð ×&Ñ&ˆØ×&Ò&¨;×+NÒ+NØ‰HØ×'Ò'¨K×,NÒ,NØˆHô %9Ø dô%
ˆÔ!ð
 %)×$:Ñ$:Ó$<ˆÔ!Ø�‰×"Ñ" 4×#5Ñ#5Ó#7Ô8à×$Ò$Ø/:×/HÑ/HˆD�N‰N×ÑÕ,ð ×'Ò'¨K×,OÒ,Oà/3×/LÑ/LˆD�N‰N×ÑÕ,à/:×/HÑ/HˆD�N‰N×ÑÕ,r"   c                ó2   — t        | j                  ||d«      S )NÚR)r   r   )r   r   r   s      r!   Úinit_measurementz RadiusDimension.init_measurement“   s   € Ü  §¡°¸¸sÓCÐCr"   c                ón   — | j                   j                  �| j                  «       S | j                  «       S )z[Returns text midpoint from user defined location or default text
        location.
        )rA   rG   Úget_user_defined_text_locationÚget_default_text_locationr6   s    r!   rf   z!RadiusDimension.get_text_location–   s4   € ð ×Ñ×)Ñ)Ð5Ø×6Ñ6Ó8Ð8à×1Ñ1Ó3Ð3r"   c                ó  — | j                   }|j                  r‹|j                  r| j                  dz  }|j                  dk(  r|| j
                  j                  z  }| j                  dz  }d|cxk  rdk  rn n| }| j                  t        ||j                  «       f«      z   S t        j                  |j                  «      }|j                  d¬«      }|j                  «       }|j                  rC| j                  | j
                  j                  z
  dz  }| j                   | j"                  |z  z   }nO| j                  dz  | j
                  j                  z   |j$                  z   }| j&                  | j"                  |z  z   }|||z  z   S )zXReturns default text midpoint based on `text_valign` and
        `text_outside`
        ç       @r   ç     €v@g     €V@g     àp@T)Úccw)rA   r]   rd   r_   Úvertical_placementrU   rV   rP   rX   r   Útext_vertical_distanceÚfrom_deg_anglere   Ú
orthogonalrH   rR   rD   rN   Útext_gaprF   )r   rA   ÚhdistÚangleÚtext_directionÚvertical_directionÚvertical_distancerk   s           r!   ru   z)RadiusDimension.get_default_text_locationŸ   s  € ð ×&Ñ&ˆØ×&Ò&¨;×+NÒ+NØ×*Ñ*¨SÑ0ˆEà×.Ñ.°!Ò3à˜Ÿ™×/Ñ/Ñ/�Ø×'Ñ'¨%Ñ/ˆEØ�eÔ$˜uÕ$Ø˜�Ø×0Ñ0´4Ø˜×:Ñ:Ó<Ð=ó4ñ ð ô ×,Ñ,¨[×-FÑ-FÓGˆØ+×6Ñ6¸4Ð6Ó@ÐØ'×>Ñ>Ó@ÐØ×%Ò%Ø—[‘[ 4§;¡;×#9Ñ#9Ñ9¸SÑ@ˆEØ ŸK™K¨4×+<Ñ+<¸uÑ+DÑE‰Mð ×&Ñ&¨Ñ,Ø—+‘+×(Ñ(ñ)à×&Ñ&ñ'ð ð
 !×0Ñ0°D×4EÑ4EÈÑ4MÑNˆMØÐ 2Ð5FÑ FÑGÐGr"   c                ó~  — | j                   }t        |j                  t        «      sJ ‚|j                  xr |j
                  }|j                  xr |j                  }|s|r‘| j                  dz  }|j                  dk(  r|| j                  j                  z  }|j                  j                  | j                  j                  k  r| }|j                  «       }|j                  t        ||f«      z   S t        j                  |j                   «      j#                  «       }|j                  ||j                  «       z  z   S )z:Returns text midpoint for user defined dimension location.rw   r   )rA   Ú
isinstancerG   r   r]   rd   rH   rI   r_   rz   rU   rV   ÚxrF   r{   r|   re   r}   )r   rA   Útext_outside_horizÚtext_inside_horizr   ÚvdistÚtext_normal_vecs          r!   rt   z.RadiusDimension.get_user_defined_text_locationÀ   s*  € à×&Ñ&ˆÜ˜+×3Ñ3´TÔ:Ð:Ð:à×'Ñ'ÒO¨K×,OÑ,Oð 	ð ×&Ñ&ÒM¨;×+MÑ+Mð 	ñ Ñ!2Ø×*Ñ*¨SÑ0ˆEà×.Ñ.°!Ò3à˜Ÿ™×/Ñ/Ñ/�Ø×(Ñ(×*Ñ*¨d×.BÑ.B×.DÑ.DÒDØ˜�Ø×6Ñ6Ó8ˆEØ×,Ñ,¬t°U¸E°NÓ/CÑCÐCä"×1Ñ1Ø×)Ñ)óç‰j‹lð ð ×)Ñ)Ø! K×$FÑ$FÓ$HÑHñIðr"   c                óR   — || j                   z
  j                  }|| j                  kD  S r   )rD   rQ   rR   )r   ÚlocationrR   s      r!   r^   z#RadiusDimension.is_location_outsideÝ   s%   € Ø˜TŸ[™[Ñ(×3Ñ3ˆØ˜Ÿ™Ñ#Ð#r"   c                ó  •— t         ‰| �  |«       | j                  }| j                  j                  s-|j
                  �| j                  «        n| j                  «        |j                  rj| j                  j                  r!t        | j                  | j                  «      }n|j                  }| j                  ||j                  |j                  «       | j                  j!                  | j"                  | j$                  g«       y)z`Create dimension geometry of basic DXF entities in the associated
        BLOCK layout.
        N)r   ÚrenderrA   Údimension_lineÚ	suppress1rG   Úrender_user_locationÚrender_default_locationr&   rh   Úsupports_dxf_r2000r   ra   Úadd_measurement_textrg   re   Úadd_defpointsrD   rF   )r   ÚblockrA   r&   r    s       €r!   rŽ   zRadiusDimension.renderá   sÌ   ø€ ô
 	‰‰�uÔØ×&Ñ&ˆØ×"Ñ"×,Ò,Ø×(Ñ(Ð4Ø×)Ñ)Õ+à×,Ñ,Ô.ð ×ÒØ�}‰}×/Ò/Ü$ T×%5Ñ%5°t·x±xÓ@‘à"×'Ñ'�Ø×%Ñ%Ø�k×/Ñ/°×1JÑ1Jôð
 	�‰×#Ñ# T§[¡[°$×2FÑ2FÐ$GÕHr"   c                óP  — | j                   }| j                  j                  s(| j                  | j                  |j
                  ¬«      }n| j                  }|j
                  rc| j                  r| j                  | j                  «       nt        | «       |j                  r| j                  |«       y| j                  |«       y|j                  dk(  rA| j                  | j                  j                  | j                  «      |«       t        | «       y| j                  |«       y)zBCreate dimension geometry at the default dimension line locations.©Úrotater;   N)rA   rU   r�   Ú	add_arrowrF   r]   r[   Úadd_radial_dim_lineÚadd_center_markrd   Úadd_horiz_ext_line_defaultÚadd_radial_ext_line_defaultrJ   Úadd_radial_dim_line_from_textrD   rK   )r   rA   Úarrow_connection_points      r!   r’   z'RadiusDimension.render_default_locationû   sô   € à×&Ñ&ˆØ�{‰{×$Ò$Ø%)§^¡^Ø×$Ñ$¨[×-HÑ-Hð &4ó &Ñ"ð &*×%9Ñ%9Ð"à×&Ò&Ø×.Ò.Ø×(Ñ(¨×)=Ñ)=Õ>ä Ô%Ø×2Ò2Ø×/Ñ/Ð0FÕGà×0Ñ0Ð1GÕHà×-Ñ-°Ò2à×2Ñ2Ø—K‘K×$Ñ$ T×%9Ñ%9Ó:Ø*ôô   Õ%ð ×(Ñ(Ð)?Õ@r"   c                óè  — | j                   }|j                  }|j                  dk7  }|sd|_        | j                  j                  s(| j                  | j                  |j                  ¬«      }n| j                  }|j                  rq| j                  r| j                  | j                  «       nt        | «       |j                  r| j                  |«       ||_        y| j                  |«       ||_        y|j                  r| j                  |«       ||_        y|j                  dk(  r| j                  |«       ||_        y| j                  |j                  |«       t        | «       ||_        y)z>Create dimension geometry at user defined dimension locations.r<   Fr˜   N)rA   r]   rJ   rU   r�   rš   rF   r[   r›   rœ   rd   Úadd_horiz_ext_line_userÚadd_radial_ext_line_userrI   rŸ   rG   )r   rA   Úpreserve_outsideÚleaderr    s        r!   r‘   z$RadiusDimension.render_user_location  s_  € à×&Ñ&ˆØ&×6Ñ6ÐØ×/Ñ/°1Ñ4ˆÙàð Ô'ð �{‰{×$Ò$Ø%)§^¡^Ø×$Ñ$¨[×-HÑ-Hð &4ó &Ñ"ð &*×%9Ñ%9Ð"Ø×&Ò&Ø×.Ò.Ø×(Ñ(¨×)=Ñ)=Õ>ä Ô%Ø×2Ò2Ø×,Ñ,Ð-CÔDð" '7ˆÕ#ð ×-Ñ-Ð.DÔEð '7ˆÕ#ð ×1Ò1Ø×,Ñ,Ð-CÔDð '7ˆÕ#ð ×1Ñ1°QÒ6à×,Ñ,Ð-CÔDð '7ˆÕ#ð ×6Ñ6Ø#×1Ñ1Ð3Iôô $ DÔ)à&6ˆÕ#r"   c                ót  — | j                   }|j                  «       }|j                  }|j                  dkD  r=| j	                  t
        j                  || j                  |j                  dz  |¬«       |S |j                  }| j                  }|r|dz  }| j	                  |||||¬«       t        ||||«      }|S )zMAdd arrow or tick to dimension line, returns dimension line connection point.r>   rw   )Úinsertro   r   Ú
dxfattribsg     €f@)r§   r   ro   r¨   )
rU   r¨   Úarrow1_nameÚ	tick_sizeÚadd_blockrefr
   ÚobliquerP   rV   r   )r   rŒ   r™   rU   ÚattribsÚ
arrow_namer   r€   s           r!   rš   zRadiusDimension.add_arrowC  sÍ   € à—‘ˆØ×#Ñ#Ó%ˆà×'Ñ'ˆ
Ø×Ñ˜cÒ!Ø×ÑÜ—‘ØØ×,Ñ,Ø×&Ñ&¨Ñ,Ø"ð ô ð* ˆð ×%Ñ%ˆEØ×'Ñ'ˆEÙØ˜‘�à×ÑØØØØØ"ð ô ô (¨
°H¸eÀUÓKˆHØˆr"   c                óv   — | j                   j                  «       }| j                  | j                  ||d¬«       y)zAdd radial dimension line.T©r¨   Úremove_hidden_linesN)r�   r¨   Úadd_linerD   )r   Úendr­   s      r!   r›   z#RadiusDimension.add_radial_dim_linea  s4   € à×%Ñ%×0Ñ0Ó2ˆØ�‰Ø�K‰K˜¨Àdð 	õ 	
r"   c                óØ   — | j                   j                  «       }| j                  dz  }| j                  j                  dk7  r| }| j                  || j                  |z  z   ||d¬«       y)zBAdd radial dimension line, starting point at the measurement text.r<   r   Fr°   N)r�   r¨   r_   rA   rz   r²   rN   )r   Ústartr³   r­   Úhshifts        r!   rŸ   z-RadiusDimension.add_radial_dim_line_from_texth  sn   € à×%Ñ%×0Ñ0Ó2ˆØ×'Ñ'¨!Ñ+ˆØ×Ñ×.Ñ.°!Ò3Ø�WˆFØ�‰Ø�D×%Ñ%¨Ñ.Ñ.ØØØ %ð	 	õ 	
r"   c                óœ  — | j                   j                  «       }| j                  || j                  |¬«       | j                  j
                  dk(  r| j                  j                  }n| j                  }| j                  dz  }d|cxk  rdk  rn n| }| j                  t        |df«      z   }| j                  | j                  ||¬«       y)zXAdd horizontal outside extension line from start for default
        locations.
        ©r¨   r   rx   éZ   i  N)r�   r¨   r²   rX   rA   rz   rU   rV   r_   rP   r   )r   rµ   r­   r   r€   r³   s         r!   r�   z*RadiusDimension.add_horiz_ext_line_defaultu  s³   € ð ×%Ñ%×0Ñ0Ó2ˆØ�‰�e˜T×:Ñ:ÀwˆÔOØ×Ñ×.Ñ.°!Ò3Ø—K‘K×*Ñ*‰Eà×*Ñ*ˆEØ×#Ñ# eÑ+ˆØ�Ô˜ÕØ�FˆEØ×+Ñ+¬d°E¸1°:Ó.>Ñ>ˆØ�‰�d×3Ñ3°SÀWˆÕMr"   c                óø  — | j                   }t        |j                  t        «      sJ ‚| j                  j                  «       }| j                  ||j                  |¬«       |j                  dk(  r| j                  j                  }n| j                  }|j                  j                  | j                  j                  k  r| }|j                  t        |df«      z   }| j                  |j                  ||¬«       y)zDAdd horizontal extension line from start for user defined locations.r¸   r   N)rA   r…   rG   r   r�   r¨   r²   rz   rU   rV   r_   r†   rF   )r   rµ   rA   r­   r   r³   s         r!   r¢   z'RadiusDimension.add_horiz_ext_line_user…  sÏ   € à×&Ñ&ˆÜ˜+×3Ñ3´TÔ:Ð:Ð:Ø×%Ñ%×0Ñ0Ó2ˆØ�‰�e˜[×6Ñ6À7ˆÔKØ×)Ñ)¨QÒ.Ø—K‘K×*Ñ*‰Eà×*Ñ*ˆEØ×$Ñ$×&Ñ&¨$×*>Ñ*>×*@Ñ*@Ò@Ø�FˆEØ×'Ñ'¬$°°q¨zÓ*:Ñ:ˆØ�‰�k×/Ñ/°ÀˆÕIr"   c                óÌ   — | j                   j                  «       }| j                  j                  | j                  z   }|| j
                  |z  z   }| j                  |||d¬«       y)zCAdd radial outside extension line from start for default locations.Tr°   N)r�   r¨   rA   r~   r_   rN   r²   ©r   rµ   r­   Úlengthr³   s        r!   rž   z+RadiusDimension.add_radial_ext_line_default”  s[   € à×%Ñ%×0Ñ0Ó2ˆØ×!Ñ!×*Ñ*¨T×-CÑ-CÑCˆØ�d×'Ñ'¨&Ñ0Ñ0ˆØ�‰�e˜S¨WÈ$ˆÕOr"   c                ó  — | j                   j                  «       }| j                  dz  }| j                  j                  dk(  r| }| j                  j
                  | j                  |z  z   }| j                  |||¬«       y)zGAdd radial outside extension line from start for user defined location.rw   r   r¸   N)r�   r¨   r_   rA   rz   rG   rN   r²   r¼   s        r!   r£   z(RadiusDimension.add_radial_ext_line_user›  st   € à×%Ñ%×0Ñ0Ó2ˆØ×'Ñ'¨#Ñ-ˆØ×Ñ×.Ñ.°!Ò3Ø�WˆFØ×Ñ×,Ñ,¨t×/@Ñ/@À6Ñ/IÑIˆØ�‰�e˜S¨WˆÕ5r"   c                ób   — | j                   j                  «       }| j                  ||||¬«       y)z(Add measurement text to dimension BLOCK.)Úposro   r¨   N)rA   r¨   Úadd_text)r   Údim_textrÀ   ro   r­   s        r!   r”   z$RadiusDimension.add_measurement_text¤  s,   € ð ×"Ñ"×-Ñ-Ó/ˆØ�‰�h C°(ÀwˆÕOr"   c                ó®   ‡ — ˆ fd„}‰ j                   j                  } |d|j                  «        |d|j                  «        |d|j                  «       y)z¾
        Transforms dimension definition points into WCS or if required into OCS.

        Can not be called in __init__(), because inherited classes may be need unmodified values.

        c                ó€   •— ‰j                   j                  | «      }‰j                   j                  |  ||«      «       y r   )r3   Úget_dxf_attribÚset_dxf_attrib)ÚattrÚfuncÚpointr   s      €r!   Úfrom_ucsz6RadiusDimension.transform_ucs_to_wcs.<locals>.from_ucs³  s/   ø€ Ø—N‘N×1Ñ1°$Ó7ˆEØ�N‰N×)Ñ)¨$±°U³Õ<r"   r5   rE   rk   N)rh   rl   Úto_wcsÚto_ocs)r   rÊ   rl   s   `  r!   Útransform_ucs_to_wcsz$RadiusDimension.transform_ucs_to_wcs«  sC   ø€ ô	=ð �m‰m×ÑˆÙ�˜SŸZ™ZÔ(Ù�˜cŸj™jÔ)Ù� #§*¡*Õ-r"   )NN)r3   r   rl   zOptional[UCS]rm   zOptional[DimStyleOverride])r   r'   r   r(   r*   r   )r*   r   )rŒ   r   r*   rY   )r–   r   r*   ÚNone)r*   rÎ   )r™   rY   r*   r   )r³   r   r*   rÎ   )rµ   r   r*   rÎ   )rÂ   r)   rÀ   r   ro   r(   r*   rÎ   )r+   r,   r-   Ú__doc__r7   r   rr   rf   ru   rt   r^   rŽ   r’   r‘   rš   r›   rŸ   r�   r¢   rž   r£   r”   rÍ   r.   r/   s   @r!   r1   r1   %   sÂ   ø„ ñò&1ð "Ø/3ð	UIàðUIð ðUIð -õ	UIónDó4óHóBó:$õIó4Aó>'7óRó<
ó
óNó JóPó6ðPØðPØ"&ðPØ27ðPà	óP÷.r"   r1   c                óR  — | j                   j                  }|dk(  r| j                  j                  }n-|dk(  r| j                  j                  dz  }nt	        d|› �«      ‚| j
                  j                  dd«      }|dk(  ryd}|dk  rt        |«      }d	}t        | j                  «      }t        |df«      }t        d|f«      }d
| j                  j                  i}| j                  ||z
  ||z   |«       | j                  ||z
  ||z   |«       |r—||z   }	|	d|z  k  ry|dz  }
|dz  }t        |	df«      }t        d|	f«      }| j                  ||
z   ||z   |«       | j                  ||
z
  ||z
  |«       | j                  ||z   ||z   |«       | j                  ||z
  ||z
  |«       yy)zƒAdd center mark/lines to radius and diameter dimensions.

    Args:
        dim: RadiusDimension or DiameterDimension renderer
    r:   r9   rw   zInvalid dimension type: Údimcenr   NFTr   r<   )r3   r@   rA   Ú	raw_valueÚ	TypeErrorr   rZ   Úabsr   rD   r�   r   r²   )ÚdimÚdim_typerR   Ú	mark_sizeÚcenter_linesrD   Ú
mark_x_vecÚ
mark_y_vecr¨   ÚsizeÚstart_x_vecÚstart_y_vecÚ	end_x_vecÚ	end_y_vecs                 r!   rœ   rœ   ½  s¼  € ð �}‰}×$Ñ$€HØ�1‚}Ø—‘×*Ñ*‰Ø	�QŠØ—‘×*Ñ*¨SÑ0‰äÐ2°8°*Ð=Ó>Ð>à—‘×!Ñ! (¨AÓ.€IØ�A‚~Øà€LØ�1‚}Ü˜	“Nˆ	ØˆÜ�#—*‘*Ó€Fô �y !�nÓ%€JÜ�q˜)�nÓ%€Jà˜3×-Ñ-×3Ñ3Ð4€JØ‡L�L�˜*Ñ$ f¨zÑ&9¸:ÔFØ‡L�L�˜*Ñ$ f¨zÑ&9¸:ÔFáØ˜6Ñ!ˆØ�!�i‘-ÒØØ  1‘nˆØ  1‘nˆÜ˜$ ˜“Oˆ	Ü˜!˜T˜“Oˆ	Ø�‰�V˜kÑ)¨6°IÑ+=¸zÔJØ�‰�V˜kÑ)¨6°IÑ+=¸zÔJØ�‰�V˜kÑ)¨6°IÑ+=¸zÔJØ�‰�V˜kÑ)¨6°IÑ+=¸zÕJð r"   N)rÕ   r1   r*   rÎ   )Ú
__future__r   Útypingr   r   Ú
ezdxf.mathr   r   r   Úezdxf.toolsr	   Úezdxf.render.arrowsr
   r   Úezdxf.entities.dimstyleoverrider   Úezdxf.lldxf.constr   Úezdxf.render.dim_baser   r   r   r   Úezdxf.entitiesr   Úezdxf.eztypesr   r   r1   rœ   © r"   r!   Ú<module>rë      sW   ðõ #ß *ç &Ñ &Ý ,ß 8Ý <Ý 3÷ó ñ Ý(Ý/ôÐ)ô ôU.Ð+ô U.ôp+Kr"   