Ë
    £èhR¾  ã                  ó¦  — d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZm Z m!Z! d d	l"m#Z# d d
l$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ er0d dlAmBZBmCZCmDZD d dlEmFZF d dlGmHZHmIZI d dlmJZJ d dlKmLZL d dl$mMZM d dlNmOZO  ej                   d«      ZQdZRg d¢ZSh d £ZT ed!i d" ed#d e¬$«      “d% ed&ejª                  ¬'«      “d( ed)d*ej¬                  ¬+«      “d, ed-ej®                  e'¬.«      “d/ ed0ej®                  ¬1«      “d2 ed3ej®                  e'd4¬5«      “d6 ed7d ¬8«      “d9 ed:d;e ej°                  d d-«      e¬<«      “d= ed>ded4 ej°                  dd)«      e¬?«      “d@ edAed4 ej²                  dBdC«       ej´                  dBdC«      ¬D«      “dE edFed4¬G«      “dH edIed4¬G«      “dJ edKed4ej¶                  ej¸                  ¬D«      “dL edMed4ej¶                  ej¸                  ¬D«      “dN eddOd4¬P«      “dQ edRd d4¬P«      “dS edTd d4¬P«      “ edUd d4¬P«       edVej®                  e(d4ejº                  e¬W«      dXœ¥«      Z^ ee^«      Z_ edY edZej®                  e'¬.«       ed[ej®                  e'¬.«       ed\d ¬8«       ed]ej®                  e'¬.«       ed^«       ed_ej®                  e'¬.«      d`œ«      Z` ee`«      Za G da„ db«      Zbe; G dc„ dde8eb«      «       Zcd�de„Zd edf edZej®                  e'¬.«       ed[ej®                  e'¬.«       ed]ej®                  e'¬.«       ed^«       edA«       ed7ej¶                  ¬'«       ed:ej¶                  ¬'«       ed_ej®                  e'¬.«       edgej®                  e'¬.«      dhœ	«      Ze eee«      Zfe; G di„ djec«      «       Zg edk edZej®                  e'¬.«       ed[ej®                  e'¬.«       ed]ej®                  e'¬.«       ed^«      dlœ«      Zh eeh«      Zie; G dm„ dnec«      «       Zj edoi dp edq«      “dr eds«      “dt ed7ej¶                  ej¸                  ¬u«      “dv ed:«      “dw ed> ej°                  d d[«       ejÖ                  d d[«      ¬u«      “dx edy«      “dz edI«      “d{ ed|«      “d} ed~«      “d ed^«      “d€ ed-ej®                  ¬1«      “d� ed‚«      “dƒ edK«      “d„ ed…«      “d† ed‡«      “dˆ edMej¶                  ej¸                  ¬u«      “«      Zld‘d‰„Zmd‘dŠ„Znd‘d‹„Zod‘dŒ„Zpd’d�„Zqd“dŽ„Zr	 d”	 	 	 	 	 	 	 	 	 d•d�„Zsejè                  emejê                  emejì                  eoejî                  enejð                  enejò                  epejô                  eqiZ{y)–é    )Úannotations)ÚTYPE_CHECKINGÚOptionalÚUnionÚIterableÚIterator)ÚSelfN)Ú
AuditError)Ú	validatorÚconst)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)	ÚDXF12ÚSUBCLASS_MARKERÚDXF2010ÚDXF2000ÚDXF2007ÚDXF2004ÚDXFValueErrorÚDXFTableEntryErrorÚDXFTypeError)Úget_xcode_for)ÚVec3ÚMatrix44ÚNULLVECÚZ_AXIS)ÚOCSTransformÚNonUniformScalingError)Útake2)ÚARROWS©Úexplode_entity)ÚEntitySpaceé   )Ú
base_classÚSubclassProcessor)Ú
DXFGraphicÚacdb_entity)Úregister_entity©ÚDimStyleOverride)Údefault_copyÚCopyNotSupported)ÚDXFNamespaceÚ	DXFEntityÚDimStyle)ÚAbstractTagWriter)Ú
BaseLayoutÚBlockLayout)ÚAuditor)ÚEntityQuery)ÚOCS)ÚxrefÚezdxfz*ADSK_CONSTRAINTS)Ú	DimensionÚArcDimensionÚRadialDimensionLargeÚOverrideMixinÚDXF_DIMENSION_TYPESÚregister_override_handles>   Ú	DIMENSIONÚARC_DIMENSIONÚLARGE_RADIAL_DIMENSIONÚAcDbDimensionÚversioni  )ÚdefaultÚ
dxfversionÚgeometryé   )r   Údimstyleé   ÚStandard)rH   r   Údefpointé
   )ÚxtyperH   Útext_midpointé   )rQ   Úinserté   T)rQ   rH   ÚoptionalÚdimtypeéF   )rH   Úattachment_pointéG   é   )rH   rI   r   ÚfixerÚline_spacing_styleéH   )rH   rI   rV   r   r\   Úline_spacing_factoré)   g      Ð?g      @)rI   rV   r   r\   Úactual_measurementé*   )rI   rV   Úunknown1éI   Úflip_arrow_1éJ   Úflip_arrow_2éK   ÚtextÚ )rH   rV   Úoblique_angleé4   Útext_rotationé5   é3   éÒ   )rQ   rH   rV   r   r\   )Úhorizontal_directionÚ	extrusionÚAcDbDimensionDummyé   é   é2   é   é(   é   )Ú	defpoint2Ú	defpoint3ÚangleÚ	defpoint4Úleader_lengthÚ	defpoint5c                  ó<   — e Zd Zdd„Zd	d„Zd
d„Zdd„Zdd„Zdd„Zy)r@   c                óž   — | j                   €J d«       ‚| j                  j                  }| j                   j                  j	                  |«      S )z0Returns the associated :class:`DimStyle` entity.úvalid DXF document required)ÚdocÚdxfrL   Ú	dimstylesÚget)ÚselfÚdim_style_names     ú8lib/python3.12/site-packages/ezdxf/entities/dimension.pyÚget_dim_stylezOverrideMixin.get_dim_styleè   sD   € à�x‰xÐ#ÐBÐ%BÓBÐ#àŸ™×*Ñ*ˆð �x‰x×!Ñ!×%Ñ% nÓ5Ð5ó    c                ó6   — | j                  «       j                  S )z0Returns all valid DXF attributes (internal API).)rŠ   Ú
DXFATTRIBS©r‡   s    r‰   Údim_style_attributesz"OverrideMixin.dim_style_attributesñ   s   € à×!Ñ!Ó#×.Ñ.Ð.r‹   c                ó  ‡ ‡‡
— t        ‰«      Š‰ j                  j                  Š
ˆ
ˆfd„}ˆˆ fd„}|t        kD  rrdD ]  }	 ‰j	                  |«      } |||«       Œ 	 ‰j	                  d«      }‰ j                  j                  j                  |«      }|j                  j                  ‰d<   |t        k\  r"dD ]  }	 ‰j	                  |«      }	 |||	«       Œ ‰S # t
        $ r Y Œ¨w xY w# t
        $ r Y ŒGw xY w# t
        $ r Y ŒKw xY w)a­  `Ezdxf` uses internally only resource names for arrows, linetypes
        and text styles, but DXF 2000 and later requires handles for these
        resources, this method translates resource names into related handles.
        (e.g. 'dimtxsty': 'FancyStyle' -> 'dimtxsty_handle', <handle of FancyStyle>)

        Args:
            data: dictionary of overridden DimStyle attributes as names (ezdxf)
            dxfversion: target DXF version

        Returns: dictionary with resource names replaced by handles

        Raises:
            DXFTableEntry: text style or line type does not exist
            DXFKeyError: referenced block does not exist

        (internal API)

        c                óˆ   •— | dz  } |t         v rt        j                  ‰|«      }|dk(  rd}n‰|   }|j                  }|‰| <   y )NÚ_handleÚ_CLOSEDFILLEDÚ0)r$   Úcreate_blockÚblock_record_handle)Úattrib_nameÚ
