
    Og                       d dl 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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jP                  e       edejP                  e       edd d       edejP                  edejR                  e      d      Z* ee*      Z+ ee e+      Z,e" G d de             Z-y)    )annotations)TYPE_CHECKING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LineAcDbLine
   )xtypedefault   '   T)r#   optional   )r"   r#   r&   r   fixerstartend	thickness	extrusionc                  j     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Z xZS )r   z:The LINE entity represents a 3D line from `start` to `end`LINEc                ^    t         t        |   |      }|r|j                  |t               |S )z!Loading interface. (internal API))superr   load_dxf_attribssimple_dxfattribs_loadermerged_line_group_codes)self	processordxf	__class__s      X/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/entities/line.pyr2   zLine.load_dxf_attribs<   s/    
 J6yA..s4KL
    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)
r1   export_entity
dxfversionr   
write_tag2r   	acdb_linenamer7   export_dxf_attribs)r5   	tagwriterr8   s     r9   r<   zLine.export_entityF   sL    i(%'  )..A##	
r:   c                    t               S N)r   )r5   s    r9   ocszLine.ocsU   s     ur:   c                    |j                  | j                  j                  | j                  j                  g      \  }}|| j                  _        || j                  _        t	        | |       | j                  |       | S )z?Transform the LINE entity by transformation matrix `m` inplace.)transform_verticesr7   r*   r+   r   post_transform)r5   mr*   r+   s       r9   	transformzLine.transformZ   s^    ))488>>488<<*HI
s5dA>Ar:   c                $   t        |||      }|| j                  j                  z   | j                  _        || j                  j                  z   | j                  _        | j                  r&| j                  t        j                  |||             | S )zeOptimized LINE translation about `dx` in x-axis, `dy` in y-axis and
        `dz` in z-axis.

        )r   r7   r*   r+   is_post_transform_requiredrH   r   	translate)r5   dxdydzvecs        r9   rM   zLine.translatec   sm    
 2r2txx~~-TXX\\)** 2 22r2 >?r:   rD   )r6   zOptional[SubclassProcessor]returnr   )rB   r   rR   None)rR   r   )rI   r   rR   r   )rN   floatrO   rT   rP   rT   rR   r   )__name__
__module____qualname____doc__DXFTYPEr   r   r   r?   
DXFATTRIBSr2   r<   rE   rJ   rM   __classcell__)r8   s   @r9   r   r   5   sG    DGz;	BJ 8<4	

r:   N).
__future__r   typingr   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_line_group_codesr4   r    r:   r9   <module>rm      s    # * !   5 ; ; 5 D D $+7(5=='Br@RT:--22 
		" +95 32 
 8: 8 8r:   