
    h                    
   S SK Jr  S SKJrJrJrJrJr  S SKJ	r	  S SK
r
S SKrS SKJr  S SKJrJr  S SKJrJrJrJrJrJr  S SKJrJrJrJrJrJrJrJ r J!r!  S S	K"J#r#  S S
K$J%r%J&r&J'r'J(r(  S SK)J*r*J+r+  S SK,J-r-  S SK.J/r/  S SK0J1r1  S SK2J3r3  SSK4J5r5J6r6  SSK7J8r8J9r9  SSK:J;r;  SSK<J=r=  SSK>J?r?J@r@  \(       a0  S SKAJBrBJCrCJDrD  S SKEJFrF  S SKGJHrHJIrI  S SKJJrJ  S SKKJLrL  S SK$JMrM  S SKNJOrO  \R                  " S5      rQSrR/ SQrS1 S krT\" S!0 S"\" S#S \S$9_S%\" S&\R                  S'9_S(\" S)S*\R                  S+9_S,\" S-\R                  \'S.9_S/\" S0\R                  S19_S2\" S3\R                  \'S4S59_S6\" S7S S89_S9\" S:S;\\R                  " S S-5      \S<9_S=\" S>S\S4\R                  " SS)5      \S?9_S@\" SA\S4\R                  " SBSC5      \R                  " SBSC5      SD9_SE\" SF\S4SG9_SH\" SI\S4SG9_SJ\" SK\S4\R                  \R                  SD9_SL\" SM\S4\R                  \R                  SD9_SN\" SSOS4SP9_SQ\" SRS S4SP9_SS\" STS S4SP9_\" SUS S4SP9\" SV\R                  \(S4\R                  \SW9SX.E5      r^\" \^5      r_\" SY\" SZ\R                  \'S.9\" S[\R                  \'S.9\" S\S S89\" S]\R                  \'S.9\" S^5      \" S_\R                  \'S.9S`.5      r`\" \`5      ra " Sa Sb5      rb\; " Sc Sd\8\b5      5       rcSSe jrd\" Sf\" SZ\R                  \'S.9\" S[\R                  \'S.9\" S]\R                  \'S.9\" S^5      \" SA5      \" S7\R                  S'9\" S:\R                  S'9\" S_\R                  \'S.9\" Sg\R                  \'S.9Sh.	5      re\" \e5      rf\; " Si Sj\c5      5       rg\" Sk\" SZ\R                  \'S.9\" S[\R                  \'S.9\" S]\R                  \'S.9\" S^5      Sl.5      rh\" \h5      ri\; " Sm Sn\c5      5       rj\" So0 Sp\" Sq5      _Sr\" Ss5      _St\" S7\R                  \R                  Su9_Sv\" S:5      _Sw\" S>\R                  " S S[5      \R                  " S S[5      Su9_Sx\" Sy5      _Sz\" SI5      _S{\" S|5      _S}\" S~5      _S\" S^5      _S\" S-\R                  S19_S\" S5      _S\" SK5      _S\" S5      _S\" S5      _S\" SM\R                  \R                  Su9_5      rlSS jrmSS jrnSS jroSS jrpSS jrqSS jrr S         SS jjrs\R                  \m\R                  \m\R                  \o\R                  \n\R                  \n\R                  \p\R                  \q0r{g)    )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dimtypeF   )rH   attachment_pointG      )rH   rI   r   fixerline_spacing_styleH   )rH   rI   rV   r   r\   line_spacing_factor)   g      ?g      @)rI   rV   r   r\   actual_measurement*   )rI   rV   unknown1I   flip_arrow_1J   flip_arrow_2K   text )rH   rV   oblique_angle4   text_rotation5   3      )rQ   rH   rV   r   r\   )horizontal_direction	extrusionAcDbDimensionDummy      2      (      )	defpoint2	defpoint3angle	defpoint4leader_length	defpoint5c                  P    \ rS rSrS
S jrSS jrSS jrSS jrSS jrSS jr	Sr
g	)r@      c                    U R                   c   S5       eU R                  R                  nU R                   R                  R	                  U5      $ )z0Returns the associated :class:`DimStyle` entity.valid DXF document required)docdxfrL   	dimstylesget)selfdim_style_names     J/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/dimension.pyget_dim_styleOverrideMixin.get_dim_style   sD    xx#B%BB#** xx!!%%n55    c                6    U R                  5       R                  $ )z0Returns all valid DXF attributes (internal API).)r   
DXFATTRIBSr   s    r   dim_style_attributes"OverrideMixin.dim_style_attributes   s    !!#...r   c                "  ^ ^^
 [        T5      mT R                  R                  m
U
U4S jnUU 4S jnU[        :  as  S H  n TR	                  U5      nU" XV5        M      TR	                  S5      nT R                  R                  R                  U5      nUR                  R                  TS'   U[        :  a#  S H  n TR	                  U5      n	U" XY5        M     T$ ! [
         a     M  f = f! [
         a     NLf = f! [
         a     MQ  f = f)aM  `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                   > U S-  n U[         ;   a  [         R                  " TU5      nUS:X  a  SnOTU   nUR                  nUTU '   g )N_handle_CLOSEDFILLED0)r$   create_blockblock_record_handle)attrib_name
block_namehandleblockblocksdatas       r   set_arrow_handleGOverrideMixin.dim_style_attr_names_to_handles.<locals>.set_arrow_handle  sS    9$KV##00D
_,z*22 &Dr   c                   >  TR                   R                  R                  U5      nUR                  R                  TU S-   '   g ! [
         a    [        R                  SU S35         g f = f)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_handleJOverrideMixin.dim_style_attr_names_to_handles.<locals>.set_linetype_handle  sh    A**..}= 16		0@0@[9,- & X!5m_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_handles-OverrideMixin.dim_style_attr_names_to_handles   s   & Dz
	'	A L>!%+!6J %[=  M>88J/  88??..x8*2,,*=*=&' CD$(HH[$9M (C  D /        s6   C!C0  D 
C-,C-0
C=<C= 
DDc                   U R                   c   S5       eU R                   R                  nU R                  X5      n/ nU R                  5       nUR	                  5        H  u  pVXT;  a  [
        R                  SU S35        M%  UR                  U5      nU(       d  M?  UR                  S:  d  MQ  UR                  U:  a1  [
        R                  SU SU R                   R                   35        M  UR                  nUR                  SU45        US	:X  a  UR                  S
U45        M  UR                  [        U5      U45        M     [        U5      (       a  U R                  SSU5        gg)zSet 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_dstyleOverrideMixin.set_acad_dstyle=  sM    xx#B%BB# !HH//33DL#88:**,JC.CC5JK+//4HxHMMA-&&)::LL:3% @''+xx'<'<&=? }}T4L)19 KKu.KKt!4e <=) ', t99$7 r   c                  ^^	 [        T5      mU R                  R                  m	SUU	4S jjnSUU	4S jjnS H)  nTR                  US-   S5      nU(       d  M!  U" XE5        M+     TR                  SS5      nU(       a   T	U   nUR                  R
                  TS'   S H)  nTR                  US-   S5      nU(       d  M!  U" XH5        M+     T$ ! [         a    [        R                  S	U S
35         NVf = f)aE  `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  > US:X  a  STU '   g  TU   nUR                  R
                  nUR                  S5      (       a"  USS  n[        R                  " U5      (       a  UnUTU '   g ! [          a-    [        R                  SU SU R                  5        S35         g f = f)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_nameEOverrideMixin.dim_style_attr_handles_to_names.<locals>.set_arrow_name~  s    }$&[!!&z  ##((Ds##"&qr(''88*D $D  ,VH 5  + 1 1 34J@ s   A( (4BBc                   >  TU   nUR                   R                  TU '   g ! [         a-    [        R	                  SU SU R                  5        S35         g f = f)NzRequired line type #r   r   )r   r   r   r   r   r   )r   r   r   r   r   s      r   set_ltype_nameEOverrideMixin.dim_style_attr_handles_to_names.<locals>.set_ltype_name  se    36
 %*IINN[!  *6( 3  + 1 1 34J@s   " 4A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_names-OverrideMixin.dim_style_attr_handles_to_namesh  s   & DzXX	% 	%,		3 		3 IK HH[9%<bAM}{: I ((#4d;5o. $,<<#4#4Z  @KXXkI5r:Fv{3 @   +O+< =2 3s   ?C #C43C4c                     U R                  SS5      n0 nUR                  n[        U5       H*  u  pVUR                  nUR                  nXt;   d  M$  XXG   '   M,     U R                  U5      $ ! [         a    0 s $ f = f)zGet 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_dstyleOverrideMixin.get_acad_dstyle  s    	&&vx8D ,,#(;H!JOOE"-2)*	 $/
 33G<<  	I	s   A, ,A;:A; 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____firstlineno__r   r   r   r   r   r   __static_attributes__r   r   r   r@   r@      s%    6/FP)8VOb=r   r@   c                    ^  \ rS rSrSrSr\" \\\	\
5      rSrSrSrSrSrS	rS
rSrSrSrS&U 4S jjr\4S'U 4S jjjr\4S(S j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-U 4S jjr\S.S j5       r \S/S j5       r!S0S jr"S1S jr#S2S jr$S&S jr%S3S jr&S4S jr'S5S jr(S6S jr)S6S  jr*S)S7S! jjr+S&U 4S" jjr,S8S# jr-S9U 4S$ jjr.S%r/U =r0$ ):r=   i  zDXF DIMENSION entityrC   r   r(   rK   rM      r[         @      c                0   > [         TU ]  5         S U l        g N)super__init__virtual_block_contentr   	__class__s    r   r   Dimension.__init__  s    <@"r   c                X   > [         TU ]  US9nUR                  R                  S5        U$ )Ncopy_strategyrJ   )r   copyr   discard)r   r  virtual_copyr  s      r   r  Dimension.copy  s/    "'',],"K 	  ,r   c                
  ^ [        U[        5      (       d   eU R                  (       a   [        U4S jU R                   5       5      nO4[        U R	                  5       5      nUR
                  R                  S5        X1l        g )Nc              3  F   >#    U  H  nTR                  U5      v   M     g 7fr   )r  ).0er  s     r   	<genexpr>&Dimension.copy_data.<locals>.<genexpr>  s#      */I!""1%%/Is   !rT   )
isinstancer=   r  r'   virtual_entitiesr   r	  )r   entityr  virtual_contents     ` r   	copy_dataDimension.copy_data  sk    &),,,,%%) */3/I/I* O *$*?*?*ABO JJx('6$r   c                   U R                   nU R                  (       ad  Ub`  UR                  R                  SS9nU R                   H  nUR	                  U5        M     UR
                  U R                  l        SU l        ggg)zCalled 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_hookDimension.post_bind_hook   so     hh%%#/JJ22S2AE44  ( 5 %

DHH)-D& +:%r   c                   > [         TU ]  U5      nU(       a,  UR                  U[        SSS9  UR                  U[        SSS9  U$ )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#  Dimension.load_dxf_attribs  sZ     g&y1**/D +  **5qe + 
 
r   c                  > [         TU ]  U5        UR                  [        :X  a  U R                  R                  U/ SQ5        gUR                  [        [        R                  5        U R                  nU R                  R                  U/ SQ5        U R                  5       S:w  a  gUS:X  aK  UR                  [        S5        U R                  R                  U/ SQ5        UR                  [        S5        gUS	:X  a5  UR                  [        S5        U R                  R                  U/ SQ5        gUS
:X  a5  UR                  [        S5        U R                  R                  U/ SQ5        gUS:X  a5  UR                  [        S5        U R                  R                  USS/5        gUS:X  a5  UR                  [        S5        U R                  R                  USS/5        gUS:X  a5  UR                  [        S5        U R                  R                  U/ SQ5        gUS:X  a5  UR                  [        S5        U R                  R                  USS/5        gg)(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   r3  Dimension.export_entity!  s   i(5(HH''*  	_n.A.AB<<##	
8 <<>[(q=  2HIHH''	3VW  2HI]  2HIHH''	3VW]  2MNHH''O ]  2JKHH''	K3QR]  2GHHH''	K3QR]  2NOHH''O ]  2IJHH''	K3MN r   c                  > U R                   c   e[        TU ]	  U5        UR                  U R                  R
                  5        U R                  R                  nU R                   R                  R                  U5      (       a  UR                  U5        U R                  SS5      (       d  g U R                   R                  [        R                  :  a  [        X5        g U R                  5       R!                  U5        g )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<  Dimension.register_resourcesz  s    xx###"8,txx00188$$88!!++H55##H-""684488,%d5 MMO228<r   c                  > [         TU ]  X5        UR                  U R                  R                  5      UR                  l        UR                  U R                  R                  5      UR                  l        U R                  c   eU R                  R                  [        R                  :  a  g U R                  5       nUR                  (       d  g [        U[        5      (       d   eUR                  X5        g r   )r   map_resourcesr   r   rL   get_block_namerJ   r   rI   r   r   rB  dimstyle_attribsr  r=   map_resources_r12)r   clonemappingself_overrider  s       r   rG  Dimension.map_resources  s    e-$224883D3DE		$33DHH4E4EF		 xx###88,--%++++''7r   c                4    U R                   R                  S-  $ )z7:attr:`dxf.dimtype` without binary flags (32, 62, 128).rw   )r   rW   r   s    r   rW   Dimension.dimtype  s     xx"$$r   c                z    U R                   nUR                  [        :H  =(       a    UR                  S5      (       + $ )zMReturns ``True`` if the DIMENSION entity is a dimensional
constraint object.
rJ   )r   layerADSK_CONSTRAINTShasattr)r   r   s     r   is_dimensional_constraint#Dimension.is_dimensional_constraint  s.    
 hhyy,,LS[[5L1LLr   c                    U R                   R                  SS5      nU R                  R                  R                  U5      $ )zReturns :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_blockDimension.get_geometry_block  s1     XX\\*c2
xx"":..r   c                    [         R                  U R                  5      nU(       a  U" U 5      $ [        SU R                   S35      e)a  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_measurementDimension.get_measurement  s>     !$$T\\2:5dll^1EFFr   c                    [        U 5      $ )z=Returns the :class:`~ezdxf.entities.DimStyleOverride` object.r.   r   s    r   rB  Dimension.override  s    %%r   c                x    U R                   (       a  [        S5      eU R                  5       R                  5         g)zRenders 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   rB  renderr   s    r   rf  Dimension.render  s+     ??>?? 	 r   c                  ^ SU4S jjnU R                   m[        U R                   R                  U5      nS H  nU" XCR                  5        M     S H  nU" XSR                  5        M     S H  nU" XAR
                  5        M     UR                  Tl        TR                  S5      (       d  U R                  U5        U R                  U5        U $ )zTransform the DIMENSION entity by transformation matrix `m` inplace.

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

c                   > TR                  U 5      (       a'  TR                  X" TR                  U 5      5      5        g g r   rT  setr   r   funcr   s     r   transform_if_exist/Dimension.transform.<locals>.transform_if_exist  2    {{4  d3774=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_extrusionrT  _transform_block_contentpost_transform)r   mrn  ocsvertex_name
angle_namer   s         @r   rt  Dimension.transform  s    	3 hh488--q1CK{,@,@A D MJz+B+BC M OK{KK8 O )) {{8$$))!,Ar   c                    U R                   (       d  U R                  (       a  U R                   nOU R                  5       nU=(       d    / $ r   )r  re  rY  )r   contents     r   _block_contentDimension._block_content  s4    %%00G--/G}"r   c                    U R                  5        H  n UR                  U5        M     g ! [        [        4 a     M-  f = fr   )r  rt  NotImplementedErrorr"   )r   rx  r  s      r   rv  "Dimension._transform_block_content  sB    ))+F  # , ()?@ s   +??c              #  B  ^#    SU4S jjnU R                  5       mU R                  R                  R                  nSnU R                  R	                  SS5      nU(       aP  [        TR                  U5      5      n[        R                  " UR                  UR                  UR                  5      nU R                  5        HH  n UR                  [        S9nTR                  (       a  U" Xb5        Ub  UR                  U5        Uv   MJ     g! [         a     MZ  f = f7f)z0Implements the SupportsVirtualEntities protocol.c                  > U R                  5       nU R                  nUS:X  a[  TR                  UR                  R	                  US95      Ul        TR                  UR
                  R	                  US95      Ul        g US:X  ao  U R                  5         TR                  Ul        TR                  UR                  5      Ul	        TR                  UR                  R	                  US95      Ul
        g US:X  a.  TR                  UR                  R	                  US95      Ul        g TR                  Ul        UR                  S5      (       a  UR                  R	                  US9Ul
        g UR                  S5      (       a  UR                  R	                  US9Ul        g US:X  aL  [        R                   H7  nUR!                  U["        5      R	                  US9nUR%                  XE5        M9     g g )NLINE)zMTEXTPOINTrT   centerSOLID)r7  r   to_wcsstartreplaceend"convert_rotation_to_text_directionuzrr   text_directionrT   locationrT  r  r   VERTEXNAMESr   r   rk  )r  	elevationr7  r   vtx_namepointry  s         r   
ocs_to_wcs2Dimension.__virtual_entities__.<locals>.ocs_to_wcs  s    iikG%%C& JJsyy'8'89'8'EF	**SWW__y_%ABG#446 #%(ZZ0B0B%C" ZZ

(:(:Y(:(GH
G#"zz#,,*>*>*>*KL #;;x((!$!3!3i!3!@CJ[[**!$!3!3i!3!@CJ' %*$5$5 #' : B BY B O0 %6 (r   NrT   r  )r  r+   r  float)ry  r   rR   r  r   r   r  r   	translatexyr  r  r0   r1   rt  )r   r  dim_elevationrx  rT   r  r  ry  s          @r   __virtual_entities__Dimension.__virtual_entities__  s     	1< hhj..00!h-#**V,-F""688VXXvxx@A))+F{{{> }} 4/}q!J , $ s*   CDD6D
DDDDc                "    U R                  5       $ )a/  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  Dimension.virtual_entities=  s     ((**r   c                    [        X5      $ )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   explodeDimension.explodeH  s     d22r   c                &   > U ? [        TU ]	  5         g r   )r  r   destroyr  s    r   r  Dimension.destroyW  s    &r   c                    U R                   (       aX  U R                  R                  SS5      nU(       a5  U R                   R                  R                  U5      nUb  UR                  4$ [        5       $ )z(Support for "ReferencedBlocks" protocol.rJ   N)r   r   r   r   r   tuple)r   r   r   s      r   __referenced_blocks__Dimension.__referenced_blocks__\  sT    88j$7J++J7$!5577wr   c                  > [         TU ]  U5        UR                  nU R                  nU R                  (       d]  UR                  SS5      UR                  ;  a=  UR                  [        R                  S[        U 5       S3S9  UR                  U 5        g UR                  SS5      nUR                  R                  U5      (       d4  UR                  [        R                  SU S	3S9  UR                  S5        g g )
NrJ   rX  zRemoved z without valid geometry block.)r   messagerL   rN   zReplaced invalid DIMSTYLE 'z' by 'Standard'.)r   auditr   r   rU  r   r   fixed_errorr
   UNDEFINED_BLOCKr   trashr   r?  INVALID_DIMSTYLEr	  )r   auditorr   r   rL   r  s        r   r  Dimension.auditf  s    gkkhh ..
C(

://"3t9+-KL    MM$77:z2}}&&x00005hZ?OP    KK
# 1r   )r  )r   r   )r   r=   )r  r	   r   r   r   r(  zOptional[SubclassProcessor]r   r2   r8  r5   r   r   )rD  xref.Registryr   r   )rK  r	   rL  zxref.ResourceMapperr   r   )r   int)r   bool)r   zOptional[BlockLayout])r   zUnion[float, Vec3])r   r/   )rx  r   r   r=   )r   zIterable[DXFGraphic])rx  r   r   r   )r   zIterator[DXFGraphic])r  zOptional[BaseLayout]r   r9   )r   zIterable[str])r  r8   r   r   )1r   r   r   r   __doc__DXFTYPEr   r)   r,   r6  acdb_dimension_dummyr   LINEARALIGNEDANGULARDIAMETERRADIUS
ANGULAR_3PORDINATEARCORDINATE_TYPEUSER_LOCATION_OVERRIDEr   r0   r  r  r  r#  r3  r<  rG  propertyrW   rU  rY  r`  rB  rf  rt  r  rv  r  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                p    U R                  SS5      nU H  u  p4US:X  d  M  UR                  U5        M      g )Nr   r   i  )r   
add_handle)r  rD  override_tagsr   r   s        r   rB   rB     s5    ))&(;M$4<& %r   AcDbArcDimension   	rz   r{   r}   start_angle	end_angle
is_partial
has_leaderleader_point1leader_point2c                     ^  \ rS rSrSrSr\" \\\	\
5      r\r S	   S
U 4S jjjrSS jrSU 4S jjrSU 4S jjrSrU =r$ )r>   i  zDXF ARC_DIMENSION entityrD   c                   > [         [        U ]  U5      nU(       a,  UR                  U[        SSS9  UR                  U[
        SSS9  U$ NrK   Tr   rM   )r   r=   r#  r$  r%  acdb_arc_dimension_group_codesr'  s      r   r#  ArcDimension.load_dxf_attribs  s\     It5i@**/D +  **3Q +  
r   c                    U[         R                  :  a  U R                  R                  S-  S-  $ U R                  R                  S-  S-  $ )Ni  r   r[   )r   DXF2013r   rW   )r   rI   s     r   versioned_dimtypeArcDimension.versioned_dimtype  sB    %HH$$v-22HH$$v-22r   c                ,  > U R                   R                  nU R                  UR                  5      U R                   l        [        TU ]  U5        UR                  [        S5        U R                   R                  U/ SQ5        X R                   l        g)r+  r  r  N)	r   rW   r  rI   r   r3  r5  r   r4  )r   r8  rW   r  s      r   r3  ArcDimension.export_entity  ss    ((""11)2F2FGi(_.@A##
	
 #r   c                   >^ SU4S jjnU R                   m[        TU ]	  U5        S H  nU" X1R                  5        M     U $ )zTransform the ARC_DIMENSION entity by transformation matrix `m` inplace.

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

c                   > TR                  U 5      (       a'  TR                  X" TR                  U 5      5      5        g g r   rj  rl  s     r   rn  2ArcDimension.transform.<locals>.transform_if_exist  rp  r   )r  r  rq  r   r   rt  r   rx  rn  rz  r   r  s       @r   rt  ArcDimension.transform  s=    	3 hh!=K{KK8 > r   r   r   r  )rI   r   r   r  r  rx  r   r   r	   )r   r   r   r   r  r  r   r)   r,   r6  acdb_arc_dimensionr   r   MIN_DXF_VERSION_FOR_EXPORTr#  r  r3  rt  r   r  r  s   @r   r>   r>     s\    "
 GK1CJ ") 8<4	 3#, r   r>   AcDbRadialDimensionLargechord_pointoverride_center	jog_pointunknown2c                  z   ^  \ rS rSrSrSr\" \\\	\
5      r\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rU =r$ )r?   i  z!DXF LARGE_RADIAL_DIMENSION entityrE   c                   > [         [        U ]  U5      nU(       a,  UR                  U[        SSS9  UR                  U[
        SSS9  U$ r  )r   r=   r#  r$  r%  'acdb_radial_dimension_large_group_codesr'  s      r   r#  %RadialDimensionLarge.load_dxf_attribs  s\     It5i@**/D +  **<a +  
r   c                   > [         TU ]  U5        UR                  [        S5        U R                  R                  U/ SQ5        g)r+  r  r  N)r   r3  r5  r   r   r4  )r   r8  r  s     r   r3  "RadialDimensionLarge.export_entity  s9    i(_.HI##G	
r   c                   >^ SU4S jjnU R                   m[        TU ]	  U5        S H  nU" X1R                  5        M     U $ )zTransform the LARGE_RADIAL_DIMENSION entity by transformation matrix
`m` inplace.

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

c                   > TR                  U 5      (       a'  TR                  X" TR                  U 5      5      5        g g r   rj  rl  s     r   rn  :RadialDimensionLarge.transform.<locals>.transform_if_exist   rp  r   )r  r  	Jog_pointrq  r  r  s       @r   rt  RadialDimensionLarge.transform  s>    	3 hh!JK{KK8 K r   r   r   r  r  r  )r   r   r   r   r  r  r   r)   r,   r6  acdb_radial_dimension_larger   r   r  r#  r3  rt  r   r  r  s   @r   r?   r?     sU    +&GK1LJ ") 8<4	 
 r   r?   AcDbDimAssoc	dimensioniJ  
point_flagZ   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           
         U R                   n[        UR                  UR                  [        R
                  " UR                  SS5      5      U R                  5       5      $ )Nr|   r   )r   linear_measurementrz   r{   mathradiansr   ry  )dimr   s     r   measure_linear_distancer  ~  sF    
''CSWWWa()		 r   c                    [        U R                  R                  5      n[        U R                  R                  5      nX!-
  R                  $ r   )r   r   rO   r}   	magnitude)r  p1p2s      r   measure_diameter_or_radiusr    s8    	cgg	B	cgg	 BGr   c                    U R                   n[        UR                  5      n[        UR                  5      n[        UR                  5      n[        UR
                  5      nX2-
  nXT-
  n[        Xg5      $ r   )r   r   rz   r{   r}   rO   angle_between)r  r   r  r  p3p4dir1dir2s           r   measure_angle_between_two_linesr#    s\    
''C	cmm	B	cmm	B	cmm	B	cll	B7D7D$$r   c                    U R                   n[        UR                  5      n[        UR                  5      n[        UR                  5      nX2-
  nXB-
  n[        XV5      $ r   )r   r   r}   rz   r{   r  )r  r   r  r  r  r!  r"  s          r   "measure_angle_between_three_pointsr%    sN    
''C	cmm	B	cmm	B	cmm	B7D7D$$r   c                    [        U R                  R                  5      n[        U R                  R                  5      nX!-
  $ r   )r   r   rO   rz   )r  originfeature_locations      r   get_feature_locationr)    s4    #''""#FCGG--.$$r   c                N    UR                   U R                   -
  nUS:  a  US-   $ U$ )Nr   ih  )	angle_deg)v1v2r|   s      r   r  r    s)    LL2<<'E!)53;..r   c                H   UbZ  UR                   S:w  aJ  UR                  U 5      n UR                  U5      n[        R                  " U5      nUR                  U5      nO[        R                  " U5      nUR	                  U 5      nUR	                  U5      nXv-
  R
                  $ )zoReturns distance from `p1` to `p2` projected onto ray defined by
`angle`, `angle` in radians in the xy-plane.

)r   r   r(   )r  r  r   
from_angleprojectr  )r  r  r|   ry  ocs_directionmeasurement_directiont1t2s           r   r  r    s     366Y.ZZ^ZZ^. #

= 9 !% 6		&	&r	*B		&	&r	*BGr   )r  r3   rD  r  r   r   )r  r=   r   r  )r  r=   r   r   )r,  r   r-  r   r   r  )r   N)
r  r   r  r   r|   r  ry  zOptional[OCS]r   r  )|
__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   rS  __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_vectorr6  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_ORDINATEr]  r   r   r   <module>r`     sR   # E E "   " ( 
 
 
 , 6 6 J  & ( & 4 + $ . 0@@75#' 
		7	#&  O @73g>@ 	GA)F)FG@ 	G33
@  	GBemmWE!@$ 	5==9%@* 	'"EMM7TR+@T 	72q)U@j 	G33Ar: 
k@~ 	g33Aq9 
@T 	w11$=00t< 
U@d 	gbWtLe@f 	GB7TBg@h 	//,,
i@v 	//,,
w@N 	25O@X 	Q>Y@` 	Q>a@n !(A E--22 
q@CH 0? " Ru}}gFRu}}gFQ'Ru}}gF  Ru}}gF+ 4 $66J#K  d= d=N m$
M m$ m$d' ! Ru}}gFRu}}gFRu}}gFr{R[bI,E,EFbI,E,EF 5=='J 5=='J " "44F!G  F9 F FR * rH"2U]]GLRu}}gFBK	  +=+ ' 29 2 2@ @WS\@ 	gbk@ 	w//,,
@" 	GBK#@B 	g33Ar:221b9
C@N 	WS\O@R 	'"+S@V 	GBKW@Z 	'#,[@^ 	gbk_@b 	wr7c@f 	g@j 	WR[k@n 	wr{o@r 	WS\s@v 	g//,,
w@CL%%%/ @D$/<
0 
-	.	6	2	0	<	, r   