Ë
    £èhãˆ  ã                  ó”	  — d dl mZ d dlmZmZmZ d dlmZ d dlZd dl	m
Z
 d dl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 d d	lmZ d d
lmZ ddlmZmZmZ ddlm Z  ddl!m"Z" erd dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* dgZ+ ejX                  d«      Z- edi d eddej\                  ¬«      “d edd ¬«      “d edd¬«      “d  ed!d¬«      “d" ed#d¬«      “d$ ed%d¬«      “d& ed'd¬«      “d( ed)d¬«      “d* ed+d,¬«      “d- ed.d/¬«      “d0 ed1d2¬«      “d3 ed4d5¬«      “d6 ed7d ¬«      “d8 ed9d ¬«      “d: ed;d ¬«      “d< ed=d ¬«      “d> ed?ed,¬@«      “i dA edBedCdD¬E«      “dF edGd,¬«      “dH edId,¬«      “dJ edKd ¬«      “dL edMdN¬«      “dO edPd¬«      “dQ edRd ¬«      “dS edTd¬«      “dU edVd/¬«      “dW edXed ¬@«      “dY edZed ¬@«      “d[ eded ¬@«      “d\ ed]d ¬«      “d^ ed_d ¬«      “d` edad ¬«      “db edcd ¬«      “dd eded ¬«      “¥i df edgd ¬«      “dh edid¬«      “dj edkdl¬«      “dm ednde¬o«      “dp edCedD¬q«      “dr edsd ¬«      “dt edud¬«      “dv edwd¬«      “dx edyd ¬«      “dz ed{d ¬«      “d| ed}d ¬«      “d~ edd ¬«      “d€ ed�d ¬«      “d‚ edƒd ¬«      “d„ ed…ed¬@«      “d† ed‡«      “dˆ ed‰ed¬@«      “¥i dŠ ed‹ed¬@«      “dŒ ed�ed¬@«      “dŽ ed�ed¬@«      “d� ed‘ed  ej^                  d d!«      e¬’«      “d“ ed”ed ¬@«      “d• ed–ed¬@«      “d— ed˜ed4¬@«      “d™ edšed ¬@«      “d› edœed ¬@«      “d� edžed ¬@«      “dŸ ed ed ¬@«      “d¡ ed¢ed ¬@«      “d£ ed¤edl¬@«      “d¥ ed¦ed ¬@«      “d§ ed¨ed ¬@«      “d© edª«      “d« ed¬ed ¬@«      “¥i d­ ed®ed¬@«      “d¯ ed°ed ¬@«      “d± eee¬²«      “d³ eee¬²«      “d´ eee¬²«      “dµ eee¬²«      “d¶ eee¬²«      “d· ed¸e¬²«      “d¹ edºe¬²«      “d» ed¼e¬²«      “d½ ed¾e¬²«      “d¿ edÀe¬²«      “dÁ edÂe¬²«      “dÃ edÄe¬²«      “dÅ edÆe¬²«      “dÇ edÈej`                  e¬o«      “dÉ edÊej`                  e¬o«      “¥«      Z1 ee1«      Z2g dË¢Z3g dÌ¢Z4g dÍ¢Z5d±Z6dÎZ7dÏZ8dÓdÐ„Z9e" G dÑ„ de«      «       Z:dÔdÕdÒ„Z;y)Öé    )Úannotations)ÚTYPE_CHECKINGÚIterableÚOptional)ÚSelfN)ÚMTextLineAlignment)ÚDXFAttrÚDXFAttributesÚDefSubclassÚVIRTUAL_TAGÚgroup_code_mappingÚRETURN_DEFAULT)Úconst)ÚDXF12ÚDXF2007ÚDXF2000)Ú	validator)ÚARROWSé   )ÚSubclassProcessorÚ	DXFEntityÚ
base_class)Úacdb_symbol_table_record)Úregister_entity)ÚDrawing)ÚDXFNamespace)ÚAbstractTagWriter)ÚxrefÚDimStyleÚezdxfÚAcDbDimStyleTableRecordÚnameé   ÚStandard)Údefaultr   ÚflagséF   )r%   Údimposté   Ú Údimaposté   Údimblké   Údimblk1é   Údimblk2é   Údimscaleé(   Údimaszé)   g      @Údimexoé*   g      ä?Údimdlié+   g      @Údimexeé,   g      ô?Údimrndé-   Údimdleé.   Údimtpé/   Údimtmé0   Údimfxlé1   )Ú
dxfversionr%   Ú	dimjogangé2   éZ   T)rG   r%   ÚoptionalÚdimtxtéŒ   Údimcené�   ÚdimtszéŽ   Údimaltfé�   gc,B¡P(¤?Údimlfacé�   Údimtvpé‘   Údimtfacé’   Údimgapé“   Ú	dimaltrndé”   ÚdimtfilléE   ÚdimtfillclrÚdimtoléG   ÚdimliméH   ÚdimtihéI   ÚdimtohéJ   Údimse1éK   Údimse2éL   ÚdimtadéM   ÚdimzinéN   é   ÚdimazinéO   )r%   rG   Ú	dimarcsym)rG   rK   Údimaltéª   Údimaltdé«   Údimtoflé¬   Údimsahé­   Údimtixé®   Údimsoxdé¯   Údimclrdé°   Údimclreé±   Údimclrté²   Údimadecé³   Údimuniti  Údimdeci  Údimtdeci  Údimaltui  Údimalttdi  Údimauniti  )rG   r%   r   ÚfixerÚdimfraci  Údimluniti  Údimdsepi  Údimtmovei  Údimjusti  Údimsd1i  Údimsd2i  Údimtolji  Údimtzini  Údimaltzi  Údimalttzi  Údimfiti  Údimupti   Údimatfiti!  Údimfxloni"  Údimtxsty)rG   Ú	dimldrblkÚdimltypeÚdimltex2Údimltex1Údimtxsty_handleiT  Údimblk_handleiV  Údimblk1_handleiW  Údimblk2_handleiX  Údimldrblk_handleiU  Údimltype_handleiY  Údimltex1_handleiZ  Údimltex2_handlei[  Údimlwdis  Údimlweit  )Ir"   r&   r3   r5   r7   r9   r;   r=   r?   rA   rC   rE   rH   rL   rN   rP   rR   rT   rV   rX   rZ   r\   r^   r`   ra   rc   re   rg   ri   rk   rm   ro   rr   rt   ru   rw   ry   r{   r}   r   r�   rƒ   r…   r‡   rŠ   r‹   rŒ   r�   rŽ   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   rœ   r�   rž   r¤   r¨   r¥   r¦   r§   r©   rª   r«   r¬   r­   )Cr"   r&   r(   r+   r3   r5   r7   r9   r;   r=   r?   rA   rC   rL   rN   rP   rR   rT   rV   rX   rZ   r\   ra   rc   re   rg   ri   rk   rm   ro   rr   rt   ru   rw   ry   r{   r}   r   r�   rƒ   r…   r‡   rŠ   r‹   rŒ   r�   rŽ   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   rœ   r�   r¤   r¨   r¥   r¦   r§   r¬   r­   ))r"   r&   r(   r+   r-   r/   r1   r3   r5   r7   r9   r;   r=   r?   rA   rC   rL   rN   rP   rR   rT   rV   rX   rZ   ra   rc   re   rg   ri   rk   rm   ro   ru   rw   ry   r{   r}   r   r�   rƒ   r…   ©r-   r/   r1   r    )r¡   r£   r¢   c                ó$   — | j                  d«      S )NÚdim)Ú
startswith)r"   s    ú7lib/python3.12/site-packages/ezdxf/entities/dimstyle.pyÚ
dim_filterr³   ˆ  s   € Ø�?‰?˜5Ó!Ð!ó    c                  ó0  ‡ — e Zd ZdZdZ eeee«      Z	 e
e	j                  e«      «      Zed„ «       Z	 d	 	 	 dˆ fd„Zdˆ fd„Zdˆ fd„Zdˆ fd„Zd ˆ fd„Zd	„ Zd
„ Zd!d„Zd"d„Zd#d$d„Zd$d„Zd%d„Z	 d&	 	 	 	 	 	 	 	 	 d'd„Zd(d)d„Z	 	 	 d#	 	 	 	 	 	 	 d*d„Z	 	 	 	 	 	 	 d+	 	 	 	 	 	 	 	 	 	 	 	 	 d,d„Z	 	 	 	 	 	 d-	 	 	 	 	 	 	 	 	 	 	 d.d„Z 	 	 	 	 	 d/	 	 	 	 	 	 	 	 	 d0d„Z!d1d2d„Z"d1d2d„Z#	 	 	 	 	 	 d3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d4d„Z$	 	 	 	 d5	 	 	 	 	 	 	 	 	 	 	 	 	 d6d„Z%d7d„Z&ˆ xZ'S )8r   zDXF BLOCK_RECORD table entityÚDIMSTYLEc                ó.   — | j                   j                  S ©N)ÚdocrG   )Úselfs    r²   rG   zDimStyle.dxfversion”  s   € à�x‰x×"Ñ"Ð"r´   c                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S )Nr#   )ÚsuperÚload_dxf_attribsÚfast_load_dxfattribsÚacdb_dimstyle_group_codes)rº   Ú	processorÚdxfÚ	__class__s      €r²   r½   zDimStyle.load_dxf_attribs˜  s/   ø€ ô ‰gÑ& yÓ1ˆÙà×*Ñ*¨3Ô0IÈ1ÔMØˆ
r´   c                óÞ  •— t         ‰| �  |«       |j                  }t        D ]|  }| j                  j                  |«      rŒ| j                  j                  |dz   «      }|r |dk7  r	 ||   j                  j                  }nd}| j                  j                  ||«       Œ~ | j                  j                  dd «      }|r.|dk7  r)	 ||   j                  j                  | j                  _        t        D ]`  }| j                  j                  |dz   d «      }|sŒ%|dk7  sŒ+	 ||   j                  j                  }| j                  j                  ||«       Œb | j                  «        y # t        $ r t        j                  d|› d�«       d}Y �Œw xY w# t        t        f$ r t        j                  d|› d�«       Y ŒÏw xY w# t        t        f$ r t        j                  d	|› d�«       Y Œ÷w xY w)
NÚ_handleÚ0z#Replace undefined block reference #z by default arrow.r*   r¤   zIgnore undefined text style #Ú.zIgnore undefined line type #)r¼   Úpost_load_hookÚentitydbÚDIM_ARROW_HEAD_ATTRIBSrÁ   ÚhasattrÚgetr"   ÚKeyErrorÚloggerÚinfoÚsetrŸ   ÚAttributeErrorÚDIM_LINETYPE_ATTRIBSÚdiscard_handles)	rº   r¹   ÚdbÚattrib_nameÚblock_record_handler"   Ústyle_handleÚ	lt_handlerÂ   s	           €r²   rÇ   zDimStyle.post_load_hook¡  sÓ  ø€ ô 	‰Ñ˜sÔ#Ø�\‰\ˆß1ˆKØ�x‰x×Ñ Ô,ØØ"&§(¡(§,¡,¨{¸YÑ/FÓ"GÐÙ"Ð':¸cÒ'AðØÐ1Ñ2×6Ñ6×;Ñ;‘Dð �Ø�H‰H�L‰L˜ dÕ+ð 2ð" —x‘x—|‘|Ð$5°tÓ<ˆÙ˜L¨CÒ/ðMØ$& |Ñ$4×$8Ñ$8×$=Ñ$=�—‘Ô!÷ 0ˆKØŸ™Ÿ™ [°9Ñ%<¸dÓCˆIÚ˜Y¨#Ó-ð4Ø˜i™=×,Ñ,×1Ñ1�Dð —H‘H—L‘L ¨dÕ3ð 0ð 	×ÑÕøô9  ò Ü—K‘KðØ/Ð0Ð0BðDôð “Dðûô œnÐ-ò MÜ—‘Ð;¸L¸>ÈÐKÖLðMûô !¤.Ð1ò MÜ—K‘KÐ">¸y¸kÈÐ KÖLðMús6   Á(E(Ã(F Ä GÅ($FÆFÆ(F>Æ=F>Ç(G,Ç+G,c                óô  •— t         ‰| �  |«       |j                  t        kD  r\|j	                  t
        j                  t        j                  «       |j	                  t
        j                  t        j                  «       |j                  t        kD  r| j                  «        |j                  t        k(  rt        }n |j                  t        k  rt        }nt        }| j                  j!                  ||«       y r¸   )r¼   Úexport_entityrG   r   Ú
