
    'jr                    
   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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 d d	lmZ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( ddl)m*Z* erd dl+m,Z, d dl-m.Z. d dlm/Z/ g dZ0 ej1        d          Z2 ed edd           edej3                   edej3                  d          Z4 ee4          Z5e& G d de#                      Z6dxd#Z7dyd&Z8e& G d' d(e6                      Z9 ed)d* ed+d,          i          Z: ee:          Z;e& G d- d.e6                      Z<dzd4Z=d{d9Z> ed: ed;           ed<          d=          Z? ee?          Z@e& G d> d?e6                      ZA ed@i dA edB          dC edDejB        E          dF edGdH          dI edJdH          dK edLdH          dM edNdH          dO edPdH          dQ edRdH          dS edd           dT edd           dU ed;d           dV edWd           dX edYd           dZ ed[d           d\ ed]d           d^ ed_d           d` edaejB        E                    ZC eeC          ZDe& G db dceA                      ZE edd ed           ededH           edGdH           edJdH           edLdH           edd            edfd           edWd           edYd           ed[d            ed]d            ed_d            edgd           dh          ZF eeF          ZGe& G di djeA                      ZH edk edBdH           edDejB        E           edaejB        E           edl           ede           edJ           edLd            edNd            edmd            edd            edfd           dn          ZI eeI          ZJe& G do dpeA                      ZK edqi dr edB          ds edt          dF edG          dI edJd           dK edLd           dM edNd           dO edPd          dQ edRd           dS edd           du edd           dU ed;d           dV edWd           dX edYd           dZ ed[d           d\ ed]d           d^ ed_d           d` edaejB        E                    ZL eeL          ZMe& G dv dweA                      ZNdS )|    )annotations)TYPE_CHECKINGIterableUnionOptionalSequenceAny)SelfoverrideN)DXFAttrDXFAttributesDefSubclassXTypegroup_code_mapping)const)TagsDXFTag)Matrix44)cryptguid)msgtypes   )
base_classSubclassProcessor)
DXFGraphicacdb_entity)register_entity)default_copy)TransformByBlockReference)DXFNamespace)AbstractTagWriter)xref)BodySolid3dRegionSurfaceExtrudedSurfaceLoftedSurfaceRevolvedSurfaceSweptSurfaceezdxfAcDbModelerGeometryF   )defaulti"  )
dxfversion   )versionflagsuidc                      e Zd ZdZdZ eeee          Z	e
j        Zd2 fdZed3d            Zed4d	            Zej        d5d            Zed6d            Zej        d7d            Zed             Zeefd8d            Zed9 fd            Zd2dZed:d;d            Zed<d             Ze	 d:d= fd$            Zd>d'Zed? fd(            Zd?d)Zd@d+Zed2 fd,            Z edAd/            Z!dBd1Z" xZ#S )Cr#   z:DXF BODY entity - container entity for embedded ACIS data.BODYreturnNonec                    t                                                       t                      | _        d| _        d| _        t                      | _        d S )N    F)super__init__tuple_sat_sab_updater   _temporary_transformationself	__class__s    M/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/entities/acis.pyr;   zBody.__init__X   sH     $)77		)B)D)D&&&r9   Union[bytes, Sequence[str]]c                ,    | j         r| j        S | j        S )zqReturns :term:`SAT` data  for DXF R2000 up to R2010 and :term:`SAB`
        data for DXF R2013 and later
        )has_binary_datasabsatrB   s    rD   	acis_datazBody.acis_dataa   s    
  	8Oxr9   Sequence[str]c                    | j         S )z0Get/Set :term:`SAT` data as sequence of strings.)r=   rJ   s    rD   rI   zBody.satj   s     yr9   datac                .    t          |          | _        dS )z,Set :term:`SAT` data as sequence of strings.N)r<   r=   rB   rN   s     rD   rI   zBody.sato   s     $KK			r9   bytesc                    | j         M| j        rFt          | j                  dk    r.| j         j                            | j        j                  | _        | j        S )z"Get/Set :term:`SAB` data as bytes.Nr   )docrG   lenr>   acdsdataget_acis_datadxfhandlerJ   s    rD   rH   zBody.sabt   sM     H T%9 c$)nnPQ>Q>Q)77HHDIyr9   c                "    d| _         || _        dS )zSet :term:`SAB` data as bytes.TN)r?   r>   rP   s     rD   rH   zBody.sab}   s     			r9   c                H    | j         r| j         j        t          j        k    S dS )zReturns ``True`` if the entity contains :term:`SAB` data and
        ``False`` if the entity contains :term:`SAT` data.
        F)rS   r/   r   DXF2013rJ   s    rD   rG   zBody.has_binary_data   s%    
 8 	8&%-775r9   entityr
   c                    t          |t                    sJ | j        |_        | j        |_        t	                      |j        _        | j        |_        d S N)