block_nameÚhandleÚblockÚblocksÚdatas       €€r‰   Úset_arrow_handlezGOverrideMixin.dim_style_attr_names_to_handles.<locals>.set_arrow_handle  sS   ø€ Ø˜9Ñ$ˆKØœVÑ#ä#×0Ñ0°¸ÓD�
Ø˜_Ò,Ø‘à˜zÑ*�Ø×2Ñ2�Ø &ˆD�Òr‹   c                óÚ   •— 	 ‰j                   j                  j                  |«      }|j                  j                  ‰| dz   <   y # t
        $ r t        j                  d|› d�«       Y y w xY w)Nr’   zRequired line type "z" does not exist.)rƒ   Ú	linetypesr†   r„   r™   r   ÚloggerÚwarning)r—   Úlinetype_nameÚltyperœ   r‡   s      €€r‰   Úset_linetype_handlezJOverrideMixin.dim_style_attr_names_to_handles.<locals>.set_linetype_handle  sh   ø€ ðAØŸ™×*Ñ*×.Ñ.¨}Ó=�ð 16·	±	×0@Ñ0@��[ 9Ñ,Ò-øô &ò XÜ—‘Ð!5°m°_ÐDUÐVÖWðXús   ƒ%A Á"A*Á)A*©ÚdimblkÚdimblk1Údimblk2Ú	dimldrblkÚdimtxstyÚdimtxsty_handle©ÚdimltypeÚdimltex1Údimltex2)Údictrƒ   r›   r   ÚpopÚKeyErrorÚstylesr†   r„   r™   r   )r‡   rœ   rI   r�   r¤   r—   r˜   rª   Útxtstyler¢   r›   s   ``        @r‰   Údim_style_attr_names_to_handlesz-OverrideMixin.dim_style_attr_names_to_handlesõ   s  ú€ ô& �D‹zˆØ—‘—‘ˆõ
	'õ	Að œÒãL�ð>Ø!%§¡¨+Ó!6�Jñ % [°*Õ=ð  Mð>ØŸ8™8 JÓ/�ð  Ÿ8™8Ÿ?™?×.Ñ.¨xÓ8�Ø*2¯,©,×*=Ñ*=�Ð&Ñ'àœÒ ãC�ðDØ$(§H¡H¨[Ó$9�Mñ (¨°]ÕCð  Dð ˆøô/  ò Ùðûô ò Ùðûô  ò Ùðús6   Á CÁC( Â;C7Ã	C%Ã$C%Ã(	C4Ã3C4Ã7	DÄDc                ó¶  — | j                   €J d«       ‚| j                   j                  }| j                  ||«      }g }| j                  «       }|j	                  «       D ]Ú  \  }}||vrt
        j                  d|› d�«       Œ$|j                  |«      }|sŒ8|j                  dkD  sŒH|j                  |kD  r0t
        j                  d|› d| j                   j                  › �«       Œ‡|j                  }|j                  d|f«       |d	k(  r|j                  d
|f«       Œ¿|j                  t        |«      |f«       ŒÜ t        |«      r| j                  dd|«       yy)zÔSet XDATA section ACAD:DSTYLE, to override DIMSTYLE attributes for
        this DIMENSION entity.

        Args:
            data: ``dict`` with DIMSTYLE attribute names as keys.

        (internal API)

        Nr‚   z$Ignore unknown DIMSTYLE attribute: "Ú"r   z Unsupported DIMSTYLE attribute "z" for DXF version i.  r[   iè  ÚACADÚDSTYLE)rƒ   rI   rµ   r�   Úitemsr    Údebugr†   ÚcodeÚacad_releaseÚappendr   ÚlenÚset_xdata_list)	r‡   rœ   Úactual_dxfversionÚtagsr�   ÚkeyÚvalueÚdxf_attrr¼   s	            r‰   Úset_acad_dstylezOverrideMixin.set_acad_dstyle=  sQ  € ð �x‰xÐ#ÐBÐ%BÓBÐ#ð !ŸH™H×/Ñ/ÐØ×3Ñ3°DÐ:KÓLˆØˆØ#×8Ñ8Ó:ÐØŸ*™*ž,‰JˆC�ØÐ.Ñ.Ü—‘ÐCÀCÀ5ÈÐJÔKØØ+×/Ñ/°Ó4ˆHâ˜HŸM™M¨AÓ-Ø×&Ñ&Ð):Ò:Ü—L‘LØ:¸3¸%ð @'Ø'+§x¡x×'<Ñ'<Ð&=ð?ôð Ø—}‘}�Ø—‘˜T 4˜LÔ)Ø˜1’9ð —K‘K  u Õ.à—K‘K¤¨tÓ!4°eÐ <Õ=ð) 'ô, ˆtŒ9Ø×Ñ ¨°$Õ7ð r‹   c                ó¾  ‡‡	— t        ‰«      Š| j                  j                  Š	dˆˆ	fd„}dˆˆ	fd„}dD ]#  }‰j                  |dz   d«      }|sŒ |||«       Œ% ‰j                  dd«      }|r	 ‰	|   }|j                  j
                  ‰d<   dD ]#  }‰j                  |dz   d«      }|sŒ |||«       Œ% ‰S # t        $ r t        j                  d	|› d
�«       Y ŒNw xY w)a¥  `Ezdxf` uses internally only resource names for arrows, line types
        and text styles, but DXF 2000 and later requires handles for these
        resources, this method translates resource handles into related names.
        (e.g. 'dimtxsty_handle', <handle of FancyStyle> -> 'dimtxsty': 'FancyStyle')

        Args:
            data: dictionary of overridden DimStyle attributes as handles,
                requires DXF R2000+

        Returns: dictionary with resource as handles replaced by names

        Raises:
            DXFTableEntry: text style or line type does not exist
            DXFKeyError: referenced block does not exist

        (internal API)

        c                ó*  •— |dk(  rd‰| <   y 	 ‰|   }|j                  j
                  }|j                  d«      r|dd  }t        j                  |«      r|}|‰| <   y # t         $ r- t        j                  d|› d| j                  «       › d�«       Y y w xY w)Nr”   rj   zRequired arrow block #ú does not exist, ignoring ú
 override.Ú_r(   )	r²   r    r¡   Úupperr„   ÚnameÚ