write_tag2r   ÚSUBCLASS_MARKERr   r"   Úacdb_dimstyleÚset_handlesÚEXPORT_MAP_R12r   ÚEXPORT_MAP_R2000ÚEXPORT_MAP_R2007rÁ   Úexport_dxf_attribs)rº   Ú	tagwriterÚattribsrÂ   s      €r²   rÙ   zDimStyle.export_entityÌ  s°   ø€ Ü‰Ñ˜iÔ(Ø×Ñ¤%Ò'Ø× Ñ ¤×!6Ñ!6Ô8P×8UÑ8UÔVØ× Ñ ¤×!6Ñ!6¼×8JÑ8JÔKà×Ñ¤%Ò'à×ÑÔà×Ñ¤5Ò(Ü$‰GØ×!Ñ!¤GÒ+Ü&‰Gä&ˆGØ�‰×#Ñ# I¨wÕ7r´   c                ó¾  •— | j                   €J d«       ‚t        ‰| �	  |«       | j                  j	                  t
        «      }|r7	 | j                   j                  j	                  |«      }|j                  |«       t        D ]W  }| j                  j	                  |«      }|€Œ!	 | j                   j                  j	                  |«      }|j                  |«       ŒY t        D ]G  }| j                  j	                  |«      }|€Œ!t        j                  |«      rŒ7|j                  |«       ŒI y# t        j                  $ r Y ŒÆw xY w# t        j                  $ r Y ŒÙw xY w)z5Register required resources to the resource registry.Nz.DIMSTYLE entity must be assigned to a document)r¹   r¼   Úregister_resourcesrÁ   rË   ÚDIM_TEXT_STYLE_ATTRÚstylesÚ