isinstancer#   rI   rH   r   rW   r3   r@   )rB   r\   copy_strategys      rD   	copy_datazBody.copy_data   sH    &$'''''X
X

+/+I(((r9   clonemappingxref.ResourceMapperc                t    t                                          ||           |                                 dS )z3Translate resources from self to the copied entity.N)r:   map_resourcesconvert_acis_data)rB   rb   rc   rC   s      rD   rf   zBody.map_resources   s7     	eW---!!!!!r9   c                    | j         d S d}| j         j        }|t          j        k     r| j        r	d| _        d}n| j        rt                      | _        d}|rt                              |           d S d S )N r9   zPDXF version mismatch, can't convert ACIS data from SAB to SAT, SAB data removed.zPDXF version mismatch, can't convert ACIS data from SAT to SAB, SAT data removed.)	rS   r/   r   r[   r>   r=   r<   loggerinfo)rB   msgr/   s      rD   rg   zBody.convert_acis_data   s    8FX(
%%y i	hy i!GG	h 	KK	 	r9   Nmessage_typeintr	   c                ^    |t           j        k    r| j                            |            d S d S r^   )r   COMMIT_PENDING_CHANGESr@   apply_transformation)rB   rm   rN   s      rD   notifyzBody.notify   s5    8:::*??EEEEE ;:r9   	tagwriterr!   boolc                   d}|j         t          j        k     r-t          | j                  dk    }|st          |            d}n,t          | j                  dk    }|st          |            d}|st                              |           |rC| j	        
                                *t                              t          |            d           |S )Nri   r   z+ doesn't have SAT data, skipping DXF exportz+ doesn't have SAB data, skipping DXF exportz) has unapplied temporary transformations.)r/   r   r[   rT   rI   strrH   rj   rk   r@   
get_matrixwarning)rB   rs   rl   valids       rD   preprocess_exportzBody.preprocess_export   s    %-//MMA%E PTOOOMMA%E PTOOO 	KK 	TT3>>@@LNNc$iiRRRSSSr9   	processorOptional[SubclassProcessor]r    c                    t                                          |          }|rE|                    |t          dd           | j        s |                     |j        d                    |S )!Loading interface. (internal API)r0   Flog)r:   load_dxf_attribsfast_load_dxfattribs!acdb_modeler_geometry_group_codesrG   load_sat_data
subclassesrB   r{   rW   rC   s      rD   r   zBody.load_dxf_attribs   sy    
 gg&&y11 	<**6u +    ' <""9#7#:;;;
r9   tagsr   c                    t          d |D                       }t          t          j        |                    | _        dS )r~   c              3  ,   K   | ]}|j         d v |V  dS ))r      Ncode.0tags     rD   	<genexpr>z%Body.load_sat_data.<locals>.<genexpr>   s.      #N#NC38v;M;MC;M;M;M;M#N#Nr9   N)tags2textlinesr<   r   decoder=   )rB   r   
text_liness      rD   r   zBody.load_sat_data   s;    ##N#N4#N#N#NNN
%,z2233			r9   c                T   t                                          |           |                    t          j        t
          j                   |j        t          j        k    r| j	        r6| j
        r/| j	        j                            | j        j        | j                   | j                            d          r |                    d| j        j                   | j                            |ddg           dS | j                            |d           |                     |           dS )z7Export entity specific data as DXF tags. (internal API)r1   r-   r2   r3   N)r:   export_entity