startswithr$   Úis_acad_arrow)r—   r™   Úblock_recordrÍ   Úacad_arrow_namerœ   Údbs        €€r‰   Úset_arrow_namezEOverrideMixin.dim_style_attr_handles_to_names.<locals>.set_arrow_name~  s±   ø€ à˜Š}à$&��[Ñ!ØðØ! &™z�ð  ×#Ñ#×(Ñ(ˆDà�‰˜sÔ#Ø"& q r (�Ü×'Ñ'¨Ô8Ø*�DØ $ˆD�Òøô ò Ü—‘Ø,¨V¨Hð 5 Ø +× 1Ñ 1Ó 3Ð4°Jð@ôñ ðús   ŽA Á3BÂBc                ó¶   •— 	 ‰|   }|j                   j                  ‰| <   y # t        $ r- t        j	                  d|› d| j                  «       › d�«       Y y w xY w)NzRequired line type #rÉ   rÊ   )r„   rÍ   r²   r    r¡   rÌ   )r—   r™   r£   rœ   rÒ   s      €€r‰   Úset_ltype_namezEOverrideMixin.dim_style_attr_handles_to_names.<locals>.set_ltype_name”  se   ø€ ð3Ø˜6™
�ð %*§I¡I§N¡N��[Ò!øô ò Ü—‘Ø*¨6¨(ð 3 Ø +× 1Ñ 1Ó 3Ð4°Jð@öðús   ƒ" ¢3AÁAr¥   r’   rj   r«   Nrª   zRequired text style #z, does not exist, ignoring DIMTXSTY override.r¬   )r—   Ústrr™   rÖ   )	r°   rƒ   Úentitydbr±   r„   rÍ   r²   r    r¡   )
r‡   rœ   rÓ   rÕ   r—   Úblkrec_handler«   r´   r™   rÒ   s
    `       @r‰   Údim_style_attr_handles_to_namesz-OverrideMixin.dim_style_attr_handles_to_namesh  sø   ù€ ô& �D‹zˆØ�X‰X×Ñˆö	%ö,		3ó IˆKØ ŸH™H [°9Ñ%<¸bÓAˆMÚÙ˜{¨MÕ:ð Ið Ÿ(™(Ð#4°dÓ;ˆÙð5Ø˜oÑ.�ð $,§<¡<×#4Ñ#4��ZÑ ó @ˆKØ—X‘X˜k¨IÑ5°rÓ:ˆFÚÙ˜{¨FÕ3ð @ð ˆøô ò Ü—‘Ø+¨OÐ+<ð =2ð 3öðús   Á/B7 Â7"CÃCc                óø   — 	 | j                  dd«      }i }|j                  }t        |«      D ]*  \  }}|j                  }|j                  }||v sŒ#||||   <   Œ, | j                  |«      S # t        $ r i cY S w xY w)zÄGet XDATA section ACAD:DSTYLE, to override DIMSTYLE attributes for
        this DIMENSION entity. Returns a ``dict`` with DIMSTYLE attribute names
        as keys.

        (internal API)
        r¸   r¹   )Úget_xdata_listr   ÚCODE_TO_DXF_ATTRIBr#   rÄ   rÙ   )	r‡   Ú	dim_stylerœ   ÚattribsÚcodesÚcode_tagÚ	value_tagÚ
group_coderÄ   s	            r‰   Úget_acad_dstylezOverrideMixin.get_acad_dstyle¹  s�   € ð	Ø×&Ñ& v¨xÓ8ˆDð ˆØ×,Ñ,ˆÜ#(¨¦;ÑˆH�iØ!Ÿ™ˆJØ—O‘OˆEØ˜UÒ"Ø-2�˜˜jÑ)Ò*ð	 $/ð
 ×3Ñ3°GÓ<Ð<øô ò 	ØŠIð	ús   ‚A+ Á+A9Á8A9N)Úreturnr4   )rä   r   )rœ   r°   rI   rÖ   rä   r°   )rœ   r°   rä   ÚNone)rœ   r°   rä   r°   )rÝ   r4   rä   r°   )	Ú__name__Ú
__module__Ú__qualname__rŠ   r�   rµ   rÆ   rÙ   rã   © r‹   r‰   r@   r@   ç   s%   „ ó6ó/óFóP)8óVOôb=r‹   r@   c                  óX  ‡ — e Zd ZdZdZ eeeee	«      Z
dZdZdZdZdZdZd	Zd
ZdZdZd$ˆ fd„Zefd%ˆ fd„Zefd&d„Zd„ Z	 d'	 	 	 d(ˆ fd„Zd)ˆ fd„Zd*ˆ fd„Zd+ˆ fd„Zed,d„«       Zed-d„«       Z d.d„Z!d/d„Z"d0d„Z#d$d„Z$d1d„Z%d2d„Z&d3d„Z'd4d„Z(d4d„Z)d'd5d „Z*d$ˆ fd!„Z+d6d"„Z,d7ˆ fd#„Z-ˆ xZ.S )8r=   zDXF DIMENSION entityrC   r   r(   rK   rM   é   r[   é   é   é@   é€   c                ó0   •— t         ‰| �  «        d | _        y ©N)ÚsuperÚ__init__Úvirtual_block_content©r‡   Ú	__class__s    €r‰   ró   zDimension.__init__ä  s   ø€ Ü‰ÑÔà<@ˆÕ"r‹   c                ó^   •— t         ‰| �  |¬«      }|j                  j                  d«       |S )N©Úcopy_strategyrJ   )rò   Úcopyr„   Údiscard)r‡   rù   Úvirtual_copyrö   s      €r‰   rú   zDimension.copyé  s/   ø€ Ü"'¡'¡,¸] ,Ó"Kˆð 	×Ñ× Ñ  Ô,ØÐr‹   c                ó  ‡— t        |t        «      sJ ‚| j                  r&t        ˆfd„| j                  D «       «      }||_        y t        | j	                  «       «      }|j
                  j                  d«       ||_        y )Nc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrñ   )rú   )Ú.0Úerù   s     €r‰   Ú	<genexpr>z&Dimension.copy_data.<locals>.<genexpr>ô  s!   øè ø€ ð *Ù/I¨!�×"Ñ" 1×%Ñ/Iùs   ƒrT   )Ú
isinstancer=   rô   r'   Úvirtual_entitiesr„   rû   )r‡   Úentityrù   Úvirtual_contents     ` r‰   Ú	copy_datazDimension.copy_datað  st   ø€ Ü˜&¤)Ô,Ð,Ð,Ø×%Ò%ä)ó *Ø/3×/IÒ/Ió*ó ˆOð (7ˆÕ$ô	 *¨$×*?Ñ*?Ó*AÓBˆOð �J‰J×Ñ˜xÔ(Ø'6ˆÕ$r‹   c                óü   — | j                   }| j                  rd|�a|j                  j                  d¬«      }| j                  D ]  }|j	                  |«       Œ |j
                  | j                  _        d| _        yyy)zÊCalled after binding a virtual dimension entity to a document.

        This method is not called at the loading stage and virtual dimension
        entities do not exist at the loading stage!

        NÚD)Ú	type_char)rƒ   rô   r›   Únew_anonymous_blockÚ
add_entityrÍ   r„   rJ   )r‡   rƒ   rš   r  s       r‰   Úpost_bind_hookzDimension.post_bind_hook   so   € ð �h‰hˆØ×%Ò%¨#¨/à—J‘J×2Ñ2¸SÐ2ÓAˆEà×4Ô4�Ø× Ñ  Õ(ð 5à %§
¡
ˆD�H‰HÔà)-ˆDÕ&ð +:Ð%r‹   c                óŽ   •— t         ‰| �  |«      }|r2|j                  |t        dd¬«       |j                  |t        dd¬«       |S )NrK   T©ÚrecoverrM   F)Úlog)rò   Úload_dxf_attribsÚfast_load_dxfattribsÚacdb_dimension_group_codesÚ acdb_dimension_dummy_group_codes©r‡   Ú	processorr„   rö   s      €r‰   r  zDimension.load_dxf_attribs  sZ   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*ØÔ/°¸Dð +ô ð ×*Ñ*ØÔ5°q¸eð +ô ð
 ˆ