add_entityr   ÚDXFTableEntryErrorrÑ   Ú	linetypesrÉ   r   Úis_acad_arrowÚadd_block_name)	rº   ÚregistryÚtext_style_nameÚstyleÚ	attr_nameÚ
ltype_nameÚltypeÚ
arrow_namerÂ   s	           €r²   rå   zDimStyle.register_resourcesÞ  s3  ø€ à�x‰xÐ#ÐUÐ%UÓUÐ#Ü‰Ñ" 8Ô,ð Ÿ(™(Ÿ,™,Ô':Ó;ˆÙðØŸ™Ÿ™×+Ñ+¨OÓ<�Ø×#Ñ# EÔ*÷
 .ˆIØŸ™Ÿ™ iÓ0ˆJØÐ!ØðØŸ™×*Ñ*×.Ñ.¨zÓ:�Ø×#Ñ# EÕ*ð .÷ 0ˆIØŸ™Ÿ™ iÓ0ˆJØÐ!ØÜ×'Ñ'¨
Õ3à×'Ñ'¨
Õ3ñ 0øô ×+Ñ+ò Ùðûô ×+Ñ+ò Ùðús$   Á6D- Â$6EÄ-EÅEÅEÅEc                óJ  •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  j                  t        «      }|r |j                  |«      |j                  _        t        D ]K  }| j                  j                  |«      }|sŒ!|j                  j                  ||j                  |«      «       ŒM t        D ]b  }| j                  j                  |«      }|€Œ!t        j                  |«      s|j                  |«      }|j                  j                  ||«       Œd y)z3Translate resources from self to the copied entity.N)Ú
isinstancer   r¼   Úmap_resourcesrÁ   rË   ræ   Úget_text_stylerŸ   rÑ   rÏ   Úget_linetyperÉ   r   rë   Úget_block_name)rº   ÚcloneÚmappingÚ
text_stylerð   rñ   ró   rÂ   s          €r²   rö   zDimStyle.map_resources   sä   ø€ ä˜%¤Ô*Ð*Ð*Ü‰Ñ˜e WÔ-ð —X‘X—\‘\Ô"5Ó6ˆ
ÙØ!(×!7Ñ!7¸
Ó!CˆE�I‰IÔç-ˆIØŸ™Ÿ™ iÓ0ˆJÚØ—	‘	—‘˜i¨×)=Ñ)=¸jÓ)IÕJð .÷ 0ˆIØŸ™Ÿ™ iÓ0ˆJØÐ!ØÜ×'Ñ'¨
Ô3à$×3Ñ3°JÓ?�
Ø�I‰I�M‰M˜) ZÕ0ñ 0r´   c                óZ  — | j                   j                  t        «      }|rH| j                  j                  j                  |«      j                   j
                  | j                   _        t        D ]5  }| j                   j                  |«      }|sŒ!| j                  |dz   |«       Œ7 t        D ]{  }| j                  j                  j                  }| j                   j                  |«      }|sŒA ||«      j                   j
                  }| j                   j                  |dz   |«       Œ} y )NrÄ   )rÁ   rË   ræ   r¹   rç   Úhandler¤   rÉ   Úset_blk_handlerÑ   rê   rÏ   )rº   rï   rð   Ú