write_tag2r   SUBCLASS_MARKERacdb_modeler_geometrynamer/   r[   rS   r?   rU   set_acis_datarW   rX   rH   hasattrr1   export_dxf_attribsexport_sat_datarB   rs   rC   s     rD   r   zBody.export_entity   s    	i(((U24I4NOOO5=00x KDL K !//JJJx	** ;$$R)9:::H''	GU3CDDDDD H''	9===  +++++r9   c           	         d }t          t          t          j         || j                                                }|                    |           dS )z,Export ACIS data as DXF tags. (internal API)c              3  h   K   | D ],}|                                                     dd          V  -d S )N
ri   )rstripreplace)lineslines     rD   cleanupz%Body.export_sat_data.<locals>.cleanup   sF       6 6kkmm++D"5555556 6r9   N)r   textlines2tagsr   encoderI   
write_tags)rB   rs   r   r   s       rD   r   zBody.export_sat_data   sX    	6 	6 	6 N5<0A0A#B#BCCDDT"""""r9   rv   c                H    | j         rdS d                    | j                  S )z]Returns ACIS :term:`SAT` data as a single string if the entity has
        SAT data.
        ri   r   )rG   joinrI   rJ   s    rD   tostringzBody.tostring   s(      	'299TX&&&r9   c                    | j         r)| j        j                            | j        j                   t                                                       d S r^   )rG   rS   rU   del_acis_datarW   rX   r:   destroyrA   s    rD   r   zBody.destroy   sE     	=H++DHO<<<r9   mr   c                :    | j                             |           | S r^   )r@   
add_matrix)rB   r   s     rD   	transformzBody.transform   s    &11!444r9   r   c                    | j         S r^   )r@   rJ   s    rD   temporary_transformationzBody.temporary_transformation  s    --r9   )r6   r7   )r6   rE   )r6   rL   )rN   rL   r6   r7   )r6   rQ   )rN   rQ   r6   r7   r\   r
   r6   r7   )rb   r
   rc   rd   r6   r7   r^   )rm   rn   rN   r	   r6   r7   )rs   r!   r6   rt   r{   r|   r6   r    r   r   rs   r!   r6   r7   )r6   rv   )r   r   r6   r
   )r6   r   )$__name__
__module____qualname____doc__DXFTYPEr   r   r   r   
DXFATTRIBSr   DXF2000MIN_DXF_VERSION_FOR_EXPORTr;   propertyrK   rI   setterrH   rG   r   r   ra   rf   rg   rr   rz   r   r   r   r   r   r   r   r   __classcell__rC   s   @rD   r#   r#   P   s       DDGz;8MNNJ!&E E E E E E    X    X 	Z      Z     X 	Z   Z
   X 4@ J J J J XJ " " " " " X"
     F F F F XF    X  7;      X4 4 4 4
 , , , , , X,$# # # #' ' ' '      X
    X. . . . . . . .r9   r#   r   r   r6   Iterable[str]c              #  b   K   d}| D ]\  }}|dk    r	||V  |}|dk    r||z  } ||V  dS dS )zwYields text lines from code 1 and 3 tags, code 1 starts a line following
    code 3 tags are appended to the line.
    Nr   r    )r   r   r   values       rD   r   r   	  sm       D  e199


DDQYYEMD




 r9   r   Iterable[DXFTag]c              #     K   | D ]l}|dd         }|dd         }t          d|          V  t          |          r5|dd         }|dd         }t          d|          V  t          |          5mdS )z^Yields text lines as DXFTags, splitting long lines (>255) int code 1
    and code 3 tags.
    N   r   r   )r   rT   )r   r   texttails       rD   r   r     s        " "DSDzCDDzQoo$ii 	":D:DD//!!! $ii 	"	" "r9   c                      e Zd ZdZdZdS )r%   z<DXF REGION entity - container entity for embedded ACIS data.REGIONN)r   r   r   r   r   r   r9   rD   r%   r%   '  s        FFGGGr9   r%   AcDb3dSolidhistory_handlei^  0c                  t     e Zd ZdZdZ eeeee	          Z
