Ë
    £èh;v  ã                  óÄ  — 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jb                  d«      Z2 ed edd¬«       edejf                  ¬«       edejf                  ¬«      dœ«      Z4 ee4«      Z5e& G d„ de#«      «       Z6did„Z7djd „Z8e& G d!„ d"e6«      «       Z9 ed#d$ ed%d&¬«      i«      Z: ee:«      Z;e& G d'„ d(e6«      «       Z<dkd)„Z=dld*„Z> ed+ ed,«       ed-«      d.œ«      Z? ee?«      Z@e& G d/„ d0e6«      «       ZA ed1i d2 ed3«      “d4 ed5ej„                  ¬6«      “d7 ed8d9¬«      “d: ed;d9¬«      “d< ed=d9¬«      “d> ed?d9¬«      “d@ edAd9¬«      “dB edCd9¬«      “dD edd ¬«      “dE edd ¬«      “dF ed,d ¬«      “dG edHd ¬«      “dI edJd ¬«      “dK edLd ¬«      “dM edNd ¬«      “dO edPd ¬«      “dQ edRej„                  ¬6«      “«      ZC eeC«      ZDe& G dS„ dTeA«      «       ZE edU ed«       edVd9¬«       ed8d9¬«       ed;d9¬«       ed=d9¬«       edd ¬«       edWd¬«       edHd¬«       edJd¬«       edLd ¬«       edNd ¬«       edPd ¬«       edXd ¬«      dYœ«      ZF eeF«      ZGe& G dZ„ d[eA«      «       ZH ed\ ed3d9¬«       ed5ej„                  ¬6«       edRej„                  ¬6«       ed]«       edV«       ed;«       ed=d ¬«       ed?d ¬«       ed^d ¬«       edd ¬«       edWd ¬«      d_œ«      ZI eeI«      ZJe& G d`„ daeA«      «       ZK edbi dc ed3«      “dd ede«      “d7 ed8«      “d: ed;d ¬«      “d< ed=d ¬«      “d> ed?d ¬«      “d@ edAd¬«      “dB edCd ¬«      “dD edd ¬«      “df edd ¬«      “dF ed,d ¬«      “dG edHd ¬«      “dI edJd ¬«      “dK edLd ¬«      “dM edNd ¬«      “dO edPd ¬«      “dQ edRej„                  ¬6«      “«      ZL eeL«      ZMe& G dg„ dheA«      «       ZNy)mé    )Ú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ÚAcDbModelerGeometryéF   )Údefaulti"  )Ú
dxfversioné   )ÚversionÚflagsÚuidc                  ó¾  ‡ — e Zd ZdZdZ eeee«      Z	e
j                  Zdˆ fd„Zedd„«       Zedd„«       Zej"                  dd„«       Zedd„«       Zej"                  dd„«       Zed	„ «       Zeefdd
„«       Zedˆ fd„«       Zdd„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dˆ fd„«       Z ed&d„«       Z!d'd„Z"ˆ xZ#S )(r#   z:DXF BODY entity - container entity for embedded ACIS data.ÚBODYc                óz   •— t         ‰| �  «        t        «       | _        d| _        d| _        t        «       | _        y )Nó    F)ÚsuperÚ__init__ÚtupleÚ_satÚ_sabÚ_updater   Ú_temporary_transformation©ÚselfÚ	__class__s    €ú3lib/python3.12/site-packages/ezdxf/entities/acis.pyr9   zBody.__init__X   s2   ø€ Ü‰ÑÔô $)£7ˆŒ	ØˆŒ	ØˆŒÜ)BÓ)DˆÕ&r7   c                óJ   — | 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©r@   s    rB   Ú	acis_datazBody.acis_dataa   s   € ð
 ×ÒØ—8‘8ˆOØ�x‰xˆr7   c                ó   — | j                   S )z0Get/Set :term:`SAT` data as sequence of strings.)r;   rG   s    rB   rF   zBody.satj   s   € ð �y‰yÐr7   c                ó$   — t        |«      | _        y)z,Set :term:`SAT` data as sequence of strings.N)r:   r;   ©r@   Údatas     rB   rF   zBody.sato   s   € ô ˜$“Kˆ�	r7   c                óö   — | j                   �b| j                  rVt        | j                  «      dk(  r>| j                   j                  j                  | j                  j                  «      | _        | j                  S )z"Get/Set :term:`SAB` data as bytes.r   )ÚdocrD   Úlenr<   ÚacdsdataÚget_acis_dataÚdxfÚhandlerG   s    rB   rE   zBody.sabt   sT   € ð �H‰HÐ  T×%9Ò%9¼cÀ$Ç)Á)»nÐPQÒ>QàŸ™×)Ñ)×7Ñ7¸¿¹¿¹ÓHˆDŒIØ�y‰yÐr7   c                ó    — d| _         || _        y)zSet :term:`SAB` data as bytes.TN)r=   r<   rK   s     rB   rE   zBody.sab}   s   € ð ˆŒØˆ�	r7   c                ój   — | j                   r'| j                   j                  t        j                  k\  S y)z€Returns ``True`` if the entity contains :term:`SAB` data and
        ``False`` if the entity contains :term:`SAT` data.
        F)rN   r/   r   ÚDXF2013rG   s    rB   rD   zBody.has_binary_dataƒ   s'   € ð
 �8Š8Ø—8‘8×&Ñ&¬%¯-©-Ñ7Ð7àr7   c                óÀ   — t        |t        «      sJ ‚| j                  |_        | j                  |_        t	        «       |j
                  _        | j                  |_        y ©N)Ú