block_namerø   rñ   rþ   s          r²   rÝ   zDimStyle.set_handles  sÚ   € Ø—‘—‘Ô0Ó1ˆÙØ'+§x¡x§¡×':Ñ':¸5Ó'A×'EÑ'E×'LÑ'LˆD�H‰HÔ$ç/ˆIØŸ™Ÿ™ iÓ0ˆJÚØ×#Ñ# I°	Ñ$9¸:ÕFð 0÷
 .ˆIØŸ8™8×-Ñ-×1Ñ1ˆLØŸ™Ÿ™ iÓ0ˆJÚÙ% jÓ1×5Ñ5×<Ñ<�Ø—‘—‘˜Y¨Ñ2°FÕ;ñ .r´   c                óN   — dD ]   }| j                   j                  |dz   «       Œ" y )N)r-   r/   r1   r    r¡   r£   r¢   rŸ   rÄ   )rÁ   Údiscard)rº   Úattrs     r²   rÒ   zDimStyle.discard_handles*  s'   € ó	
ˆDð �H‰H×Ñ˜T IÑ-Õ.ñ	
r´   c                ó   — |t         j                  k(  r| j                  j                  |«       y | j                  €J d«       ‚| j                  j
                  }t        j                  |«      rt        j                  ||«      }n|}|j                  |«      }|�| j                  ||j                  «       y t        j                  d|› d�«      ‚)Núvalid DXF document requiredzBlock "ú" does not exist.)r   Úclosed_filledrÁ   r  r¹   Úblocksrë   Úcreate_blockrË   Úset_dxf_attribrÕ   r   ÚDXFValueError)rº   r  ró   r  r   Úblks         r²   rÿ   zDimStyle.set_blk_handle7  s³   € Øœ×-Ñ-Ò-ð �H‰H×Ñ˜TÔ"ØØ�x‰xÐ#ÐBÐ%BÓBÐ#Ø—‘—‘ˆÜ×Ñ 
Ô+ä×,Ñ,¨V°ZÓ@‰Jà#ˆJà�j‰j˜Ó$ˆØˆ?Ø×Ñ  c×&=Ñ&=Õ>ä×%Ñ%¨°
¨|Ð;LÐ&MÓNÐNr´   c                óÊ   — | j                   €J d«       ‚| j                  |d «      }|dv rt        j                  S t	        || j                   «      }t        j
                  |«      S )Nr  )NrÅ   )r¹   Úget_dxf_attribr   r  Úget_block_name_by_handleró   )rº   r"   rþ   r   s       r²   Úget_arrow_block_namezDimStyle.get_arrow_block_nameL  s_   € Ø�x‰xÐ#ÐBÐ%BÓBÐ#Ø×$Ñ$ T¨4Ó0ˆØ�[Ñ ä×'Ñ'Ð'ä1°&¸$¿(¹(ÓCˆJä×$Ñ$ ZÓ0Ð0r´   c                óÈ   — | j                   t        k  rt        j                  d«       |�|| j                  _        |�|| j                  _        |�|| j                  _        y y )Nz%Linetype support requires DXF R2007+.)rG   r   rÍ   ÚdebugrÁ   r¡   r£   r¢   )rº   ÚdimlineÚext1Úext2s       r²   Úset_linetypeszDimStyle.set_linetypesW  sV   € Ø�?‰?œWÒ$Ü�L‰LÐ@ÔAàÐØ 'ˆD�H‰HÔØÐØ $ˆD�H‰HÔØÐØ $ˆD�H‰HÕð r´   c                óæ   — | j                   j                  }| j                  «       j                  «       D ]:  \  }}|j	                  d«      sŒt        |› d ||«      j                  › d|› �«       Œ< y )Nr°   z (z) = )Ú