e	 dd fd            Zed fd            Z xZS )r$   z=DXF 3DSOLID entity - container entity for embedded ACIS data.3DSOLIDNr{   r|   r6   r    c                    t                                          |          }|r|                    |t          d           |S Nr   )r:   r   r   acdb_3dsolid_group_codesr   s      rD   r   zSolid3d.load_dxf_attribs@  C     gg&&y11 	M**30H!LLL
r9   rs   r!   r7   c                   t                                          |           |j        t          j        k    rG|                    t          j        t          j                   | j	        
                    |d           dS dS )(Export entity specific data as DXF tags.r   N)r:   r   r/   r   DXF2004r   r   acdb_3dsolidr   rW   r   r   s     rD   r   zSolid3d.export_entityI  sr     	i((( %-//  !68IJJJH''	3CDDDDD 0/r9   r^   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @rD   r$   r$   7  s        GGGK!6 J 7;      X E E E E E XE E E E Er9   r$   subclassr   r   rn   r   c                    d |                      |          D             }t          |          dk    rt          j        d          t	          |          S )Nc                    g | ]	}|j         
S r   )r   r   s     rD   
<listcomp>zload_matrix.<locals>.<listcomp>V  s    ;;;Cci;;;r9      zInvalid transformation matrix.)find_allrT   r   DXFStructureErrorr   )r   r   valuess      rD   load_matrixr   U  sT    ;;8#4#4T#:#:;;;F
6{{b%&FGGGFr9   rs   r!   matrixr7   c                V    t          |          D ]}|                     ||           d S r^   )listr   )rs   r   r   r   s       rD   export_matrixr   \  s:    f * *T5))))* *r9   AcDbSurfaceG   H   )u_countv_countc                  t     e Zd ZdZdZ eeeee	          Z
e	 dd fd            Zed fd            Z xZS )r&   z=DXF SURFACE entity - container entity for embedded ACIS data.SURFACENr{   r|   r6   r    c                    t                                          |          }|r|                    |t          d           |S r   )r:   r   r   acdb_surface_group_codesr   s      rD   r   zSurface.load_dxf_attribst  r   r9   rs   r!   r7   c                    t                                          |           |                    t          j        t
          j                   | j                            |ddg           dS )r   r   r   N)	r:   r   r   r   r   acdb_surfacer   rW   r   r   s     rD   r   zSurface.export_entity}  s^     	i((( 	U2L4EFFF##I	9/EFFFFFr9   r^   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @rD   r&   r&   k  s        GGGK!6 J 7;      X G G G G G XG G G G Gr9   r&   AcDbExtrudedSurfaceclass_idZ   sweep_vector
   )xtypedraft_angle*   g        draft_start_distance+   draft_end_distance,   twist_angle-   scale_factor0   align_angle1   solidsweep_alignment_flagsunknown1align_starti$  banki%  base_point_seti&  sweep_entity_transform_computedi'  path_entity_transform_computedi(  &reference_vector_for_controlling_twist   c                       e Zd ZdZdZ eeeee	e
          Z fdZeefd fd            Ze	 dd fd            ZddZed fd            Z xZS )r'   zEDXF EXTRUDEDSURFACE entity - container entity for embedded ACIS data.EXTRUDEDSURFACEc                    t                                                       t                      | _        t                      | _        t                      | _        d S r^   )r:   r;   r   %transformation_matrix_extruded_entity"sweep_entity_transformation_matrix!path_entity_transformation_matrixrA   s    rD   r;   zExtrudedSurface.__init__  sC    5=ZZ22:**/19...r9   r\   r
   r6   r7   c                .   t          |t                    sJ t                                          ||           | j                                        |_        | j                                        |_        | j                                        |_        d S r^   )r_   r'   r:   ra   r  copyr  r  rB   r\   r`   rC   s      rD   ra   zExtrudedSurface.copy_data  s    &/22222&-0006;;== 	4 388:: 	1 27799 	000r9   Nr{   r|   r    c                    t                                          |          }|r>|                    |t          dd           |                     |j        d                    |S N   Fr   )r:   r   r   !acdb_extruded_surface_group_codesload_matricesr   r   s      rD   r   z ExtrudedSurface.load_dxf_attribs  n     gg&&y11 	8**6u +    y3A6777