isinstancer#   rF   rE   r   rR   r3   r>   )r@   ÚentityÚcopy_strategys      rB   Ú	copy_datazBody.copy_data�   sC   € ä˜&¤$Ô'Ð'Ð'Ø—X‘XˆŒ
Ø—X‘XˆŒ
Ü›ˆ�
‰
ŒØ+/×+IÑ+IˆÕ(r7   c                óF   •— t         ‰| �  ||«       |j                  «        y)z3Translate resources from self to the copied entity.N)r8   Úmap_resourcesÚconvert_acis_data)r@   ÚcloneÚmappingrA   s      €rB   r^   zBody.map_resources•   s    ø€ ô 	‰Ñ˜e WÔ-Ø×ÑÕ!r7   c                ó
  — | j                   €y d}| j                   j                  }|t        j                  k  r| j                  r'd| _        d}n| j
                  rt        «       | _        d}|rt        j                  |«       y y )NÚ r7   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.)	rN   r/   r   rV   r<   r;   r:   ÚloggerÚinfo)r@   Úmsgr/   s      rB   r_   zBody.convert_acis_data›   sk   € Ø�8‰8ÐØØˆØ—X‘X×(Ñ(ˆ
ØœŸ™Ò%Ø�yŠyØ�”	Øh‘à�yŠyÜ!›G�”	Øh�ÙÜ�K‰K˜Õð r7   c                ób   — |t         j                  k(  r| j                  j                  | «       y y rX   )r   ÚCOMMIT_PENDING_CHANGESr>   Úapply_transformation)r@   Úmessage_typerL   s      rB   ÚnotifyzBody.notify«   s)   € àœ8×:Ñ:Ò:Ø×*Ñ*×?Ñ?ÀÕEð ;r7   c                óŽ  — d}|j                   t        j                  k  r)t        | j                  «      dkD  }|s7t        | «      › d�}n(t        | j                  «      dkD  }|st        | «      › d�}|st        j                  |«       |r;| j                  j                  «       �!t        j                  t        | «      › d�«       |S )Nrc   r   z+ doesn't have SAT data, skipping DXF exportz+ doesn't have SAB data, skipping DXF exportz) has unapplied temporary transformations.)r/   r   rV   rO   rF   ÚstrrE   rd   re   r>   Ú
get_matrixÚwarning)r@   Ú	tagwriterrf   Úvalids       rB   Úpreprocess_exportzBody.preprocess_export°   s¨   € àˆØ×Ñ¤%§-¡-Ò/Ü˜Ÿ™“M AÑ%ˆEÙÜ˜T›˜Ð#NÐO‘ä˜Ÿ™“M AÑ%ˆEÙÜ˜T›˜Ð#NÐO�ÙÜ�K‰K˜ÔÙ�T×3Ñ3×>Ñ>Ó@ÐLÜ�N‰Nœc $›i˜[Ð(QÐRÔSØˆr7   c                ó°   •— t         ‰| �  |«      }|rC|j                  |t        dd¬«       | j                  s| j                  |j                  d   «       |S )ú!Loading interface. (internal API)r0   F©Úlog)r8   Úload_dxf_attribsÚfast_load_dxfattribsÚ!acdb_modeler_geometry_group_codesrD   Úload_sat_dataÚ
subclasses©r@   Ú	processorrR   rA   s      €rB   rw   zBody.load_dxf_attribsÁ   s]   ø€ ô
 ‰gÑ& yÓ1ˆÙØ×*Ñ*ØÔ6¸¸uð +ô ð ×'Ò'Ø×"Ñ" 9×#7Ñ#7¸Ñ#:Ô;Øˆ