DXFATTRIBSrË   Ú
dxfattribsÚitemsr±   ÚprintÚcode)rº   Úattdefr"   Úvalues       r²   Úprint_dim_attribszDimStyle.print_dim_attribsb  s_   € Ø—‘×$Ñ$ˆØŸ?™?Ó,×2Ñ2Ö4‰KˆD�%Ø�‰˜uÕ%Ü˜˜˜b¡¨£×!2Ñ!2Ð 3°4¸°wÐ?Õ@ñ 5r´   c                óX  — | j                  «       }|j                  }| j                  j                  |d<   |j	                  «       D ]0  \  }}|j                  d«      sŒd|j                  «       z   }	 |||<   Œ2 y# t        j                  $ r t        j                  d|› d�«       Y Œbw xY w)z>Copy all dimension style variables to HEADER section of `doc`.z	$DIMSTYLEr°   Ú$zUnsupported header variable: rÆ   N)r  ÚheaderrÁ   r"   r  r±   Úupperr   ÚDXFKeyErrorrÍ   r  )rº   r¹   rã   r"  r"   r  Ú
header_vars          r²   Úcopy_to_headerzDimStyle.copy_to_headerh  s˜   € à—/‘/Ó#ˆØ—‘ˆØ"Ÿh™hŸm™mˆˆ{ÑØ"Ÿ=™=ž?‰KˆD�%Ø�‰˜uÕ%Ø  4§:¡:£<Ñ/�
ðPØ).�F˜:Ò&ñ	 +øô
 ×(Ñ(ò PÜ—L‘LÐ#@ÀÀÈAÐ!NÖOðPús   Á2A:Á:,B)Â(B)c                ó¬  — | j                  d|«       | j                  d|«       | j                  d|«       | j                  d|«       | j                  dd«       | j                  rn| j                  j                  }||||fD ]N  }t        j                  |«      rt        j
                  ||«       Œ/|sŒ2||vsŒ7t        j                  d|› d�«      ‚ y	y	)
a}  Set arrows by block names or AutoCAD standard arrow names, set
        DIMTSZ to ``0`` which disables tick.

        Args:
            blk: block/arrow name for both arrows, if DIMSAH is 0
            blk1: block/arrow name for first arrow, if DIMSAH is 1
            blk2: block/arrow name for second arrow, if DIMSAH is 1
            ldrblk: block/arrow name for leader

        r-   r/   r1   r    rP   r   zBLOCK "r  N)r
  r¹   r  r   rë   r	  r   r  )rº   r  Úblk1Úblk2Úldrblkr  Úbs          r²   Ú
set_arrowszDimStyle.set_arrowsu  sÇ   € ð 	×Ñ˜H cÔ*Ø×Ñ˜I tÔ,Ø×Ñ˜I tÔ,Ø×Ñ˜K¨Ô0Ø×Ñ˜H aÔ(ð �8Š8Ø—X‘X—_‘_ˆFØ˜4  vÓ.�Ü×'Ñ'¨Ô*Ü×'Ñ'¨°Ô2ØÚ˜ &šÜ×-Ñ-°¸°uÐ<MÐ.NÓOÐOñ /ð r´   c                ó(   — | j                  d|«       y)z§Set tick `size`, which also disables arrows, a tick is just an
        oblique stroke as marker.

        Args:
            size: arrow size in drawing units

        rP   N)r
  )rº   Úsizes     r²   Úset_tickzDimStyle.set_tick’  s   € ð 	×Ñ˜H dÕ+r´   c                ó  — |rL|j                  «       }| j                  dt        j                  |   «       |dk(  r|�| j                  d|«       |r2| j                  dt        j                  |j                  «          «       yy)a/  Set measurement text alignment, `halign` defines the horizontal
        alignment (requires DXF R2000+), `valign` defines the vertical
        alignment, `above1` and `above2` means above extension line 1 or 2 and
        aligned with extension line.

        Args:
            halign: "left", "right", "center", "above1", "above2",
                requires DXF R2000+
            valign: "above", "center", "below"
            vshift: vertical text shift, if `valign` is "center";
                >0 shift upward,
                <0 shift downwards

        rm   ÚcenterNrV   r”   )Úlowerr
  r   ÚDIMTADÚDIMJUST)rº   ÚhalignÚvalignÚvshifts       r²   Úset_text_alignzDimStyle.set_text_alignœ  so   € ñ( Ø—\‘\“^ˆFØ×Ñ ¬%¯,©,°vÑ*>Ô?Ø˜Ò! fÐ&8Ø×#Ñ# H¨fÔ5áØ×Ñ 	¬5¯=©=¸¿¹»Ñ+HÕIð r´   c                óD  — |s|r|dz   |z   | j                   _        |�|| j                   _        |€|�>d}|du rt        j                  }|du r|t        j
                  z  }|| j                   _        |�|| j                   _        |�t        |«      | j                   _	        yy)a­  Set dimension text format, like prefix and postfix string, rounding
        rule and number of decimal places.

        Args:
            prefix: Dimension text prefix text as string
            postfix: Dimension text postfix text as string
            rnd: Rounds all dimensioning distances to the specified value, for
                instance, if DIMRND is set to 0.25, all distances round to the
                nearest 0.25 unit. If you set DIMRND to 1.0, all distances round
                to the nearest integer.
            dec: Sets the number of decimal places displayed for the primary
                units of a dimension, requires DXF R2000+
            sep: "." or "," as decimal separator, requires DXF R2000+
            leading_zeros: Suppress leading zeros for decimal dimensions
                if ``False``
            trailing_zeros: Suppress trailing zeros for decimal dimensions
                if ``False``

        z<>Nr   F)
rÁ   r(   r=   r   ÚDIMZIN_SUPPRESSES_LEADING_ZEROSÚ DIMZIN_SUPPRESSES_TRAILING_ZEROSro   rŠ   Úordr’   )	rº   ÚprefixÚpostfixÚrndÚdecÚsepÚleading_zerosÚtrailing_zerosro   s	            r²   Úset_text_formatzDimStyle.set_text_format¹  s    € ñ: ‘WØ%¨™}¨wÑ6ˆD�H‰HÔØˆ?Ø!ˆD�H‰HŒOð Ð$¨Ð(BØˆFØ Ñ%Ü×>Ñ>�Ø Ñ&Øœ%×@Ñ@Ñ@�Ø$ˆD�H‰HŒOàˆ?Ø!ˆD�H‰HŒOØˆ?Ü" 3›xˆD�H‰HÕð r´   c                óê   — |�|| j                   _        |�|| j                   _        |�|| j                   _        |�|| j                   _        |�|| j                   _        |�|| j                   _        yy)a  Set dimension line properties

        Args:
            color: color index
            linetype: linetype as string, requires DXF R2007+
            lineweight: line weight as int, 13 = 0.13mm, 200 = 2.00mm,
                requires DXF R2000+
            extension: extension length
            disable1: ``True`` to suppress first part of dimension line,
                requires DXF R2000+
            disable2: ``True`` to suppress second part of dimension line,
                requires DXF R2000+

        N)rÁ   r�   r?   r¬   r•   r–   r¡   )rº   ÚcolorÚlinetypeÚ