r9   r   r   c                    t          |d          | _        t          |d          | _        t          |d          | _        d S )N(   r   .   /   )r   r  r  r  rB   r   s     rD   r  zExtrudedSurface.load_matrices  sG    5@B5O5O5O22=d2L2L2L/1<T1K1K1K...r9   rs   r!   c                   t                                          |           |                    t          j        t
          j                   | j                            |ddg           t          |d| j
                   | j                            |g d           t          |d| j                   t          |d| j                   | j                            |g d           d	S )
r   r   r   r"  r   r   r   r   r   r  r  r  r#  r$  )	r  r	  r
  r  r  r  r  r  r  N)r:   r   r   r   r   acdb_extruded_surfacer   rW   r   r   r  r  r  r   s     rD   r   zExtrudedSurface.export_entity  s    	i((( 	U24I4NOOO##I
N/KLLL=	
 	
 	
 	

 	##  
	
 
	
 
	
 	Bt'N	
 	
 	
 	
 	ib1WXXXX##
 
 
	
 	
 	
 	
 	
r9   r   r^   r   r   r   )r   r   r   r   r   r   r   r   r   r   r)  r   r;   r   r   ra   r   r  r   r   r   s   @rD   r'   r'     s	       OOG J< < < < < 4@ 
 
 
 
 
 
 X
 7;	 	 	 	 	 	 X	L L L L
 )
 )
 )
 )
 )
 X)
 )
 )
 )
 )
r9   r'   AcDbLoftedSurface)   i#  i)  )plane_normal_lofting_typestart_draft_angleend_draft_anglestart_draft_magnitudeend_draft_magnitudearc_length_parameterizationno_twistalign_directionsimple_surfacesclosed_surfacesr  ruled_surfacevirtual_guidec                       e Zd ZdZdZ eeeee	e
          Z fdZeefd fd            Ze	 dd fd            ZddZed fd            Z xZS )r(   zCDXF LOFTEDSURFACE entity - container entity for embedded ACIS data.LOFTEDSURFACEc                n    t                                                       t                      | _        d S r^   )r:   r;   r   #transformation_matrix_lofted_entityrA   s    rD   r;   zLoftedSurface.__init__,  s+    3;::000r9   r\   r
   r6   r7   c                    t          |t                    sJ t                                          ||           | j                                        |_        d S r^   )r_   r(   r:   ra   r;  r  r  s      rD   ra   zLoftedSurface.copy_data0  sS    &-00000&-000499;; 	222r9   Nr{   r|   r    c                    t                                          |          }|r>|                    |t          dd           |                     |j        d                    |S r  )r:   r   r   acdb_lofted_surface_group_codesr  r   r   s      rD   r   zLoftedSurface.load_dxf_attribs8  sn     gg&&y11 	8**4aU +    y3A6777
r9   r   r   c                2    t          |d          | _        d S )Nr"  r   )r   r;  r%  s     rD   r  zLoftedSurface.load_matricesD  s    3>t"3M3M3M000r9   rs   r!   c                :   t                                          |           |                    t          j        t
          j                   t          |d| j                   | j	        
                    |t
          j                                                   dS )r   r"  r'  N)r:   r   r   r   r   acdb_lofted_surfacer   r   r;  rW   r   attribskeysr   s     rD   r   zLoftedSurface.export_entityG  s     	i((( 	U24G4LMMMBt'O	
 	
 	
 	
 	##I/B/J/O/O/Q/QRRRRRr9   r   r^   r   r   r   )r   r   r   r   r   r   r   r   r   r   rA  r   r;   r   r   ra   r   r  r   r   r   s   @rD   r(   r(     s       MMG J> > > > > 4@ 
 
 
 
 
 
 X
 7;	 	 	 	 	 	 X	N N N N 
