Ë
    £èh3  ã                  ód  — d dl mZ d dlmZ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mZ 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m Z  d dl!m"Z" ddl#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 er,d dl!m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dlm:Z: d dl;m<Z< d dl=m>Z> dgZ? e	j€                  d«      ZA ed eddej„                  ¬ «       ed!dd"ej†                  e¬#«       ed$d d"ej†                  e¬#«       ed%d ejˆ                  d d&«      e¬'«       ed(dd"ej†                  e¬#«       ed)dd"ej†                  e¬#«       ed*dd"ejŠ                  e¬#«       ed+dd"ejŠ                  e¬#«       ed,d-d"ejŒ                  e¬#«       ed.d/d"¬0«       ed1ejŽ                  ed"ej�                  e¬2«       ed3ejŽ                  ed"ej�                  e¬2«       ed4ejŽ                  ed"¬5«       ed6ejŽ                  ed"¬5«      d7œ«      ZI eeI«      ZJe* G d8„ de'e,«      «       ZKy)9é    )Úannotations)ÚTYPE_CHECKINGÚIterableÚOptionalÚIterator)ÚSelfN)Ú	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚTagsÚDXFTag)Úconst)ÚVec3ÚUVecÚX_AXISÚZ_AXISÚNULLVEC)Útransform_extrusion©Úexplode_entity)Ú
AuditErroré   )Ú
base_classÚSubclassProcessor)Ú
DXFGraphicÚacdb_entity)Úregister_entity)ÚOverrideMixinÚregister_override_handles©ÚDimStyleOverride)Údefault_copy)ÚAuditor)ÚDXFNamespaceÚ	DXFEntity)Ú
BaseLayout)ÚAbstractTagWriter)ÚMatrix44)ÚEntityQuery)ÚxrefÚLeaderÚezdxfÚ
AcDbLeaderé   ÚStandard)Údefaultr	   éG   T)r4   Úoptionalr	   ÚfixeréH   éI   é   )r4   r	   r7   éJ   éK   é(   é)   éM   é   iT  Ú0)r4   r6   éÒ   )Úxtyper4   r6   r	   r7   éÓ   éÔ   )rC   r4   r6   éÕ   )ÚdimstyleÚhas_arrowheadÚ	path_typeÚannotation_typeÚhookline_directionÚhas_hooklineÚtext_heightÚ
text_widthÚblock_colorÚannotation_handleÚnormal_vectorÚhorizontal_directionÚleader_offset_block_refÚ"leader_offset_annotation_placementc                  óð   ‡ — e Zd ZdZdZ eeee«      Z	e
j                  Zdˆ fd„Zefdd„Z	 d	 	 	 dˆ fd„Zdd„Zdd„Zdˆ fd„Zdd	„Zdˆ fd
„Zdˆ fd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd d„Zd!ˆ fd„Zˆ xZS )"r/   zDXF LEADER entityÚLEADERc                ó0   •— t         ‰| �  «        g | _        y ©N)ÚsuperÚ__init__Úvertices)ÚselfÚ	__class__s    €ú5lib/python3.12/site-packages/ezdxf/entities/leader.pyrZ   zLeader.__init__«   s   ø€ Ü‰ÑÔØ$&ˆ�ó    c                óp   — t        |t        «      sJ ‚t        j                  | j                  «      |_        y)zCopy vertices.N)Ú
isinstancer/   r   Úlistr[   )r\   ÚentityÚcopy_strategys      r^   Ú	copy_datazLeader.copy_data¯   s&   € ä˜&¤&Ô)Ð)Ð)ÜŸ)™) D§M¡MÓ2ˆ�r_   c                ó   •— t         ‰| �  |«      }|rk|j                  d«      }|r5t        | j	                  |«      «      }|j                  |t        |d¬«       |S t        j                  d|j                  › d�«      ‚|S )Né   T)Úrecoverz)missing 'AcDbLeader' subclass in LEADER(#Ú))
rY   Úload_dxf_attribsÚsubclass_by_indexr   Úload_verticesÚfast_load_dxfattribsÚacdb_leader_group_codesr   ÚDXFStructureErrorÚhandle)r\   Ú	processorÚdxfÚtagsr]   s       €r^   rj   zLeader.load_dxf_attribs´   s�   ø€ ô ‰gÑ& yÓ1ˆÙØ×.Ñ.¨qÓ1ˆDÙÜ˜D×.Ñ.¨tÓ4Ó5�Ø×.Ñ.ØÔ0°$Àð /ô ð ˆ
ô	 ×-Ñ-Ø?ÀÇ
Á
¸|È1ÐMóð ð ˆ
r_   c              #  ó¬   K  — |D ]K  }|j                   dk(  r&| j                  j                  |j                  «       Œ8|j                   dk(  rŒH|–— ŒM y ­w)Né
   éL   )Úcoder[   ÚappendÚvalue)r\   rs   Útags      r^   rl   zLeader.load_verticesÆ   sD   è ø€ ÛˆCØ�x‰x˜2Š~Ø—‘×$Ñ$ S§Y¡YÕ/Ø—‘˜R’àà“	ñ ùs   ‚AAc                óz   — t        | j                  «      dk  r#t        j                  dt	        | «      › d�«       yy)Nrg   zInvalid z: more than 1 vertex required.FT)Úlenr[   ÚloggerÚdebugÚstr)r\   Ú	tagwriters     r^   Úpreprocess_exportzLeader.preprocess_exportÐ   s3   € Üˆt�}‰}Ó Ò!Ü�L‰L˜8¤C¨£I ;Ð.LÐMÔNØàr_   c                ó  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |g d¢«       | j                  |«       | j                  j                  |g d¢«       y)z(Export entity specific data as DXF tags.)rG   rH   rI   rJ   rK   rL   rM   rN   )rO   rP   rQ   rR   rS   rT   N)