r‹   c                ó¤  •— t         ‰| �  |«       |j                  t        k(  r| j                  j                  |g d¢«       y|j                  t        t        j                  «       | j                  }| j                  j                  |g d¢«       | j                  «       dk7  ry|dk(  rK|j                  t        d«       | j                  j                  |g d¢«       |j                  t        d«       y|d	k(  r5|j                  t        d«       | j                  j                  |g d¢«       y|d
k(  r5|j                  t        d«       | j                  j                  |g d¢«       y|dk(  r5|j                  t        d«       | j                  j                  |ddg«       y|dk(  r5|j                  t        d«       | j                  j                  |ddg«       y|dk(  r5|j                  t        d«       | j                  j                  |g d¢«       y|dk(  r5|j                  t        d«       | j                  j                  |ddg«       yy)ú(Export entity specific data as DXF tags.)rJ   rL   rO   rR   rT   rW   ri   rz   r{   r}   r   r~   r|   rq   rk   rm   N)rG   rJ   rL   rO   rR   rT   rW   rY   r]   r_   ra   rc   re   rg   ri   rk   rm   rq   rr   rC   r   ÚAcDbAlignedDimension)rz   r{   r|   ÚAcDbRotatedDimensionr(   rK   ÚAcDb2LineAngularDimension)rz   r{   r}   r   rM   ÚAcDbDiametricDimensionr}   r~   rë   ÚAcDbRadialDimensionr[   ÚAcDb3PointAngularDimensionrì   ÚAcDbOrdinateDimensionrz   r{   )rò   Úexport_entityrI   r   r„   Úexport_dxf_attribsÚ
write_tag2r   Úacdb_dimensionrÍ   rW   Údxftype)r‡   Ú	tagwriterÚdim_typerö   s      €r‰   r   zDimension.export_entity!  sò  ø€ ä‰Ñ˜iÔ(Ø×Ñ¤5Ò(Ø�H‰H×'Ñ'Øòôð* ð 	×Ñœ_¬n×.AÑ.AÔBØ—<‘<ˆØ�‰×#Ñ#Øòô	
ð8 �<‰<‹>˜[Ò(Øà�qŠ=Ø× Ñ ¤Ð2HÔIØ�H‰H×'Ñ'¨	Ò3VÔWà× Ñ ¤Ð2HÕIØ˜Š]Ø× Ñ ¤Ð2HÔIØ�H‰H×'Ñ'¨	Ò3VÕWØ˜Š]Ø× Ñ ¤Ð2MÔNØ�H‰H×'Ñ'ØÒOõð ˜Š]Ø× Ñ ¤Ð2JÔKØ�H‰H×'Ñ'¨	°KÀÐ3QÕRØ˜Š]Ø× Ñ ¤Ð2GÔHØ�H‰H×'Ñ'¨	°KÀÐ3QÕRØ˜Š]Ø× Ñ ¤Ð2NÔOØ�H‰H×'Ñ'ØÒOõð ˜Š]Ø× Ñ ¤Ð2IÔJØ�H‰H×'Ñ'¨	°KÀÐ3MÕNð r‹   c                óî  •— | j                   €J ‚t        ‰| �	  |«       |j                  | j                  j
                  «       | j                  j                  }| j                   j                  j                  |«      r|j                  |«       | j                  dd«      sy | j                   j                  t        j                  kD  rt        | |«       y | j                  «       j!                  |«       y )Nr¸   r¹   )rƒ   rò   Úregister_resourcesÚadd_dim_styler„   rL   rJ   Úblock_recordsÚ	has_entryÚadd_block_nameÚhas_xdata_listrI   r   r   rB   ÚoverrideÚregister_resources_r12)r‡   ÚregistryrJ   rö   s      €r‰   r(  zDimension.register_resourcesz  s¶   ø€ Ø�x‰xÐ#Ð#Ð#Ü‰Ñ" 8Ô,Ø×Ñ˜tŸx™x×0Ñ0Ô1Ø—8‘8×$Ñ$ˆØ�8‰8×!Ñ!×+Ñ+¨HÔ5Ø×#Ñ# HÔ-à×"Ñ" 6¨8Ô4Øà�8‰8×Ñ¤§¡Ò,ä% d¨HÕ5ð �M‰M‹O×2Ñ2°8Õ<r‹   c                óä  •— t         ‰| �  ||«       |j                  | j                  j                  «      |j                  _        |j                  | j                  j                  «      |j                  _        | j                  €J ‚| j                  j                  t        j                  kD  ry | j                  «       }|j                  sy t        |t        «      sJ ‚|j                  ||«       y rñ   )rò   Úmap_resourcesrŠ   r„   rL   Úget_block_namerJ   rƒ   rI   r   r   r.  Údimstyle_attribsr  r=   Úmap_resources_r12)r‡   ÚcloneÚmappingÚself_overriderö   s       €r‰   r2  zDimension.map_resourcesŒ  s¶   ø€ Ü‰Ñ˜e WÔ-Ø$×2Ñ2°4·8±8×3DÑ3DÓEˆ�	‰	ÔØ$×3Ñ3°D·H±H×4EÑ4EÓFˆ�	‰	Ôð �x‰xÐ#Ð#Ð#Ø�8‰8×Ñ¤§¡Ò,ØØŸ™›ˆØ×-Ò-ØÜ˜%¤Ô+Ð+Ð+Ø×'Ñ'¨¨wÕ7r‹   c                ó4   — | j                   j                  dz  S )z7:attr:`dxf.dimtype` without binary flags (32, 62, 128).rw   )r„   rW   rŽ   s    r‰   rW   zDimension.dimtypeœ  s   € ð �x‰x×Ñ "Ñ$Ð$r‹   c                óh   — | j                   }|j                  t        k(  xr |j                  d«       S )z]Returns ``True`` if the DIMENSION entity is a dimensional
        constraint object.
        rJ   )r„   ÚlayerÚADSK_CONSTRAINTSÚhasattr)r‡   r„   s     r‰   Úis_dimensional_constraintz#Dimension.is_dimensional_constraint¨  s.   € ð
 �h‰hˆØ�y‰yÔ,Ñ,ÒL°S·[±[ÀÓ5LÐ1LÐLr‹   c                ó„   — | j                   j                  dd«      }| j                  j                  j                  |«      S )a  Returns :class:`~ezdxf.layouts.BlockLayout` of associated anonymous
        dimension block, which contains the entities that make up the dimension
        picture. Returns ``None`` if block name is not set or the BLOCK itself
        does not exist

        rJ   Ú*)r„   r†   rƒ   r›   )r‡   r˜   s     r‰   Úget_geometry_blockzDimension.get_geometry_block°  s1   € ð —X‘X—\‘\ *¨cÓ2ˆ