lineweightÚ	extensionÚdisable1Údisable2s          r²   Úset_dimline_formatzDimStyle.set_dimline_formaté  sq   € ð. ÐØ$ˆD�H‰HÔØÐ Ø'ˆD�H‰HŒOàÐ!Ø(ˆD�H‰HŒOØÐØ&ˆD�H‰HŒOØÐØ&ˆD�H‰HŒOØÐØ (ˆD�H‰HÕð  r´   c                óæ   — |�|| j                   _        |�|| j                   _        |�|| j                   _        |�|| j                   _        |�#d| j                   _        || j                   _        yy)a}  Set common extension line attributes.

        Args:
            color: color index
            lineweight: line weight as int, 13 = 0.13mm, 200 = 2.00mm
            extension: extension length above dimension line
            offset: offset from measurement point
            fixed_length: set fixed length extension line, length below the
                dimension line

        Nr   )rÁ   rƒ   r;   r7   r­   rž   rE   )rº   rF  rH  rI  ÚoffsetÚfixed_lengths         r²   Úset_extline_formatzDimStyle.set_extline_format  sk   € ð& ÐØ$ˆD�H‰HÔØÐ Ø'ˆD�H‰HŒOØÐØ$ˆD�H‰HŒOØÐ!Ø(ˆD�H‰HŒOØÐ#Ø !ˆD�H‰HÔØ*ˆD�H‰H�Oð $r´   c                óR   — |rd| j                   _        |�|| j                   _        yy)z¼Set extension line 1 attributes.

        Args:
            linetype: linetype for extension line 1, requires DXF R2007+
            disable: disable extension line 1 if ``True``

        r   N)rÁ   ri   r£   ©rº   rG  Údisables      r²   Úset_extline1zDimStyle.set_extline1-  ó)   € ñ ØˆD�H‰HŒOØÐØ (ˆD�H‰HÕð  r´   c                óR   — |rd| j                   _        |�|| j                   _        yy)z¼Set extension line 2 attributes.

        Args:
            linetype: linetype for extension line 2, requires DXF R2007+
            disable: disable extension line 2 if ``True``

        r   N)rÁ   rk   r¢   rR  s      r²   Úset_extline2zDimStyle.set_extline2:  rU  r´   c                ó  — d| j                   _        d| j                   _        t        |«      | j                   _        |�t        |«      | j                   _        nt        |«      | j                   _        |�t        |«      | j                   _        |€|�>d}|du rt        j                  }|du r|t        j                  z  }|| j                   _
        |�t        «       | j                   _        |�t        |«      | j                   _        yy)a`  Set tolerance text format, upper and lower value, text height
        factor, number of decimal places or leading and trailing zero
        suppression.

        Args:
            upper: upper tolerance value
            lower: lower tolerance value, if ``None`` same as upper
            hfactor: tolerance text height factor in relation to the dimension
                text height
            align: tolerance text alignment enum :class:`ezdxf.enums.MTextLineAlignment`
                requires DXF R2000+
            dec: Sets the number of decimal places displayed,
                requires DXF R2000+
            leading_zeros: suppress leading zeros for decimal dimensions
                if ``False``, requires DXF R2000+
            trailing_zeros: suppress trailing zeros for decimal dimensions
                if ``False``, requires DXF R2000+

        r   r   NF)rÁ   ra   rc   ÚfloatrA   rC   rX   r   r:  r;  r˜   Úintr—   r‹   )	rº   r#  r2  ÚhfactorÚalignr@  rB  rC  r˜   s	            r²   Úset_tolerancezDimStyle.set_toleranceG  sÚ   € ð< ˆ�‰ŒØˆ�‰ŒÜ˜u›ˆ�‰ŒØÐÜ" 5›\ˆD�H‰H�Nä" 5›\ˆD�H‰HŒNØÐÜ$ W›~ˆD�H‰HÔð Ð$¨Ð(BØˆGØ Ñ%Ü×?Ñ?�Ø Ñ&Øœ5×AÑAÑA�Ø&ˆD�H‰HÔàÐÜ"›uˆD�H‰HÔØˆ?Ü" 3›xˆD�H‰HÕð r´   c                óÄ  — d| j                   _        d| j                   _        t        |«      | j                   _        t        |«      | j                   _        t        |«      | j                   _        |€|�>d}|du rt        j                  }|du r|t        j                  z  }|| j                   _
        d| j                   _        |�t        |«      | j                   _        yy)aý  Set limits text format, upper and lower limit values, text height
        factor, number of decimal places or leading and trailing zero
        suppression.

        Args:
            upper: upper limit value added to measurement value
            lower: lower limit value subtracted from measurement value
            hfactor: limit text height factor in relation to the dimension
                text height
            dec: Sets the number of decimal places displayed,
                requires DXF R2000+
            leading_zeros: suppress leading zeros for decimal dimensions
                if ``False``, requires DXF R2000+
            trailing_zeros: suppress trailing zeros for decimal dimensions
                if ``False``, requires DXF R2000+

        r   r   NF)rÁ   rc   ra   rY  rA   rC   rX   r   r:  r;  r˜   r—   rZ  r‹   )rº   r#  r2  r[  r@  rB  rC  r˜   s           r²   Ú
set_limitszDimStyle.set_limits~  s·   € ð6 ˆ�‰ŒØˆ�‰ŒÜ˜u›ˆ�‰ŒÜ˜u›ˆ�‰ŒÜ  ›>ˆ�‰Ôð Ð$¨Ð(BØˆGØ Ñ%Ü×?Ñ?�Ø Ñ&Øœ5×AÑAÑA�Ø&ˆD�H‰HÔØˆ�‰ÔØˆ?Ü" 3›xˆD�H‰HÕð r´   c              #  ó  K  — | j                   rt| j                   j                  }dD ]X  }| j                  j                  |d«      }|sŒ"|j                  |d«      }|€Œ7|j                  j                  j
                  –— ŒZ yy­w)z(Support for "ReferencedBlocks" protocol.r®   N)r¹   r  rÁ   rË   Úblock_recordrþ   )rº   r  rÔ   r"   Úblocks        r²   Ú__referenced_blocks__zDimStyle.__referenced_blocks__¬  so   è ø€ à�8Š8Ø—X‘X—_‘_ˆFÛL�Ø—x‘x—|‘| K°Ó6�ÚØ"ŸJ™J t¨TÓ2�EØÑ(Ø#×0Ñ0×4Ñ4×;Ñ;Ó;ñ  Mð ùs   ‚ABÁ	BÁ&Br¸   )rÀ   zOptional[SubclassProcessor]Úreturnr   )r¹   r   rd  ÚNone)râ   r   rd  re  )rí   zxref.Registryrd  re  )rú   r   rû   zxref.ResourceMapperrd  re  )r  Ústrró   rf  rd  re  )r"   rf  rd  rf  )NNN)rd  re  )r¹   r   )r*   r*   r*   r*   )
r  rf  r(  rf  r)  rf  r*  rf  rd  re  )r   )r.  rY  rd  re  )r5  úOptional[str]r6  rg  r7  úOptional[float]rd  re  )r*   r*   NNNTT)r=  rf  r>  rf  r?  rh  r@  úOptional[int]rA  rg  rB  ÚboolrC  rj  )NNNNNN)rF  ri  rG  rg  rH  ri  rI  rh  rJ  úOptional[bool]rK  rk  )NNNNN)
rF  ri  rH  ri  rI  rh  rN  rh  rO  rh  )NF)rG  rg  )Nç      ð?NNNN)r#  rY  r2  rh  r[  rY  r\  zOptional[MTextLineAlignment]r@  ri  rB  rk  rC  rk  rd  re  )rl  NNN)r#  rY  r2  rY  r[  rY  r@  ri  rB  rk  rC  rk  rd  re  )rd  zIterable[str])(Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr
   r   r   rÜ   r  ÚdictÚbuild_group_code_itemsr³   ÚCODE_TO_DXF_ATTRIBÚpropertyrG   r½   rÇ   rÙ   rå   rö   rÝ   rÒ   rÿ   r  r  r  r&  r,  r/  r8  rD  rL  rP  rT  rW  r]  r_  rc  Ú__classcell__)rÂ   s   @r²   r   r   Œ  sÜ  ø„ á'à€GÙ˜zÐ+CÀ]ÓS€JÙ˜j×?Ñ?À
ÓKÓLÐàñ#ó ð#ð 8<ðØ4ðà	õõ)õV8õ$ 4õD1ò2<ò"/óOó*	1ô	%óAóPð LNðPØðPØ#&ðPØ36ðPØEHðPà	óPô:,ð !%Ø $Ø"&ð	JàðJð ðJð  ð	Jð
 
óJð> ØØ#Ø!Ø!Ø"Ø#ð.(àð.(ð ð.(ð ð	.(ð
 ð.(ð ð.(ð ð.(ð ó.(ðd  $Ø"&Ø$(Ø%)Ø#'Ø#'ð#)àð#)ð  ð#)ð "ð	#)ð
 #ð#)ð !ð#)ð !ó#)ðN  $Ø$(Ø%)Ø"&Ø(,ð+àð+ð "ð+ð #ð	+ð
  ð+ð &ó+ô>)ô)ð  "&ØØ.2Ø!Ø(,Ø)-ð5(àð5(ð ð5(ð ð	5(ð
 ,ð5(ð ð5(ð &ð5(ð 'ð5(ð 
ó5(ðv Ø!Ø(,Ø)-ð,(àð,(ð ð,(ð ð	,(ð
 ð,(ð &ð,(ð 'ð,(ð 
ó,(÷\	<r´   c                óŠ   — 	 |j                   |    }|j                  j                  }|S # t        j                  $ r |}Y |S w xY wr¸   )rÈ   rÁ   r"   r   r$  )rþ   r¹   r%   Úentryr   s        r²   r  r  ¸  sN   € ð$Ø—‘˜VÑ$ˆð —Y‘Y—^‘^ˆ
ØÐøô	 ×Ñò Ø‰
ð Ðð	ús   ‚) ©AÁA)r"   rf  rd  rj  )r*   )r¹   r   rd  rf  )<Ú
__future__r   Útypingr   r   r   Útyping_extensionsr   ÚloggingÚezdxf.enumsr   Úezdxf.lldxf.attributesr	   r
   r   r   r   r   Úezdxf.lldxfr   Úezdxf.lldxf.constr   r   r   r   Úezdxf.render.arrowsr   Ú	dxfentityr   r   r   Úlayerr   Úfactoryr   Úezdxf.documentr   Úezdxf.entitiesr   Úezdxf.lldxf.tagwriterr   r    r   Ú__all__Ú	getLoggerrÍ   Úis_valid_table_nameÚis_in_integer_rangeÚLINEWEIGHT_BYBLOCKrÜ   r¿   rà   rß   rÞ   ræ   rÉ   rÑ   r³   r   r  © r´   r²   Ú<module>rŽ     sc  ðõ #ß 4Ñ 4Ý "Û Ý *÷÷ õ ß 5Ñ 5Ý !Ý &ß ?Ñ ?Ý +Ý $áÝ&Ý+Ý7Ýàˆ,€Ø	ˆ×	Ñ	˜7Ó	#€áØð^Ø‘˜ :¸×9VÑ9VÔWð^à‘˜ QÔ'ð^ð 	‘7˜1 bÔ)ð^ð 	‘G˜A rÔ*ð	^ð 	‘'˜! RÔ(ð^ð 	‘7˜1 bÔ)ð^ð 	‘7˜1 bÔ)ð^ð 	‘G˜B¨Ô*ð^ð 	‘'˜" cÔ*ð^ð 	‘'˜" eÔ,ð^ð 	‘'˜" dÔ+ð^ð 	‘'˜" dÔ+ð^ð 	‘'˜" aÔ(ð^ð  	‘'˜" aÔ(ð!^ð" 	‘˜ QÔ'ð#^ð$ 	‘˜ QÔ'ð%^ð( 	‘'˜"¨¸#Ô>ñ)^ð, 	‘W˜R¨G¸RÈ$ÔOð-^ð0 	‘'˜# sÔ+ð1^ð4 	‘'˜# sÔ+ð5^ð6 	‘'˜# qÔ)ð7^ð8 	‘7˜3¨Ô6ð9^ð< 	‘7˜3¨Ô*ð=^ð@ 	‘'˜# qÔ)ðA^ðB 	‘7˜3¨Ô*ðC^ðF 	‘'˜# uÔ-ðG^ðH 	‘W˜S¨W¸aÔ@ðI^ðL 	‘G˜B¨7¸AÔ>ðM^ðP 	‘w˜r¨g¸qÔAðQ^ðR 	‘'˜" aÔ(ðS^ðT 	‘'˜" aÔ(ðU^ðX 	‘'˜" aÔ(ðY^ð\ 	‘'˜" aÔ(ð]^ð` 	‘'˜" aÔ(òa^ðd 	‘'˜" aÔ(ðe^ðh 	‘'˜" aÔ(ði^ðj 	‘'˜" aÔ(ðk^ðv 	‘7˜2 q°WÔ=ðw^ð@ 	‘W˜R¨G¸dÔCðA^ðB 	‘'˜# qÔ)ðC^ðD 	‘7˜3¨Ô*ðE^ðF 	‘7˜3¨Ô*ðG^ðH 	‘'˜# qÔ)ðI^ðL 	‘'˜# qÔ)ðM^ðN 	‘7˜3¨Ô*ðO^ðR 	‘7˜3¨Ô*ðS^ðV 	‘7˜3¨Ô*ðW^ðZ 	‘7˜3¨Ô*ð[^ð\ 	‘7˜3¨7¸AÔ>ð]^ð^ 	‘7˜3“<ð_^ð` 	‘'˜#¨'¸1Ô=òa^ðd 	‘7˜3¨7¸AÔ>ðe^ðf 	‘7˜3¨7¸AÔ>ðg^ðh 	‘G˜C¨G¸QÔ?ði^ðr 	‘GØØØØ3�i×3Ñ3°A°qÓ9Ø ô
ðs^ð@ 	‘7˜3¨7¸AÔ>ðA^ðB 	‘G˜C¨G¸QÔ?ðC^ðD 	‘7˜3¨7¸BÔ?ðE^ðL 	‘G˜C¨G¸QÔ?ðM^ðP 	‘7˜3¨7¸AÔ>ðQ^ðT 	‘'˜#¨'¸1Ô=ðU^ðX 	‘'˜#¨'¸1Ô=ðY^ðZ 	‘7˜3¨7¸AÔ>ð[^ð\ 	‘7˜3¨7¸AÔ>ð]^ð^ 	‘7˜3¨7¸AÔ>ð_^ð` 	‘G˜C¨G¸QÔ?ða^ðb 	‘'˜#“,ðc^ðd 	‘'˜#¨'¸1Ô=òe^ðr 	‘G˜C¨G¸QÔ?ðs^ðv 	‘G˜C¨G¸QÔ?ðw^ð~ 	‘G˜K°GÔ<ð^ðB 	‘W˜[°WÔ=ðC^ðF 	‘G˜K°GÔ<ðG^ðJ 	‘G˜K°GÔ<ðK^ðN 	‘G˜K°GÔ<ðO^ðV 	™7 3°7Ô;ðW^ðZ 	™ °Ô9ð[^ð^ 	™' #°'Ô:ð_^ðb 	™' #°'Ô:ðc^ðf 	™G C°GÔ<ðg^ðj 	™7 3°7Ô;ðk^ðn 	™7 3°7Ô;ðo^ðr 	™7 3°7Ô;ðs^ðv 	‘'˜# u×'?Ñ'?ÈGÔTðw^ðz 	‘'˜# u×'?Ñ'?ÈGÔTñ{^óa€ñD /¨}Ó=Ð òJÐ òXDÐ òL*€ðX !Ð ØFÐ Ø;Ð ó"ð ôh<ˆyó h<ó ðh<õVr´   