rY   Úexport_entityÚ
write_tag2r   ÚSUBCLASS_MARKERÚacdb_leaderÚnamerr   Úexport_dxf_attribsÚexport_vertices)r\   r€   r]   s     €r^   rƒ   zLeader.export_entity×   sp   ø€ ä‰Ñ˜iÔ(Ø×ÑœU×2Ñ2´K×4DÑ4DÔEØ�‰×#Ñ#Øò	ô	
ð 	×Ñ˜YÔ'Ø�‰×#Ñ#Øòõ
	
r_   c                ó”   — |j                  dt        | j                  «      «       | j                  D ]  }|j                  d|«       Œ y )Nrv   ru   )r„   r|   r[   Úwrite_vertex)r\   r€   Úvertexs      r^   r‰   zLeader.export_verticesõ   s9   € Ø×Ñ˜R¤ T§]¡]Ó!3Ô4Ø—m”mˆFØ×"Ñ" 2 vÕ.ñ $r_   c                óV  •— | j                   €J ‚t        ‰| �	  |«       |j                  | j                  j
                  «       | j                  dd«      sy| j                   j                  t        j                  kD  rt        | |«       y| j                  «       j                  |«       y)z5Register required resources to the resource registry.NÚACADÚDSTYLE)ÚdocrY   Úregister_resourcesÚadd_dim_stylerr   rG   Úhas_xdata_listÚ
dxfversionr   ÚDXF12r#   ÚoverrideÚregister_resources_r12)r\   Úregistryr]   s     €r^   r‘   zLeader.register_resourcesú   sƒ   ø€ à�x‰xÐ#Ð#Ð#Ü‰Ñ" 8Ô,Ø×Ñ˜tŸx™x×0Ñ0Ô1ð ×"Ñ" 6¨8Ô4Øà�8‰8×Ñ¤§¡Ò,ä% d¨HÕ5ð �M‰M‹O×2Ñ2°8Õ<r_   c                ó²  •— t         ‰| �  ||«       | j                  j                  d«      r4|j	                  | j                  j
                  «      |j                  _        | j                  €J ‚| j                  j                  t        j                  kD  ry| j                  «       }|j                  syt        |t        «      sJ ‚|j                  ||«       y)z3Translate resources from self to the copied entity.rP   N)rY   Úmap_resourcesrr   ÚhasattrÚ