S 
S 
S 
S 
S X
S 
S 
S 
S 
Sr9   r(   AcDbRevolvedSurfacer"  r#  )r   
axis_pointaxis_vectorrevolve_anglestart_angler   start_draft_distanceend_draft_distancer  r  close_to_axisc                       e Zd ZdZdZ eeeee	e
          Z fdZeefd fd            Ze	 dd fd            ZddZed fd            Z xZS )r)   zEDXF REVOLVEDSURFACE entity - container entity for embedded ACIS data.REVOLVEDSURFACEc                n    t                                                       t                      | _        d S r^   )r:   r;   r   %transformation_matrix_revolved_entityrA   s    rD   r;   zRevolvedSurface.__init__w  s+    5=ZZ222r9   r\   r
   r6   r7   c                    t          |t                    sJ t                                          ||           | j                                        |_        d S r^   )r_   r)   r:   ra   rO  r  r  s      rD   ra   zRevolvedSurface.copy_data{  sS    &/22222&-0006;;== 	444r9   Nr{   r|   r    c                    t                                          |          }|r>|                    |t          dd           |                     |j        d                    |S r  )r:   r   r   !acdb_revolved_surface_group_codesr  r   r   s      rD   r   z RevolvedSurface.load_dxf_attribs  r   r9   r   r   c                2    t          |d          | _        d S )Nr   r   )r   rO  r%  s     rD   r  zRevolvedSurface.load_matrices  s    5@B5O5O5O222r9   rs   r!   c                @   t                                          |           |                    t          j        t
          j                   | j                            |g d           t          |d| j
                   | j                            |g d           dS )r   )r   rE  rF  rG  rH  r   r'  )r   rI  rJ  r  r  rK  N)r:   r   r   r   r   acdb_revolved_surfacer   rW   r   r   rO  r   s     rD   r   zRevolvedSurface.export_entity  s     	i((( 	U24I4NOOO##  		
 		
 		
 	=	
 	
 	
 	

 	##  
	
 
	
 
	
 
	
 
	
r9   r   r^   r   r   r   )r   r   r   r   r   r   r   r   r   r   rU  r   r;   r   r   ra   r   r  r   r   r   s   @rD   r)   r)   j  s       OOG J@ @ @ @ @ 4@ 
 
 
 
 
 
 X
 7;	 	 	 	 	 	 X	P P P P  
  
  
  
  
 X 
  
  
  
  
r9   r)   AcDbSweptSurfaceswept_entity_idpath_entity_id[   sweep_alignmentc                       e Zd ZdZdZ eeeee	e
          Z fdZeefd fd            Ze	 dd fd            ZddZed fd            Z xZS )r*   zBDXF SWEPTSURFACE entity - container entity for embedded ACIS data.SWEPTSURFACEc                    t                                                       t                      | _        t                      | _        t                      | _        t                      | _        d S r^   )r:   r;   r   "transformation_matrix_sweep_entity!transformation_matrix_path_entityr  r  rA   s    rD   r;   zSweptSurface.__init__  sO    2:**/19.2:**/19...r9   r\   r
   r6   r7   c                j   t          |t                    sJ t                                          ||           | j                                        |_        | j                                        |_        | j                                        |_        | j                                        |_        d S r^   )	r_   r*   r:   ra   r^  r  r_  r  r  r  s      rD   ra   zSweptSurface.copy_data  s    &,/////&-000388:: 	1 27799 	0 388:: 	1 27799 	000r9   Nr{   r|   r    c                    t                                          |          }|r>|                    |t          dd           |                     |j        d                    |S r  )r:   r   r   acdb_swept_surface_group_codesr  r   r   s      rD   r   zSweptSurface.load_dxf_attribs  sn     gg&&y11 	8**3QE +    y3A6777
r9   r   r   c                    t          |d          | _        t          |d          | _        t          |d          | _        t          |d          | _        d S )Nr"  r   r+  r#  r$  )r   r^  r_  r  r  r%  s     rD   r  zSweptSurface.load_matrices  s\    2=d2L2L2L/1<T1K1K1K.2=d2L2L2L/1<T1K1K1K...r9   rs   r!   c                   t                                          |           |                    t          j        t
          j                   | j                            |ddg           t          |d| j
                   t          |d| j                   | j                            |g d           t          |d| j                   t          |d| j                   | j                            |g d	           d