Ø�x‰x�‰×"Ñ" :Ó.Ð.r‹   c                ó†   — t         j                  | j                  «      }|r || «      S t        d| j                  › d�«      ‚)a2  Returns the actual dimension measurement in :ref:`WCS` units, no
        scaling applied for linear dimensions. Returns angle in degrees for
        angular dimension from 2 lines and angular dimension from 3 points.
        Returns vector from origin to feature location for ordinate dimensions.

        zUnknown DIMENSION type Ú.)ÚMEASUREMENT_TOOLSr†   rW   Ú	TypeError)r‡   Útools     r‰   Úget_measurementzDimension.get_measurementº  s>   € ô !×$Ñ$ T§\¡\Ó2ˆÙÙ˜“:ÐäÐ5°d·l±l°^À1ÐEÓFÐFr‹   c                ó   — t        | «      S )z=Returns the :class:`~ezdxf.entities.DimStyleOverride` object.r.   rŽ   s    r‰   r.  zDimension.overrideÇ  s   € ä Ó%Ð%r‹   c                ón   — | j                   rt        d«      ‚| j                  «       j                  «        y)z—Renders the graphical representation of the DIMENSION entity as DXF
        primitives (TEXT, LINE, ARC, ...) into an anonymous content BLOCK.
        zcan not render virtual entityN)Ú
is_virtualr   r.  ÚrenderrŽ   s    r‰   rK  zDimension.renderË  s+   € ð �?Š?ÜÐ>Ó?Ð?ð 	�‰‹×ÑÕ r‹   c                ó�  ‡— dˆfd„}| j                   Št        | j                   j                  |«      }dD ]  } |||j                  «       Œ dD ]  } |||j                  «       Œ dD ]  } |||j
                  «       Œ |j                  ‰_        ‰j                  d«      s| j                  |«       | j                  |«       | S )z”Transform the DIMENSION entity by transformation matrix `m` inplace.

        Raises ``NonUniformScalingError()`` for non uniform scaling.

        c                óx   •— ‰j                  | «      r(‰j                  |  |‰j                  | «      «      «       y y rñ   ©r=  Úsetr†   ©rÍ   Úfuncr„   s     €r‰   Útransform_if_existz/Dimension.transform.<locals>.transform_if_existÝ  ó/   ø€ Ø�{‰{˜4Ô Ø—‘˜™d 3§7¡7¨4£=Ó1Õ2ð !r‹   )rR   r   rT   )rm   rq   r|   )rO   rz   r{   r}   rT   ©rÍ   rÖ   )
r„   r!   rr   Útransform_vertexÚtransform_deg_angleÚ	transformÚnew_extrusionr=  Ú_transform_block_contentÚpost_transform)r‡   ÚmrR  ÚocsÚvertex_nameÚ
angle_namer„   s         @r‰   rW  zDimension.transformÖ  s¼   ø€ õ	3ð �h‰hˆÜ˜4Ÿ8™8×-Ñ-¨qÓ1ˆãCˆKÙ˜{¨C×,@Ñ,@ÕAð Dó MˆJÙ˜z¨3×+BÑ+BÕCð Mó OˆKÙ˜{¨A¯K©KÕ8ð Oð ×)Ñ)ˆŒð �{‰{˜8Ô$Ø×)Ñ)¨!Ô,Ø×Ñ˜AÔØˆr‹   c                óx   — | j                   s| j                  r| j                   }n| j                  «       }|xs g S rñ   )rô   rJ  rA  )r‡   Úcontents     r‰   Ú_block_contentzDimension._block_contentö  s4   € Ø×%Ò%¨¯ªØ×0Ñ0‰Gà×-Ñ-Ó/ˆGØŠ}˜"Ðr‹   c                ó|   — | j                  «       D ]  }	 |j                  |«       Œ y # t        t        f$ r Y Œ)w xY wrñ   )ra  rW  ÚNotImplementedErrorr"   )r‡   r[  r  s      r‰   rY  z"Dimension._transform_block_contentý  sB   € Ø×)Ñ)Ö+ˆFðØ× Ñ  Õ#ñ ,øô (Ô)?Ð@ò Ùðús   •)©;º;c              #  ó&  ‡K  — dˆfd„}| j                  «       Š| j                  j                  j                  }d}| j                  j	                  dd«      }|rOt        ‰j                  |«      «      }t        j                  |j                  |j                  |j                  «      }| j                  «       D ]E  }	 |j                  t        ¬«      }‰j                  r	 |||«       |�|j                  |«       |–— ŒG y# t        $ r Y ŒTw xY w­w)z0Implements the SupportsVirtualEntities protocol.c                óø  •— | j                  «       }| j                  }|dk(  ra‰j                  |j                  j	                  |¬«      «      |_        ‰j                  |j
                  j	                  |¬«      «      |_        y |dk(  rr| j                  «        ‰j                  |_        ‰j                  |j                  «      |_	        ‰j                  |j                  j	                  |¬«      «      |_
        y |dk(  r1‰j                  |j                  j	                  |¬«      «      |_        y ‰j                  |_        |j                  d«      r"|j                  j	                  |¬«      |_
        y |j                  d«      r"|j                  j	                  |¬«      |_        y |dk(  rNt        j                  D ]:  }|j!                  |t"        «      j	                  |¬«      }|j%                  ||«       Œ< y y )NÚLINE)ÚzÚMTEXTÚPOINTrT   ÚcenterÚSOLID)r$  r„   Úto_wcsÚstartÚreplaceÚendÚ"convert_rotation_to_text_directionÚuzrr   Útext_directionrT   Úlocationr=  rj  r   ÚVERTEXNAMESr†   r   rO  )r   Ú	elevationr$  r„   Úvtx_nameÚpointr\  s         €r‰   Ú
