
    'j                       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j)        e           e	dd d           e	dej)        edej*        e           e	dd d          d          Z+ ee+          Z, ee!e,          Z-e# G d de                      Z.dS )    )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   fixer2   location	thickness	extrusionanglec                  v     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POINTN	processorOptional[SubclassProcessor]returnr   c                    t          t          |                               |          }|r|                    |t                     |S )z!Loading interface. (internal API))superr   load_dxf_attribssimple_dxfattribs_loadermerged_point_group_codes)selfr1   dxf	__class__s      N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/point.pyr6   zPoint.load_dxf_attribsR   sG    
 J%%66yAA 	N..s4LMMM
    	tagwriterr   Nonec                    t                                          |           |j        t          k    r%|                    t
          t          j                   | j        	                    |g d           dS )z7Export entity specific data as DXF tags. (internal API)r*   N)
r5   export_entity
dxfversionr   
write_tag2r   
acdb_pointnamer:   export_dxf_attribs)r9   r>   r;   s     r<   rA   zPoint.export_entity\   sq    i(((%''  */BBB##FFF	
 	
 	
 	
 	
r=   mr   c                    |                     | j        j                  | j        _        t          | |           |                     |           | S )z@Transform the POINT entity by transformation matrix `m` inplace.)	transformr:   r+   r   post_transform)r9   rG   s     r<   rI   zPoint.transforme   sF    KK(9::5dA>>>Ar=   dxfloatdydzc                    t          |||          | j        j        z   | j        _        | j        r)|                     t          j        |||                     | S )zeOptimized POINT translation about `dx` in x-axis, `dy` in y-axis and
        `dz` in z-axis.
        )r   r:   r+   is_post_transform_requiredrJ   r   	translate)r9   rK   rM   rN   s       r<   rQ   zPoint.translatem   sX     !R,,tx/@@* 	@ 22r2 > >???r=   r   r   pdsizepdmodeintIterator[DXFGraphic]c              #  |   K   ddl m} |                    | ||          D ]}|                    |            |V  dS )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.renderrW   virtual_entitiesset_source_of_copy)r9   rR   rS   rW   es        r<   rY   zPoint.virtual_entitiesw   sd      $ 	'&&&&&''ff== 	 	A  &&&GGGG	 	r=   r   c                    t                      S N)r   )r9   s    r<   ocsz	Point.ocs   s     uur=   r]   )r1   r2   r3   r   )r>   r   r3   r?   )rG   r   r3   r    )rK   rL   rM   rL   rN   rL   r3   r    )r   r   )rR   rL   rS   rT   r3   rU   )r3   r   )__name__
__module____qualname____doc__DXFTYPEr	   r   r   rD   
DXFATTRIBSr6   rA   rI   rQ   rY   r^   __classcell__)r;   s   @r<   r    r    K   s        Gz;
CCJ 8<      
 
 
 
 
 
       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_vectorrD   acdb_point_group_codesr8   r     r=   r<   <module>rw      s   # " " " " " 4 4 4 4 4 4 4 4 4 4 ! ! ! ! ! !                  5 4 4 4 4 4 4 4 ; ; ; ; ; ; ; ; ; ; ; ; ; ;      5 4 4 4 4 4 4 4 D D D D D D D D D D $ $ $ $ $ $ 8++++++777777)* [ GBemWEEEWRT:::W-2 
 
 
 Q666  
( ,+J77 443  
 E E E E EJ E E E E Er=   