get_handlerP   r�   r”   r   r•   r–   Údimstyle_attribsra   r/   Úmap_resources_r12)r\   ÚcloneÚmappingÚself_overrider]   s       €r^   rš   zLeader.map_resources  s¨   ø€ ä‰Ñ˜e WÔ-Ø�8‰8×ÑÐ/Ô0Ø*1×*<Ñ*<¸T¿X¹X×=WÑ=WÓ*XˆE�I‰IÔ'ð �x‰xÐ#Ð#Ð#Ø�8‰8×Ñ¤§¡Ò,ØØŸ™›ˆØ×-Ò-Øä˜%¤Ô(Ð(Ð(Ø×'Ñ'¨¨wÕ7r_   c                ó   — t        | «      S )a?  Returns the :class:`~ezdxf.entities.DimStyleOverride` object.

        .. warning::

            The LEADER entity shares only the DIMSTYLE override infrastructure with the
            DIMENSION entity but does not support any other features of the DIMENSION
            entity!

            HANDLE WITH CARE!

        r$   ©r\   s    r^   r–   zLeader.override  s   € ô   Ó%Ð%r_   c                óJ   — |D �cg c]  }t        |«      ‘Œ c}| _        yc c}w )zySet vertices of the leader, vertices is an iterable of
        (x, y [,z]) tuples or :class:`~ezdxf.math.Vec3`.

        N)r   r[   )r\   r[   Úvs      r^   Úset_verticeszLeader.set_vertices+  s!   € ñ
 +3Ó3©( Qœ˜a�¨(Ñ3ˆ�ùÒ3s   … c                óF  — t        |j                  | j                  «      «      | _        t        | j                  j
                  |«      \  | j                  _        }|j                  | j                  j                  «      | j                  _        | j                  |«       | S )z=Transform LEADER entity by transformation matrix `m` inplace.)	rb   Útransform_verticesr[   r   rr   rQ   Útransform_directionrR   Úpost_transform)r\   ÚmÚ_s      r^   Ú	transformzLeader.transform2  s}   € ä˜Q×1Ñ1°$·-±-Ó@ÓAˆŒÜ$7Ø�H‰H×"Ñ" Aó%
Ñ!ˆ�‰Ô ð )*×(=Ñ(=Ø�H‰H×)Ñ)ó)
ˆ�‰Ô%ð 	×Ñ˜AÔØˆr_   c              #  ó\   K  — ddl m}  || «      D ]  }|j                  | «       |–— Œ y­w)z0Implements the SupportsVirtualEntities protocol.r   )Úvirtual_entitiesN)Úezdxf.render.leaderr¯   Úset_source_of_copy)r\   r¯   Úes      r^   Ú__virtual_entities__zLeader.__virtual_entities__>  s+   è ø€ å8á! $Ö'ˆAØ× Ñ  Ô&Ø‹Gñ (ùs   ‚*,c                ó"   — | j                  «       S )a  Yields the DXF primitives the LEADER entity is build up as virtual entities.

        These entities are located at the original location, but are not stored
        in the entity database, have no handle and are not assigned to any
        layout.
        )r³   r£   s    r^   r¯   zLeader.virtual_entitiesF  s   € ð ×(Ñ(Ó*Ð*r_   c                ó   — t        | |«      S )aá  Explode parts of the LEADER entity as DXF primitives into target layout,
        if target layout is ``None``, the target layout is the layout of the LEADER
        entity. This method destroys the source entity.

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

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

        r   )r\   Útarget_layouts     r^   ÚexplodezLeader.explodeO  s   € ô ˜d MÓ2Ð2r_   c           	     ó   •— t         ‰| �  |«       t        | j                  «      dk  rV|j	                  t
        j                  dt        | «      › dt        | j                  «      › d�| ¬«       | j                  «        yy)zValidity check.rg   zDeleted entity z with invalid vertex count = Ú.)rw   ÚmessageÚ