ocs_to_wcsz2Dimension.__virtual_entities__.<locals>.ocs_to_wcs  s„  ø€ ð —i‘i“kˆGØ—%‘%ˆCØ˜&Ò ØŸJ™J s§y¡y×'8Ñ'8¸9Ð'8Ó'EÓF�”	ØŸ*™* S§W¡W§_¡_°y _Ó%AÓB�•Ø˜GÒ#Ø×4Ñ4Ô6Ø #§¡�”Ø%(§Z¡Z°×0BÑ0BÓ%C�Ô"Ø ŸZ™Z¨¯
©
×(:Ñ(:¸YÐ(:Ó(GÓH�•
Ø˜GÒ#Ø"Ÿz™z¨#¯,©,×*>Ñ*>ÀÐ*>Ó*KÓL�•à #§¡�”à—;‘;˜xÔ(Ø!$§¡×!3Ñ!3°iÐ!3Ó!@�C•JØ—[‘[ Ô*Ø!$§¡×!3Ñ!3°iÐ!3Ó!@�C•JØ Ò'ô %*×$5Ô$5˜Ø #§¡¨´'Ó :× BÑ BÀYÐ BÓ O˜ØŸ™ ¨%Õ0ñ %6ð (r‹   NrT   rø   )r   r+   ru  Úfloat)r\  r„   rR   rg  r†   r   rl  r   Ú	translateÚxÚyra  rú   r0   r1   rW  )r‡   rx  Údim_elevationr[  rT   r  rú   r\  s          @r‰   Ú__virtual_entities__zDimension.__virtual_entities__  sã   øè ø€ õ	1ð< �h‰h‹jˆØŸ™×.Ñ.×0Ñ0ˆØ!ˆØ—‘—‘˜h¨Ó-ˆÙÜ˜#Ÿ*™* VÓ,Ó-ˆFÜ×"Ñ" 6§8¡8¨V¯X©X°v·x±xÓ@ˆAà×)Ñ)Ö+ˆFðØ—{‘{´�{Ó>�ð �}Š}ñ ˜4 Ô/àˆ}Ø—‘˜qÔ!Ø‹Jñ ,øô $ò Ùðüs*   ƒB9DÂ=DÃ/DÄ	DÄDÄDÄDc                ó"   — | j                  «       S )aW  Yields the graphical representation of the anonymous content BLOCK as virtual
        DXF primitives (LINE, ARC, TEXT, ...).

        These virtual entities are located at the original location of the DIMENSION entity,
        but they are not stored in the entity database, have no handle and are not
        assigned to any layout.

        )r~  rŽ   s    r‰   r  zDimension.virtual_entities=  s   € ð ×(Ñ(Ó*Ð*r‹   c                ó   — t        | |«      S )aÑ  Explodes the graphical representation of the DIMENSION entity as DXF
        primitives (LINE, ARC, TEXT, ...) into the target layout, ``None`` for the same
        layout as the source DIMENSION entity.

        Returns an :class:`~ezdxf.query.EntityQuery` container containing all DXF
        primitives.

        Args:
            target_layout: target layout for the DXF primitives, ``None`` for same
                layout as source DIMENSION entity.

        r%   )r‡   Útarget_layouts     r‰   ÚexplodezDimension.explodeH  s   € ô ˜d MÓ2Ð2r‹   c                ó&   •— | ` t        ‰| �	  «        y rñ   )rô   rò   Údestroyrõ   s    €r‰   r„  zDimension.destroyW  s   ø€ àÐ&Ü‰‰Õr‹   c                óÒ   — | j                   rR| j                  j                  dd«      }|r4| j                   j                  j                  |«      }|�|j                  fS t        «       S )z(Support for "ReferencedBlocks" protocol.rJ   N)rƒ   r„   r†   r›   r–   Útuple)r‡   r˜   rš   s      r‰   Ú__referenced_blocks__zDimension.__referenced_blocks__\  sT   € à�8Š8ØŸ™Ÿ™ j°$Ó7ˆJÙØŸ™Ÿ™×+Ñ+¨JÓ7�ØÐ$Ø!×5Ñ5Ð7Ð7Ü‹wˆr‹   c                óð  •— t         ‰| �  |«       |j                  }| j                  }| j                  s^|j                  dd«      |j                  vr@|j                  t        j                  dt        | «      › d�¬«       |j                  | «       y |j                  dd«      }|j                  j                  |«      s7|j                  t        j                  d|› d	�¬«       |j                  d«       y y )
NrJ   r@  zRemoved z without valid geometry block.)r¼   ÚmessagerL   rN   zReplaced invalid DIMSTYLE 'z' by 'Standard'.)rò   Úauditrƒ   r„   r>  r†   r›   Úfixed_errorr
   ÚUNDEFINED_BLOCKrÖ   Útrashr…   r+  ÚINVALID_DIMSTYLErû   )r‡   Úauditorrƒ   r„   rL   rö   s        €r‰   rŠ  zDimension.auditf  sß   ø€ Ü‰‰�gÔØ�k‰kˆØ�h‰hˆð ×.Ò.Ø—‘˜
 CÓ(°·
±
Ñ:à×ÑÜ×/Ñ/Ø"¤3 t£9 +Ð-KÐLð  ô ð �M‰M˜$ÔØà—7‘7˜: zÓ2ˆØ�}‰}×&Ñ& xÔ0Ø×ÑÜ×0Ñ0Ø5°h°ZÐ?OÐPð  ô ð �K‰K˜
Õ#ð 1r‹   )rä   rå   )rä   r=   )r  r	   rä   rå   rñ   ©r  zOptional[SubclassProcessor]rä   r2   ©r%  r5   rä   rå   )r0  úxref.Registryrä   rå   )r6  r	   r7  zxref.ResourceMapperrä   rå   )rä   Úint)rä   Úbool)rä   zOptional[BlockLayout])rä   zUnion[float, Vec3])rä   r/   )r[  r   rä   r=   )rä   zIterable[DXFGraphic])r[  r   rä   rå   )rä   zIterator[DXFGraphic])r�  zOptional[BaseLayout]rä   r9   )rä   zIterable[str])r�  r8   rä   rå   )/ræ   rç   rè   Ú__doc__ÚDXFTYPEr   r)   r,   r#  Úacdb_dimension_dummyr�   ÚLINEARÚALIGNEDÚANGULARÚDIAMETERÚRADIUSÚ
ANGULAR_3PÚORDINATEÚARCÚORDINATE_TYPEÚUSER_LOCATION_OVERRIDEró   r0   rú   r  r  r  r   r(  r2  ÚpropertyrW   r>  rA  rG  r.  rK  rW  ra  rY  r~  r  r‚  r„  r‡  rŠ  Ú__classcell__©rö   s   @r‰   r=   r=   Î  s  ø„ áà€GÙØ�K Ð1Eó€Jð €FØ€GØ€GØ€HØ€FØ€JØ€HØ
€CØ€MØ Ðõ
Að
 ".ö ð 5Aô 7ò .ð& 8<ðØ4ðà	õõWOõr=õ$8ð  ò%ó ð%ð òMó ðMó/óGó&ó	!óó@óó7ór	+ô3õó
÷$ñ $r‹   r=   c                ój   — | j                  dd«      }|D ]  \  }}|dk(  sŒ|j                  |«       Œ y )Nr¸   r¹   ií  )rÛ   Ú
add_handle)r  r0  Úoverride_tagsr¼   rÄ   s        r‰   rB   rB   �  s7   € Ø×)Ñ)¨&°(Ó;€MÛ$‰ˆˆeØ�4‹<Ø×Ñ Õ&ñ %r‹   ÚAcDbArcDimensioné   ©	rz   r{   r}   Ústart_angleÚ	end_angleÚ
is_partialÚ
has_leaderÚleader_point1Úleader_point2c                  ól   ‡ — e Zd ZdZdZ eeeee	«      Z
eZ	 d	 	 	 dˆ fd„Zd	d„Zd
ˆ fd„Zdˆ fd„Zˆ xZS )r>   zDXF ARC_DIMENSION entityrD   c                ó–   •— t         t        | �  |«      }|r2|j                  |t        dd¬«       |j                  |t
        dd¬«       |S ©NrK   Tr  rM   )rò   r=   r  r  r  Úacdb_arc_dimension_group_codesr  s      €r‰   r  zArcDimension.load_dxf_attribs©  s\   ø€ ô ”I˜tÑ5°iÓ@ˆÙØ×*Ñ*ØÔ/°¸Dð +ô ð ×*Ñ*ØÔ3°QÀð +ô ð ˆ
r‹   c                ó˜   — |t         j                  kD  r| j                  j                  dz  dz  S | j                  j                  dz  dz  S )Niðÿ  rí   r[   )r   ÚDXF2013r„   rW   )r‡   rI   s     r‰   Úversioned_dimtypezArcDimension.versioned_dimtype·  sB   € ØœŸ™Ò%Ø—H‘H×$Ñ$ vÑ-°Ñ2Ð2à—H‘H×$Ñ$ vÑ-°Ñ2Ð2r‹   c                ó.  •— | j                   j                  }| j                  |j                  «      | j                   _        t        ‰| �  |«       |j                  t        d«       | j                   j                  |g d¢«       || j                   _        y)r  r¨  rª  N)	r„   rW   r·  rI   rò   r   r"  r   r!  )r‡   r%  rW   rö   s      €r‰   r   zArcDimension.export_entity½  su   ø€ à—(‘(×"Ñ"ˆØ×1Ñ1°)×2FÑ2FÓGˆ�‰ÔÜ‰Ñ˜iÔ(Ø×Ñœ_Ð.@ÔAØ�‰×#Ñ#Øò
ô	
ð #ˆ�‰Õr‹   c                ó€   •‡— dˆfd„}| j                   Št        ‰| �	  |«       dD ]  } |||j                  «       Œ | S )z˜Transform the ARC_DIMENSION entity by transformation matrix `m` inplace.

        Raises ``NonUniformScalingError()`` for non uniform scaling.

        c                óx   •— ‰j                  | «      r(‰j                  |  |‰j                  | «      «      «       y y rñ   rN  rP  s     €r‰   rR  z2ArcDimension.transform.<locals>.transform_if_existÚ  rS  r‹   )r¯  r°  rT  ©r„   rò   rW  ©r‡   r[  rR  r]  r„   rö   s       @€r‰   rW  zArcDimension.transformÓ  s?   ù€ õ	3ð �h‰hˆÜ‰Ñ˜!ÔÛ=ˆKÙ˜{¨A¯K©KÕ8ð >ð ˆr‹   rñ   r�  )rI   rÖ   rä   r“  r‘  ©r[  r   rä   r	   )ræ   rç   rè   r•  r–  r   r)   r,   r#  Úacdb_arc_dimensionr�   r   ÚMIN_DXF_VERSION_FOR_EXPORTr  r·  r   rW  r£  r¤  s   @r‰   r>   r>   œ  sW   ø„ á"ð
 €GÙØ�K Ð1Có€Jð ")Ðð 8<ðØ4ðà	õó3õ#÷,ñ r‹   r>   ÚAcDbRadialDimensionLarge©Úchord_pointÚoverride_centerÚ	jog_pointÚunknown2c                  ód   ‡ — e Zd ZdZdZ eeeee	«      Z
eZ	 d	 	 	 dˆ fd„Zdˆ fd„Zd	ˆ fd„Zˆ xZS )
r?   z!DXF LARGE_RADIAL_DIMENSION entityrE   c                ó–   •— t         t        | �  |«      }|r2|j                  |t        dd¬«       |j                  |t
        dd¬«       |S r³  )rò   r=   r  r  r  Ú'acdb_radial_dimension_large_group_codesr  s      €r‰   r  z%RadialDimensionLarge.load_dxf_attribs  s\   ø€ ô ”I˜tÑ5°iÓ@ˆÙØ×*Ñ*ØÔ/°¸Dð +ô ð ×*Ñ*ØÔ<¸aÈð +ô ð ˆ
r‹   c                óŒ   •— t         ‰| �  |«       |j                  t        d«       | j                  j                  |g d¢«       y)r  rÀ  rÁ  N)rò   r   r"  r   r„   r!  )r‡   r%  rö   s     €r‰   r   z"RadialDimensionLarge.export_entity  s9   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_Ð.HÔIØ�‰×#Ñ#ØÚGõ	
r‹   c                ó€   •‡— dˆfd„}| j                   Št        ‰| �	  |«       dD ]  } |||j                  «       Œ | S )z©Transform the LARGE_RADIAL_DIMENSION entity by transformation matrix
        `m` inplace.

        Raises ``NonUniformScalingError()`` for non uniform scaling.

        c                óx   •— ‰j                  | «      r(‰j                  |  |‰j                  | «      «      «       y y rñ   rN  rP  s     €r‰   rR  z:RadialDimensionLarge.transform.<locals>.transform_if_exist   rS  r‹   )rÂ  rÃ  Ú	Jog_pointrT  r»  r¼  s       @€r‰   rW  zRadialDimensionLarge.transform  s@   ù€ õ	3ð �h‰hˆÜ‰Ñ˜!ÔãJˆKÙ˜{¨A¯K©KÕ8ð Kð ˆr‹   rñ   r�  r‘  r½  )ræ   rç   rè   r•  r–  r   r)   r,   r#  Úacdb_radial_dimension_larger�   r   r¿  r  r   rW  r£  r¤  s   @r‰   r?   r?   ÷  sP   ø„ á+à&€GÙØ�K Ð1Ló€Jð ")Ðð 8<ðØ4ðà	õõ
÷ñ r‹   r?   ÚAcDbDimAssocÚ	dimensioniJ  Ú
point_flagéZ   Útrans_space)r   r\   Úrotated_dim_typeÚ
osnap_typeÚ	object_idiK  Úobject_subtypeÚobject_gs_markeré[   Úobject_xref_idi-  Ú
near_paramÚosnap_pointÚintersect_idiL  Úintersect_subtypeÚintersect_gs_markeré\   Úintersect_xref_idi.  Úhas_last_point_refc           
     óÀ   — | j                   }t        |j                  |j                  t	        j
                  |j                  dd«      «      | j                  «       «      S )Nr|   r   )r„   Úlinear_measurementrz   r{   ÚmathÚradiansr†   r\  )Údimr„   s     r‰   Úmeasure_linear_distancerç  ~  sF   € Ø
�'‰'€CÜØ�‰Ø�‰Ü�‰�S—W‘W˜W aÓ(Ó)Ø�‰‹	ó	ð r‹   c                óœ   — t        | j                  j                  «      }t        | j                  j                  «      }||z
  j                  S rñ   )r   r„   rO   r}   Ú	magnitude)ræ  Úp1Úp2s      r‰   Úmeasure_diameter_or_radiusrì  ˆ  s:   € Ü	ˆc�g‰g×ÑÓ	€BÜ	ˆc�g‰g×ÑÓ	 €BØ�‰G×ÑÐr‹   c                óî   — | j                   }t        |j                  «      }t        |j                  «      }t        |j                  «      }t        |j
                  «      }||z
  }||z
  }t        ||«      S rñ   )r„   r   rz   r{   r}   rO   Úangle_between)ræ  r„   rê  rë  Úp3Úp4Údir1Údir2s           r‰   Úmeasure_angle_between_two_linesró  Ž  sb   € Ø
�'‰'€CÜ	ˆc�m‰mÓ	€BÜ	ˆc�m‰mÓ	€BÜ	ˆc�m‰mÓ	€BÜ	ˆc�l‰lÓ	€BØ�‰7€DØ�‰7€DÜ˜˜tÓ$Ð$r‹   c                óÄ   — | j                   }t        |j                  «      }t        |j                  «      }t        |j                  «      }||z
  }||z
  }t        ||«      S rñ   )r„   r   r}   rz   r{   rî  )ræ  r„   rê  rë  rï  rñ  rò  s          r‰   Ú"measure_angle_between_three_pointsrõ  ™  sT   € Ø
�'‰'€CÜ	ˆc�m‰mÓ	€BÜ	ˆc�m‰mÓ	€BÜ	ˆc�m‰mÓ	€BØ�‰7€DØ�‰7€DÜ˜˜tÓ$Ð$r‹   c                óˆ   — t        | j                  j                  «      }t        | j                  j                  «      }||z
  S rñ   )r   r„   rO   rz   )ræ  ÚoriginÚfeature_locations      r‰   Úget_feature_locationrù  £  s6   € Ü�#—'‘'×"Ñ"Ó#€FÜ˜CŸG™G×-Ñ-Ó.ÐØ˜fÑ$Ð$r‹   c                óL   — |j                   | j                   z
  }|dk  r|dz   S |S )Nr   ih  )Ú	angle_deg)Úv1Úv2r|   s      r‰   rî  rî  ©  s)   € Ø�L‰L˜2Ÿ<™<Ñ'€EØ !š)ˆ5�3‰;Ð.¨Ð.r‹   c                óB  — |�X|j                   dk7  rI|j                  | «      } |j                  |«      }t        j                  |«      }|j                  |«      }nt        j                  |«      }|j	                  | «      }|j	                  |«      }||z
  j
                  S )zwReturns distance from `p1` to `p2` projected onto ray defined by
    `angle`, `angle` in radians in the xy-plane.

    )r   r   r(   )rq  rl  r   Ú
from_angleÚprojectré  )rê  rë  r|   r\  Úocs_directionÚmeasurement_directionÚt1Út2s           r‰   rã  rã  ®  sŒ   € ð €˜3Ÿ6™6 YÒ.Ø�Z‰Z˜‹^ˆØ�Z‰Z˜‹^ˆäŸ™¨Ó.ˆØ #§
¡
¨=Ó 9Ñô !%§¡°Ó 6Ðà	×	&Ñ	& rÓ	*€BØ	×	&Ñ	& rÓ	*€BØ�‰G×ÑÐr‹   )r  r3   r0  r’  rä   rå   )ræ  r=   rä   ry  )ræ  r=   rä   r   )rü  r   rý  r   rä   ry  )r   N)
rê  r   rë  r   r|   ry  r\  zOptional[OCS]rä   ry  )|Ú
__future__r   Útypingr   r   r   r   r   Útyping_extensionsr	   rä  ÚloggingÚezdxf.auditr
   Úezdxf.lldxfr   r   Úezdxf.lldxf.attributesr   r   r   r   r   r   Úezdxf.lldxf.constr   r   r   r   r   r   r   r   r   Úezdxf.lldxf.typesr   Ú
ezdxf.mathr   r   r   r    Úezdxf.math.transformtoolsr!   r"   Úezdxf.toolsr#   Úezdxf.render.arrowsr$   Úezdxf.exploder&   Úezdxf.entitydbr'   Ú	dxfentityr)   r*   Údxfgfxr+   r,   Úfactoryr-   Údimstyleoverrider/   rú   r0   r1   Úezdxf.entitiesr2   r3   r4   Úezdxf.lldxf.tagwriterr5   Úezdxf.layoutsr6   r7   r8   Úezdxf.queryr9   r:   r<   r;   Ú	getLoggerr    r<  Ú__all__rA   Úis_valid_block_nameÚis_valid_table_nameÚpoint3dÚis_in_integer_rangeÚis_in_float_rangeÚfit_into_float_rangeÚis_integer_boolÚfix_integer_boolÚis_not_null_vectorr#  r  r—  r  r@   r=   rB   r¾  r´  r>   rÍ  rÈ  r?   Úfit_into_integer_rangeÚacdb_dim_assocrç  rì  ró  rõ  rù  rî  rã  Ú
DIM_LINEARÚDIM_ALIGNEDÚDIM_ANGULARÚDIM_DIAMETERÚ
DIM_RADIUSÚDIM_ANGULAR_3PÚDIM_ORDINATErD  ré   r‹   r‰   Ú<module>r0     s`  ðõ #ß EÕ EÝ "ã Û Ý "ß (÷÷ ÷
÷ 
õ 
õ ,ß 6Ó 6ß JÝ Ý &Ý (Ý &ß 4ß +Ý $Ý .ß 0áß@Ñ@Ý7ß5Ý#Ý'ÝÝð 
ˆ×	Ñ	˜7Ó	#€Ø&Ð ò€ò OÐ áØð@à‘7˜3¨°gÔ>ð@ð 	‘G˜A¨×)FÑ)FÔGð@ð 	‘GØØØ×3Ñ3ô
ð@ð  	‘G˜B e§m¡m¸WÔEð!@ð$ 	™ ¨5¯=©=Ô9ð%@ð* 	‘'˜" E§M¡M¸7ÈTÔRð+@ðT 	‘7˜2 qÔ)ðU@ðj 	™GØØØØ3�i×3Ñ3°A°rÓ:Ø ô
ðk@ð~ 	™gØØØØØ3�i×3Ñ3°A°qÓ9Ø ô
ð@ðT 	™wØØØØ1�i×1Ñ1°$¸Ó=Ø0�)×0Ñ0°°tÓ<ô 
ðU@ðd 	™g b°WÀtÔLðe@ðf 	‘G˜B¨7¸TÔBðg@ðh 	™ØØØØ×/Ñ/Ø×,Ñ,ô
ði@ðv 	™ØØØØ×/Ñ/Ø×,Ñ,ô
ðw@ðN 	‘˜ 2°Ô5ðO@ðX 	™ ¨Q¸Ô>ðY@ð` 	™ ¨Q¸Ô>ða@ñn !(¨°AÀÔ EÙØØ—-‘-ØØØ×2Ñ2Ø ô
òq@óC€ñH 0°Ó?Ð á"Øñ ˜R u§}¡}¸gÔFá˜R u§}¡}¸gÔFá˜ QÔ'á˜R u§}¡}¸gÔFá  ›ñ ˜R u§}¡}¸gÔFñ+óÐ ñ4 $6Ð6JÓ#KÐ  ÷d=ñ d=ðN ôm$�
˜Mó m$ó ðm$ód'ñ !Øñ ˜R u§}¡}¸gÔFá˜R u§}¡}¸gÔFá˜R u§}¡}¸gÔFÙ˜r“{Ù˜R“[Ù˜b¨I×,EÑ,EÔFÙ˜b¨I×,EÑ,EÔFÙ  ¨5¯=©=À'ÔJÙ  ¨5¯=©=À'ÔJñóÐ ñ" "4Ð4FÓ!GÐ ð ôF�9ó Fó ðFñR *Øñ ˜r¨¯©ÀÔHÙ" 2¨U¯]©]ÀGÔLÙ˜R u§}¡}¸gÔFÙ˜B“Kñó	Ð ñ +=Øó+Ð 'ð ô2˜9ó 2ó ð2ñ@ Øð@à‘W˜S“\ð@ð 	‘g˜b“kð@ð 	‘wØØ×/Ñ/Ø×,Ñ,ô
ð@ð" 	™G B›Kð#@ðB 	‘gØØ3�i×3Ñ3°A°rÓ:Ø2�)×2Ñ2°1°bÓ9ô
ðC@ðN 	‘W˜S“\ðO@ðR 	™' "›+ðS@ðV 	™G B›KðW@ðZ 	™' #›,ð[@ð^ 	‘g˜b“kð_@ðb 	‘w˜r¨¯©Ô7ðc@ðf 	™ ›ðg@ðj 	™W R›[ðk@ðn 	™w r›{ðo@ðr 	™W S›\ðs@ðv 	™gØØ×/Ñ/Ø×,Ñ,ô
ðw@óC€óLóó%ó%ó%ó/ð @DðØðØðØ$ðØ/<ðà
óð0 
×ÑÐ-Ø	×ÑÐ.Ø	×ÑÐ6Ø	×ÑÐ2Ø	×ÑÐ0Ø	×ÑÐ<Ø	×ÑÐ,ðÑ r‹   