S )r   rW  rX  r"  r'  r+  r(  r#  r$  )	r  rZ  r
  r  r  r  r  r  r  N)r:   r   r   r   r   acdb_swept_surfacer   rW   r   r   r^  r_  r  r  r   s     rD   r   zSweptSurface.export_entity  s@    	i((( 	U24F4KLLL##! 	
 	
 	
 	Bt'N	
 	
 	
 	
 	ib1WXXXX##  
	
 
	
 
	
 	Bt'N	
 	
 	
 	
 	ib1WXXXX##
 
 
	
 	
 	
 	
 	
r9   r   r^   r   r   r   )r   r   r   r   r   r   r   r   r   r   re  r   r;   r   r   ra   r   r  r   r   r   s   @rD   r*   r*     s	       LLG J< < < < < 4@ 
 
 
 
 
 
 X
  7;	 	 	 	 	 	 X	L L L L /
 /
 /
 /
 /
 X/
 /
 /
 /
 /
r9   r*   )r   r   r6   r   )r   r   r6   r   )r   r   r   rn   r6   r   )rs   r!   r   rn   r   r   r6   r7   )O
__future__r   typingr   r   r   r   r   r	   typing_extensionsr
   r   loggingezdxf.lldxf.attributesr   r   r   r   r   ezdxf.lldxfr   ezdxf.lldxf.tagsr   r   
ezdxf.mathr   ezdxf.toolsr   r   r+   r   	dxfentityr   r   dxfgfxr   r   factoryr   r  r   temporary_transformr   ezdxf.entitiesr    ezdxf.lldxf.tagwriterr!   r"   __all__	getLoggerrj   r[   r   r   r#   r   r   r%   r   r   r$   r   r   r   r   r&   point3dr)  r  r'   rA  r>  r(   rU  rR  r)   re  rb  r*   r   r9   rD   <module>rx     s   # " " " " " J J J J J J J J J J J J J J J J , , , , , , , ,                     ) ) ) ) ) ) ) )       # # # # # # # #       4 4 4 4 4 4 4 4 + + + + + + + + $ $ $ $ $ $       : : : : : : ++++++777777	 	 	 
	7	#	##72q)))777wqU]333    %7$67L$M$M !6 u. u. u. u. u.: u. u. u.p    " " " "     T    {''#s333  .-l;;  E E E E Ed E E E:   * * * *
 {72;;72;;   .-l;;  G G G G Gd G G G8 $GGBKK%-888
 	wwr3/// 	C 8 8 8 	ggb#666 	wwr3/// 	C000 	wwr3/// 	a(((" 	 Q!7!7!7#$ 	GGB***%( 	wwsA...)* 	Q'''+, 	''#q111-. 	*773+B+B+B/0 	)''#q*A*A*A12 	1''"EM2R2R2R3  < %7$67L$M$M ! [
 [
 [
 [
 [
g [
 [
 [
| "k &-WR[[$WR555"72s333!(S!9!9!9&wr3777'.wsA'>'>'>GC+++"73222"73222"73222a((( a000 a000   ( #5"45H"I"I  2S 2S 2S 2S 2SG 2S 2S 2Sj $GB,,,gb666wr777 wr{{ wr{{ 'A 6 6 6%gb!444wr1---a((( a000   $ %7$67L$M$M ! H
 H
 H
 H
 H
g H
 H
 H
V ![!772;;! 	''"++	! 	wwr{{! 	A 6 6 6! 	ggb!444! 	wwr1---! 	A...!  	wwr1---!!, 	a(((-!0 	772q1111!2 	GGB***3!6 	wwsA...7!8 	Q'''9!: 	''#q111;!< 	*773+B+B+B=!> 	)''#q*A*A*A?!@ 	1''"EM2R2R2RA!$ $ J "4!34F!G!G  f
 f
 f
 f
 f
7 f
 f
 f
 f
 f
r9   