r7   c                ón   — t        d„ |D «       «      }t        t        j                  |«      «      | _        y)rt   c              3  ó>   K  — | ]  }|j                   d v sŒ|–— Œ y­w))r   é   N©Úcode)Ú.0Útags     rB   Ú	<genexpr>z%Body.load_sat_data.<locals>.<genexpr>Ñ   s   è ø€ Ð#N±4¨C¸3¿8¹8ÀvÒ;M¤C±4ùs   ‚–N)Útags2textlinesr:   r   Údecoder;   )r@   ÚtagsÚ
text_liness      rB   rz   zBody.load_sat_dataÏ   s'   € ä#Ñ#N±4Ó#NÓNˆ
Üœ%Ÿ,™, zÓ2Ó3ˆ�	r7   c                óŒ  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       |j                  t        j                  k\  r¼| j                  rP| j                  rD| j                  j                  j                  | j                  j                  | j                  «       | j                  j!                  d«      r&|j                  d| j                  j"                  «       | j                  j%                  |ddg«       y| j                  j%                  |d«       | j'                  |«       y)z7Export entity specific data as DXF tags. (internal API)r1   r-   r2   r3   N)r8   Úexport_entityÚ
write_tag2r   ÚSUBCLASS_MARKERÚacdb_modeler_geometryÚnamer/   rV   rN   r=   rP   Úset_acis_datarR   rS   rE   Úhasattrr1   Úexport_dxf_attribsÚexport_sat_data©r@   rp   rA   s     €rB   r‹   zBody.export_entityÔ   sß   ø€ ô 	‰Ñ˜iÔ(Ø×ÑœU×2Ñ2Ô4I×4NÑ4NÔOØ×Ñ¤5§=¡=Ò0à�xŠx˜DŸLšLð —‘×!Ñ!×/Ñ/°·±·±ÀÇÁÔJØ�x‰x×Ñ 	Ô*Ø×$Ñ$ R¨¯©×)9Ñ)9Ô:Ø�H‰H×'Ñ'¨	°G¸UÐ3CÕDð �H‰H×'Ñ'¨	°9Ô=Ø× Ñ  Õ+r7   c           	     óš   — d„ }t        t        t        j                   || j                  «      «      «      «      }|j                  |«       y)z,Export ACIS data as DXF tags. (internal API)c              3  ó^   K  — | D ]$  }|j                  «       j                  dd«      –— Œ& y ­w)NÚ
rc   )ÚrstripÚreplace)ÚlinesÚlines     rB   Úcleanupz%Body.export_sat_data.<locals>.cleanupê   s)   è ø€ Û�Ø—k‘k“m×+Ñ+¨D°"Ó5Ó5ñ ùs   ‚+-N)r   Útextlines2tagsr   ÚencoderF   Ú
write_tags)r@   rp   rœ   rˆ   s       rB   r“   zBody.export_sat_dataç   s8   € ò	6ô ”N¤5§<¡<±¸¿¹Ó0AÓ#BÓCÓDˆØ×Ñ˜TÕ"r7   c                óR   — | j                   rydj                  | j                  «      S )z]Returns ACIS :term:`SAT` data as a single string if the entity has
        SAT data.
        rc   r—   )rD   ÚjoinrF   rG   s    rB   ÚtostringzBody.tostringñ   s#   € ð ×ÒØà—9‘9˜TŸX™XÓ&Ð&r7   c                ó¬   •— | j                   r9| j                  j                  j                  | j                  j
                  «       t        ‰| �  «        y rX   )rD   rN   rP   Údel_acis_datarR   rS   r8   Údestroyr?   s    €rB   r¥   zBody.destroyú   s6   ø€ à×ÒØ�H‰H×Ñ×+Ñ+¨D¯H©H¯O©OÔ<Ü‰‰Õr7   c                ó<   — | j                   j                  |«       | S rX   )r>   Ú