dxf_entityN)	rY   Úauditr|   r[   Úfixed_errorr   ÚINVALID_VERTEX_COUNTr   Údestroy)r\   Úauditorr]   s     €r^   r¼   zLeader.audit^  su   ø€ ä‰‰�gÔÜˆt�}‰}Ó Ò!Ø×ÑÜ×4Ñ4Ø)¬#¨d«)¨ð 5Ü˜Ÿ™Ó'Ð(¨ð+àð	  ô ð �L‰L�Nð "r_   )ÚreturnÚNone)rc   r   rÁ   rÂ   rX   )rq   zOptional[SubclassProcessor]rÁ   r(   )rs   r   rÁ   zIterable[DXFTag])r€   r+   rÁ   Úbool)r€   r+   rÁ   rÂ   )r˜   zxref.RegistryrÁ   rÂ   )rŸ   r   r    zxref.ResourceMapperrÁ   rÂ   )rÁ   r%   )r[   zIterable[UVec])r«   r,   rÁ   r/   )rÁ   zIterator[DXFGraphic])r¶   zOptional[BaseLayout]rÁ   r-   )rÀ   r'   rÁ   rÂ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r   r    r†   Ú
DXFATTRIBSr   ÚDXF2000ÚMIN_DXF_VERSION_FOR_EXPORTrZ   r&   re   rj   rl   r�   rƒ   r‰   r‘   rš   r–   r¦   r­   r³   r¯   r·   r¼   Ú__classcell__)r]   s   @r^   r/   r/   £   s“   ø„ áà€GÙ˜z¨;¸ÓD€JØ!&§¡Ðõ'ð 5Aô 3ð 8<ðØ4ðà	õó$óõ
ó</õ
=õ"8ó$&ó4ó
óó+ô3÷
ñ 
r_   )LÚ
__future__r   Útypingr   r   r   r   Útyping_extensionsr   ÚloggingÚezdxf.lldxfr	   Úezdxf.lldxf.attributesr
   r   r   r   r   r   Úezdxf.lldxf.tagsr   r   r   Ú
ezdxf.mathr   r   r   r   r   Úezdxf.math.transformtoolsr   Úezdxf.exploder   Úezdxf.auditr   Ú	dxfentityr   r   Údxfgfxr   r    Úfactoryr!   Ú	dimensionr"   r#   Údimstyleoverrider%   Úcopyr&   r'   Úezdxf.entitiesr(   r)   Úezdxf.layoutsr*   Úezdxf.lldxf.tagwriterr+   r,   Úezdxf.queryr-   r0   r.   Ú__all__Ú	getLoggerr}   Úis_valid_table_nameÚis_integer_boolÚis_in_integer_rangeÚis_greater_zeroÚis_valid_aci_colorÚpoint3dÚis_not_null_vectorr†   rn   r/   © r_   r^   Ú<module>rì      s[  ðõ #ß >Ó >Ý "Û Ý !÷÷ ÷ *Ý ç :Õ :Ý 9Ý (Ý "ß 4ß +Ý $ß ?Ý .Ý áÝ#ß6Ý(Ý7Ý#Ý'Ýàˆ*€Ø	ˆ×	Ñ	˜7Ó	#€áØáØØØ×3Ñ3ô
ñ !ØØØØ×/Ñ/Ø ô
ñ ØØØØ×/Ñ/Ø ô
ñ #ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ñ &ØØØØ×/Ñ/Ø ô
ñ  ØØØØ×/Ñ/Ø ô
ñ ØØØØ×/Ñ/Ø ô
ñ ØØØØ×/Ñ/Ø ô
ñ ØØØØ×2Ñ2Ø ô
ñ % S°#ÀÔEÙ ØØ—-‘-ØØØ×2Ñ2Ø ô
ñ !(ØØ—-‘-ØØØ×2Ñ2Ø ô!
ñ $+Ø�u—}‘}¨gÀô$
ñ /6Ø�u—}‘}¨gÀô/
ñYróu€ñl -¨[Ó9Ð ð ôDˆZ˜ó Dó ñDr_   