Ë
    £èhv  ã                  óÆ  — d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZ d dlmZ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mZ dd
lmZm Z m!Z! ddl"m#Z# erd dl$m%Z% d dl&m'Z' dgZ( ed e	dejR                  e¬«       e	dd d¬«       e	dejR                  edejT                  e¬«       e	dd d¬«      dœ«      Z+ ee+«      Z, ee!e,«      Z-e# G d„ de«      «       Z.y)é    )Úannotations)ÚTYPE_CHECKINGÚIteratorÚOptional)Ú	validator)ÚDXFAttrÚDXFAttributesÚDefSubclassÚXTypeÚRETURN_DEFAULTÚgroup_code_mappingÚmerge_group_code_mappings)ÚDXF12ÚSUBCLASS_MARKER)ÚVec3ÚMatrix44ÚNULLVECÚZ_AXISÚOCS)Ú-transform_thickness_and_extrusion_without_ocsé   )Ú
base_classÚSubclassProcessor)Ú
DXFGraphicÚacdb_entityÚacdb_entity_group_codes)Úregister_entity)ÚDXFNamespace)ÚAbstractTagWriterÚPointÚ	AcDbPointé
   )ÚxtypeÚdefaulté'   T)r$   ÚoptionaléÒ   )r#   r$   r&   r   Úfixeré2   ©ÚlocationÚ	thicknessÚ	extrusionÚanglec                  ó€   ‡ — e Zd ZdZdZ eeee«      Z		 d		 	 	 d
ˆ fd„Z
dˆ fd„Zdd„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Zˆ xZS )r    zDXF POINT entityÚPOINTc                ó^   •— t         t        | �  |«      }|r|j                  |t        «       |S )z!Loading interface. (internal API))Úsuperr   Úload_dxf_attribsÚsimple_dxfattribs_loaderÚmerged_point_group_codes)ÚselfÚ	processorÚdxfÚ	__class__s      €ú4lib/python3.12/site-packages/ezdxf/entities/point.pyr3   zPoint.load_dxf_attribsR   s/   ø€ ô
 ”J Ñ6°yÓAˆÙØ×.Ñ.¨sÔ4LÔMØˆ
ó    c                óÎ   •— t         ‰| �  |«       |j                  t        kD  r$|j	                  t
        t        j                  «       | j                  j                  |g d¢«       y)z7Export entity specific data as DXF tags. (internal API)r*   N)
r2   Úexport_entityÚ
dxfversionr   Ú
write_tag2r   Ú
acdb_pointÚnamer8   Úexport_dxf_attribs)r6   Ú	tagwriterr9   s     €r:   r=   zPoint.export_entity\   sJ   ø€ ä‰Ñ˜iÔ(Ø×Ñ¤%Ò'Ø× Ñ ¤´*·/±/ÔBØ�‰×#Ñ#ØÒFõ	
r;   c                ó¨   — |j                  | j                  j                  «      | j                  _        t        | |«       | j	                  |«       | S )z@Transform the POINT entity by transformation matrix `m` inplace.)Ú	transformr8   r+   r   Úpost_transform)r6   Úms     r:   rE   zPoint.transforme   s>   € àŸK™K¨¯©×(9Ñ(9Ó:ˆ�‰ÔÜ5°d¸AÔ>à×Ñ˜AÔØˆr;   c                óÐ   — t        |||«      | j                  j                  z   | j                  _        | j                  r&| j	                  t        j                  |||«      «       | S )zeOptimized POINT translation about `dx` in x-axis, `dy` in y-axis and
        `dz` in z-axis.
        )r   r8   r+   Úis_post_transform_requiredrF   r   Ú	translate)r6   ÚdxÚdyÚdzs       r:   rJ   zPoint.translatem   sS   € ô !  R¨Ó,¨t¯x©x×/@Ñ/@Ñ@ˆ�‰Ôà×*Ò*Ø×Ñ¤× 2Ñ 2°2°r¸2Ó >Ô?Øˆr;   c              #  ór   K  — ddl m} |j                  | ||«      D ]  }|j                  | «       |–— Œ y­w)a½  Yields the graphical representation of POINT as virtual DXF
        primitives (LINE and CIRCLE).
        The dimensionless point is rendered as zero-length line!

        Check for this condition::

            e.dxftype() == 'LINE' and e.dxf.start.isclose(e.dxf.end)

        if the rendering engine can't handle zero-length lines.

        Args:
            pdsize: point size in drawing units
            pdmode: point styling mode

        r   )ÚpointN)Úezdxf.renderrO   Úvirtual_entitiesÚset_source_of_copy)r6   ÚpdsizeÚpdmoderO   Úes        r:   rQ   zPoint.virtual_entitiesw   s7   è ø€ õ$ 	'Ø×'Ñ'¨¨f°fÖ=ˆAØ× Ñ  Ô&Ø‹Gñ >ùs   ‚57c                ó   — t        «       S ©N)r   )r6   s    r:   Úocsz	Point.ocsŽ   s   € ô ‹uˆr;   rW   )r7   zOptional[SubclassProcessor]Úreturnr   )rC   r   rY   ÚNone)rG   r   rY   r    )rK   ÚfloatrL   r[   rM   r[   rY   r    )r   r   )rS   r[   rT   ÚintrY   zIterator[DXFGraphic])rY   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr	   r   r   r@   Ú
DXFATTRIBSr3   r=   rE   rJ   rQ   rX   Ú__classcell__)r9   s   @r:   r    r    K   si   ø„ áà€GÙ˜z¨;¸
ÓC€Jð 8<ðØ4ðà	õõ
óóð 01ðØðØ),ðà	ó÷.r;   N)/Ú
__future__r   Útypingr   r   r   Úezdxf.lldxfr   Úezdxf.lldxf.attributesr   r	   r
   r   r   r   r   Úezdxf.lldxf.constr   r   Ú
ezdxf.mathr   r   r   r   r   Úezdxf.math.transformtoolsr   Ú	dxfentityr   r   Údxfgfxr   r   r   Úfactoryr   Úezdxf.entitiesr   Úezdxf.lldxf.tagwriterr   Ú__all__Úpoint3dÚis_not_null_vectorr@   Úacdb_point_group_codesr5   r    © r;   r:   Ú<module>ru      sð   ðõ #ß 4Ñ 4Ý !÷÷ ñ ÷ 5ß ;Õ ;õ÷ 5ß DÑ DÝ $áÝ+Ý7àˆ)€ñ* Øñ ˜B e§m¡m¸WÔEá˜R¨°TÔ:ÙØØ—-‘-ØØØ×2Ñ2Ø ô
ñ ˜ Q°Ô6ñó€
ñ( ,¨JÓ7Ð Ù4ØÐ3óÐ ð
 ôEˆJó Eó ñEr;   