add_matrix)r@   Úms     rB   Ú	transformzBody.transform   s   € à×&Ñ&×1Ñ1°!Ô4Øˆr7   c                ó   — | j                   S rX   )r>   rG   s    rB   Útemporary_transformationzBody.temporary_transformation  s   € Ø×-Ñ-Ð-r7   )ÚreturnÚNone)r¬   zUnion[bytes, Sequence[str]])r¬   úSequence[str])rL   r®   r¬   r­   )r¬   Úbytes)rL   r¯   r¬   r­   ©rZ   r
   r¬   r­   )r`   r
   ra   zxref.ResourceMapperr¬   r­   rX   )rj   ÚintrL   r	   r¬   r­   )rp   r!   r¬   Úbool©r}   zOptional[SubclassProcessor]r¬   r    ©rˆ   r   ©rp   r!   r¬   r­   )r¬   rm   )r¨   r   r¬   r
   )r¬   r   )$Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚDXFTYPEr   r   r   rŽ   Ú
DXFATTRIBSr   ÚDXF2000ÚMIN_DXF_VERSION_FOR_EXPORTr9   ÚpropertyrH   rF   ÚsetterrE   rD   r   r   r\   r^   r_   rk   rr   rw   rz   r‹   r“   r¢   r¥   r©   r«   Ú__classcell__©rA   s   @rB   r#   r#   P   s}  ø„ áDà€GÙ˜z¨;Ð8MÓN€JØ!&§¡ÐõEð òó ðð òó ðð 	‡Z�Zò ó ð ð òó ðð 	‡Z�Zòó ðð
 ñó ðð Ø4@ó Jó ðJð ô"ó ð"ó
ð  óFó ðFð òó ðð  à7;ðØ4ðà	ôó ðó4ð
 ô,ó ð,ó$#ó'ð ôó ðð
 òó ð÷.r7   r#   c              #  ód   K  — d}| D ]  \  }}|dk(  r	|�|–— |}Œ|dk(  sŒ||z  }Œ  |�|–— yy­w)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       rB   r†   r†   	  sT   è ø€ ð €DÛ‰ˆˆeØ�1Š9ØÐØ’
Ø‰DØ�Q‹YØ�E‰M‰Dð ð ÐØ‹
ð ùs   ‚0¡0c              #  óª   K  — | D ]J  }|dd }|dd }t        d|«      –— t        |«      sŒ'|dd }|dd }t        d|«      –— t        |«      rŒ$ŒL y­w)z^Yields text lines as DXFTags, splitting long lines (>255) int code 1
    and code 3 tags.
    Néÿ   r   r€   )r   rO   )rš   r›   ÚtextÚtails       rB   r�   r�     sf   è ø€ ó ˆØ�D�SˆzˆØ�C�DˆzˆÜ�Q˜‹oÒÜ�$�iØ˜˜�:ˆDØ˜˜�:ˆDÜ˜˜D“/Ò!ô �$Žiñ	 ùs   ‚)A¬#AÁAc                  ó   — e Zd ZdZdZy)r%   z<DXF REGION entity - container entity for embedded ACIS data.ÚREGIONN)r¶   r·   r¸   r¹   rº   rÃ   r7   rB   r%   r%   '  s
   „ áFà�Gr7   r%   ÚAcDb3dSolidÚhistory_handlei^  Ú0c                  óh   ‡ — 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.Ú3DSOLIDc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S ©Nr€   )r8   rw   rx   Úacdb_3dsolid_group_codesr|   s      €rB   rw   zSolid3d.load_dxf_attribs@  ó/   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*¨3Ô0HÈ!ÔLØˆ
r7   c                óô   •— t         ‰| �  |«       |j                  t        j                  kD  rK|j                  t        j                  t        j                  «       | j                  j                  |d«       yy)ú(Export entity specific data as DXF tags.rÌ   N)r8   r‹   r/   r   ÚDXF2004rŒ   r�   Úacdb_3dsolidr�   rR   r’   r”   s     €rB   r‹   zSolid3d.export_entityI  s\   ø€ ô 	‰Ñ˜iÔ(ð ×Ñ¤%§-¡-Ò/Ø× Ñ ¤×!6Ñ!6¼×8IÑ8IÔJØ�H‰H×'Ñ'¨	Ð3CÕDð 0r7   rX   r³   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   r×   r»   r   rw   r‹   rÀ   rÁ   s   @rB   r$   r$   7  s\   ø„ áGà€GÙØ�KÐ!6¸ó€Jð à7;ðØ4ðà	ôó ðð ôEó ôEr7   r$   c                ó¸   — | j                  |«      D �cg c]  }|j                  ‘Œ }}t        |«      dk7  rt        j                  d«      ‚t        |«      S c c}w )Né   zInvalid transformation matrix.)Úfind_allrÄ   rO   r   ÚDXFStructureErrorr   )Úsubclassr‚   r„   Úvaluess       rB   Úload_matrixrÞ   U  sU   € Ø#+×#4Ñ#4°TÔ#:Ó;Ñ#:˜Cˆc�i‹iÐ#:€FÐ;Ü
ˆ6ƒ{�bÒÜ×%Ñ%Ð&FÓGÐGÜ�FÓÐùò <s   ”Ac                óH   — t        |«      D ]  }| j                  ||«       Œ y rX   )ÚlistrŒ   )rp   r‚   ÚmatrixrÄ   s       rB   Úexport_matrixrâ   \  s    € Ü�f–ˆØ×Ñ˜T 5Õ)ñ r7   ÚAcDbSurfaceéG   éH   )Úu_countÚv_countc                  óh   ‡ — 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.ÚSURFACEc                óX   •— t         ‰| �  |«      }|r|j                  |t        d«       |S rÑ   )r8   rw   rx   Úacdb_surface_group_codesr|   s      €rB   rw   zSurface.load_dxf_attribst  rÓ   r7   c                ó¼   •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |ddg«       y)rÕ   ræ   rç   N)	r8   r‹   rŒ   r   r�   Úacdb_surfacer�   rR   r’   r”   s     €rB   r‹   zSurface.export_entity}  sI   ø€ ô 	‰Ñ˜iÔ(ð 	×ÑœU×2Ñ2´L×4EÑ4EÔFØ�‰×#Ñ# I°	¸9Ð/EÕFr7   rX   r³   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   rí   r»   r   rw   r‹   rÀ   rÁ   s   @rB   r&   r&   k  s\   ø„ áGà€GÙØ�KÐ!6¸ó€Jð à7;ðØ4ðà	ôó ðð ôGó ôGr7   r&   ÚAcDbExtrudedSurfaceÚclass_idéZ   Úsweep_vectoré
   )ÚxtypeÚdraft_angleé*   g        Údraft_start_distanceé+   Údraft_end_distanceé,   Útwist_angleé-   Úscale_factoré0   Úalign_angleé1   Ú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        «       | _        y rX   )r8   r9   r   Ú%transformation_matrix_extruded_entityÚ"sweep_entity_transformation_matrixÚ!path_entity_transformation_matrixr?   s    €rB   r9   zExtrudedSurface.__init__¶  s,   ø€ Ü‰ÑÔÜ5=³ZˆÔ2Ü2:³*ˆÔ/Ü19³ˆÕ.r7   c                ó  •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  j                  «       |_        | j                  j                  «       |_        | j                  j                  «       |_        y rX   )rY   r'   r8   r\   r  Úcopyr  r  ©r@   rZ   r[   rA   s      €rB   r\   zExtrudedSurface.copy_data¼  st   ø€ ä˜&¤/Ô2Ð2Ð2Ü‰Ñ˜& -Ô0à×6Ñ6×;Ñ;Ó=ð 	Ô4ð ×3Ñ3×8Ñ8Ó:ð 	Ô1ð ×2Ñ2×7Ñ7Ó9ð 	Õ0r7   c                ó˜   •— t         ‰| �  |«      }|r7|j                  |t        dd¬«       | j	                  |j
                  d   «       |S ©Né   Fru   )r8   rw   rx   Ú!acdb_extruded_surface_group_codesÚload_matricesr{   r|   s      €rB   rw   z ExtrudedSurface.load_dxf_attribsÊ  óT   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*ØÔ6¸¸uð +ô ð ×Ñ˜y×3Ñ3°AÑ6Ô7Øˆ
r7   c                óp   — t        |d¬«      | _        t        |d¬«      | _        t        |d¬«      | _        y )Né(   r�   é.   é/   )rÞ   r  r  r  ©r@   rˆ   s     rB   r  zExtrudedSurface.load_matricesÖ  s/   € Ü5@ÀÈBÔ5OˆÔ2Ü2=¸dÈÔ2LˆÔ/Ü1<¸TÈÔ1KˆÕ.r7   c                óÄ  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |ddg«       t        |d| j                  ¬«       | j                  j                  |g d¢«       t        |d| j                  ¬«       t        |d| j                  ¬«       | j                  j                  |g d¢«       y	)
rÕ   rï   rñ   r  ©r‚   rá   ©rô   rö   rø   rú   rü   rþ   r  r  )	r   r  r  r  r  r  r  r  r  N)r8   r‹   rŒ   r   r�   Úacdb_extruded_surfacer�   rR   r’   râ   r  r  r  r”   s     €rB   r‹   zExtrudedSurface.export_entityÛ  sÂ   ø€ ô 	‰Ñ˜iÔ(ð 	×ÑœU×2Ñ2Ô4I×4NÑ4NÔOØ�‰×#Ñ# I°
¸NÐ/KÔLÜØØØ×=Ñ=õ	
ð
 	�‰×#Ñ#Øòô
	
ô 	Ø˜B t×'NÑ'Nõ	
ô 	�i b°×1WÑ1WÕXØ�‰×#Ñ#Øò
õ	
r7   r°   rX   r³   r´   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   rí   r!  r»   r9   r   r   r\   rw   r  r‹   rÀ   rÁ   s   @rB   r'   r'   ©  s�   ø„ áOà€GÙØØØØØó€Jô<ð Ø4@õ 
ó ð
ð à7;ð	Ø4ð	à	ô	ó ð	óLð
 ô)
ó ô)
r7   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                ó@   •— t         ‰| �  «        t        «       | _        y rX   )r8   r9   r   Ú#transformation_matrix_lofted_entityr?   s    €rB   r9   zLoftedSurface.__init__,  s   ø€ Ü‰ÑÔÜ3;³:ˆÕ0r7   c                óˆ   •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  j                  «       |_        y rX   )rY   r(   r8   r\   r3  r  r  s      €rB   r\   zLoftedSurface.copy_data0  s<   ø€ ä˜&¤-Ô0Ð0Ð0Ü‰Ñ˜& -Ô0à×4Ñ4×9Ñ9Ó;ð 	Õ2r7   c                ó˜   •— t         ‰| �  |«      }|r7|j                  |t        dd¬«       | j	                  |j
                  d   «       |S r  )r8   rw   rx   Úacdb_lofted_surface_group_codesr  r{   r|   s      €rB   rw   zLoftedSurface.load_dxf_attribs8  sT   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*ØÔ4°a¸Uð +ô ð ×Ñ˜y×3Ñ3°AÑ6Ô7Øˆ
r7   c                ó(   — t        |d¬«      | _        y )Nr  r�   )rÞ   r3  r  s     rB   r  zLoftedSurface.load_matricesD  s   € Ü3>¸tÈ"Ô3MˆÕ0r7   c                ó   •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       t        |d| j                  ¬«       | j                  j                  |t
        j                  j                  «       «       y)rÕ   r  r  N)r8   r‹   rŒ   r   r�   Úacdb_lofted_surfacer�   râ   r3  rR   r’   ÚattribsÚkeysr”   s     €rB   r‹   zLoftedSurface.export_entityG  sl   ø€ ô 	‰Ñ˜iÔ(ð 	×ÑœU×2Ñ2Ô4G×4LÑ4LÔMÜØ˜B t×'OÑ'Oõ	
ð 	�‰×#Ñ# IÔ/B×/JÑ/J×/OÑ/OÓ/QÕRr7   r°   rX   r³   r´   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   rí   r9  r»   r9   r   r   r\   rw   r  r‹   rÀ   rÁ   s   @rB   r(   r(     sƒ   ø„ áMà€GÙØØØØØó€Jô>ð Ø4@õ 
ó ð
ð à7;ð	Ø4ð	à	ô	ó ð	óNð ô
Só ô
Sr7   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                ó@   •— t         ‰| �  «        t        «       | _        y rX   )r8   r9   r   Ú%transformation_matrix_revolved_entityr?   s    €rB   r9   zRevolvedSurface.__init__w  s   ø€ Ü‰ÑÔÜ5=³ZˆÕ2r7   c                óˆ   •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  j                  «       |_        y rX   )rY   r)   r8   r\   rG  r  r  s      €rB   r\   zRevolvedSurface.copy_data{  s<   ø€ ä˜&¤/Ô2Ð2Ð2Ü‰Ñ˜& -Ô0à×6Ñ6×;Ñ;Ó=ð 	Õ4r7   c                ó˜   •— t         ‰| �  |«      }|r7|j                  |t        dd¬«       | j	                  |j
                  d   «       |S r  )r8   rw   rx   Ú!acdb_revolved_surface_group_codesr  r{   r|   s      €rB   rw   z RevolvedSurface.load_dxf_attribsƒ  r  r7   c                ó(   — t        |d¬«      | _        y )Nrõ   r�   )rÞ   rG  r  s     rB   r  zRevolvedSurface.load_matrices�  s   € Ü5@ÀÈBÔ5OˆÕ2r7   c                ó(  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |g d¢«       t        |d| j                  ¬«       | j                  j                  |g d¢«       y)rÕ   )rï   r=  r>  r?  r@  rõ   r  )rô   rA  rB  rú   r   rC  N)r8   r‹   rŒ   r   r�   Úacdb_revolved_surfacer�   rR   r’   râ   rG  r”   s     €rB   r‹   zRevolvedSurface.export_entity’  s€   ø€ ô 	‰Ñ˜iÔ(ð 	×ÑœU×2Ñ2Ô4I×4NÑ4NÔOØ�‰×#Ñ#Øòô		
ô 	ØØØ×=Ñ=õ	
ð
 	�‰×#Ñ#Øòõ
	
r7   r°   rX   r³   r´   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   rí   rM  r»   r9   r   r   r\   rw   r  r‹   rÀ   rÁ   s   @rB   r)   r)   j  s‚   ø„ áOà€GÙØØØØØó€Jô@ð Ø4@õ 
ó ð
ð à7;ð	Ø4ð	à	ô	ó ð	óPð ô 
ó ô 
r7   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        «       | _        y rX   )r8   r9   r   Ú"transformation_matrix_sweep_entityÚ!transformation_matrix_path_entityr  r  r?   s    €rB   r9   zSweptSurface.__init__ë  s6   ø€ Ü‰ÑÔÜ2:³*ˆÔ/Ü19³ˆÔ.Ü2:³*ˆÔ/Ü19³ˆÕ.r7   c                óB  •— t        |t        «      sJ ‚t        ‰| �  ||«       | j                  j                  «       |_        | j                  j                  «       |_        | j                  j                  «       |_        | j                  j                  «       |_        y rX   )	rY   r*   r8   r\   rV  r  rW  r  r  r  s      €rB   r\   zSweptSurface.copy_dataò  s�   ø€ ä˜&¤,Ô/Ð/Ð/Ü‰Ñ˜& -Ô0à×3Ñ3×8Ñ8Ó:ð 	Ô1ð ×2Ñ2×7Ñ7Ó9ð 	Ô0ð ×3Ñ3×8Ñ8Ó:ð 	Ô1ð ×2Ñ2×7Ñ7Ó9ð 	Õ0r7   c                ó˜   •— t         ‰| �  |«      }|r7|j                  |t        dd¬«       | j	                  |j
                  d   «       |S r  )r8   rw   rx   Úacdb_swept_surface_group_codesr  r{   r|   s      €rB   rw   zSweptSurface.load_dxf_attribs  sT   ø€ ô ‰gÑ& yÓ1ˆÙØ×*Ñ*ØÔ3°Q¸Eð +ô ð ×Ñ˜y×3Ñ3°AÑ6Ô7Øˆ
r7   c                ó”   — t        |d¬«      | _        t        |d¬«      | _        t        |d¬«      | _        t        |d¬«      | _        y )Nr  r�   r#  r  r  )rÞ   rV  rW  r  r  r  s     rB   r  zSweptSurface.load_matrices  s>   € Ü2=¸dÈÔ2LˆÔ/Ü1<¸TÈÔ1KˆÔ.Ü2=¸dÈÔ2LˆÔ/Ü1<¸TÈÔ1KˆÕ.r7   c                óô  •— t         ‰| �  |«       |j                  t        j                  t
        j                  «       | j                  j                  |ddg«       t        |d| j                  ¬«       t        |d| j                  ¬«       | j                  j                  |g d¢«       t        |d| j                  ¬«       t        |d| j                  ¬«       | j                  j                  |g d	¢«       y
)rÕ   rO  rP  r  r  r#  r   r  r  )	r   rR  r  r  r  r  r  r  r  N)r8   r‹   rŒ   r   r�   Úacdb_swept_surfacer�   rR   r’   râ   rV  rW  r  r  r”   s     €rB   r‹   zSweptSurface.export_entity  sÛ   ø€ ô 	‰Ñ˜iÔ(ð 	×ÑœU×2Ñ2Ô4F×4KÑ4KÔLØ�‰×#Ñ#Øà!Ø ðô	
ô 	Ø˜B t×'NÑ'Nõ	
ô 	�i b°×1WÑ1WÕXØ�‰×#Ñ#Øòô
	
ô 	Ø˜B t×'NÑ'Nõ	
ô 	�i b°×1WÑ1WÕXØ�‰×#Ñ#Øò
õ	
r7   r°   rX   r³   r´   rµ   )r¶   r·   r¸   r¹   rº   r   r   r   rŽ   rí   r]  r»   r9   r   r   r\   rw   r  r‹   rÀ   rÁ   s   @rB   r*   r*   Þ  s�   ø„ áLà€GÙØØØØØó€Jô<ð Ø4@õ 
ó ð
ð  à7;ð	Ø4ð	à	ô	ó ð	óLð ô/
ó ô/
r7   r*   )rˆ   r   r¬   úIterable[str])rš   r^  r¬   zIterable[DXFTag])rÜ   r   r‚   r±   r¬   r   )rp   r!   r‚   r±   rá   r   r¬   r­   )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__Ú	getLoggerrd   rV   rŽ   ry   r#   r†   r�   r%   r×   rÒ   r$   rÞ   râ   rí   rë   r&   Úpoint3dr!  r  r'   r9  r6  r(   rM  rJ  r)   r]  rZ  r*   rÃ   r7   rB   Ú<module>rq     s  ðõ #ß J× Jß ,Û ÷õ õ ß )Ý ß #Ý ç 4ß +Ý $Ý Ý :áÝ+Ý7Ýò	€ð 
ˆ×	Ñ	˜7Ó	#€Ù#Øá˜2 qÔ)Ù˜¨¯©Ô7Ù�q U§]¡]Ô3ñóÐ ñ %7Ð7LÓ$MÐ !ð6 ôu.ˆ:ó u.ó ðu.ópó "ð ôˆTó ó ðñ Øà™' #¨sÔ3ðó€ñ .¨lÓ;Ð ð ôEˆdó Eó ðEó:ó*ñ
 Øá˜2“;Ù˜2“;ñó€ñ .¨lÓ;Ð ð ôGˆdó Gó ðGñ8 $ØðØ‘G˜B“Kðà™ ¨%¯-©-Ô8ðð
 	‘w˜r¨3Ô/ðð 	¡¨°CÔ 8ðð 	™g b°#Ô6ðð 	‘w˜r¨3Ô/ðð 	™ ¨CÔ0ðð 	‘w˜r¨3Ô/ðð 	‘˜ aÔ(ðð" 	 ¡¨°QÔ!7ð#ð$ 	‘G˜B¨Ô*ð%ð( 	‘w˜s¨AÔ.ð)ð* 	‘˜ QÔ'ð+ð, 	™' #¨qÔ1ð-ð. 	*©7°3ÀÔ+Bð/ð0 	)©'°#¸qÔ*Að1ð2 	1±'¸"ÀEÇMÁMÔ2Rð3óÐ ñ< %7Ð7LÓ$MÐ !ð ô[
�gó [
ó ð[
ñ| "Øñ &-¨R£[Ù$ R°Ô5Ù" 2¨sÔ3Ù!(¨°SÔ!9Ù& r°3Ô7Ù'.¨s¸AÔ'>Ù˜C¨Ô+Ù" 3°Ô2Ù" 3°Ô2Ù" 3°Ô2Ù˜ aÔ(Ù  ¨aÔ0Ù  ¨aÔ0ñóÐ ñ( #5Ð5HÓ"IÐ ð ô2S�Gó 2Só ð2Sñj $Øá˜B¨Ô,Ù˜b¨¯©Ô6Ù˜r¨¯©Ô7Ù  ›Ù˜r“{ñ ˜r“{Ù '¨°AÔ 6Ù% b°!Ô4Ù˜r¨1Ô-Ù˜ aÔ(Ù  ¨aÔ0ñóÐ ñ$ %7Ð7LÓ$MÐ !ð ôH
�gó H
ó ðH
ñV !Øð!Ø™7 2›;ð!ð 	™' "›+ð	!ð 	‘w˜r“{ð!ð 	¡¨°AÔ 6ð!ð 	™g b°!Ô4ð!ð 	‘w˜r¨1Ô-ð!ð 	™ ¨AÔ.ð!ð  	‘w˜r¨1Ô-ð!!ð, 	‘˜ aÔ(ð-!ð0 	™7 2¨qÔ1ð1!ð2 	‘G˜B¨Ô*ð3!ð6 	‘w˜s¨AÔ.ð7!ð8 	‘˜ QÔ'ð9!ð: 	™' #¨qÔ1ð;!ð< 	*©7°3ÀÔ+Bð=!ð> 	)©'°#¸qÔ*Að?!ð@ 	1±'¸"ÀEÇMÁMÔ2RðA!ó$Ð ñJ "4Ð4FÓ!GÐ ð ôf
�7ó f
ó ñf
r7   