Ë
    £èhX   ã                  óà  — d dl mZ d dlmZmZ d dlmZ d dlZd dlm	Z	m
Z
mZ d dlmZmZmZmZmZmZ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 d d	lm Z  d
dgZ!d'd„Z"d(d„Z#e	 Z$d)d„Z%d)d„Z&d*d„Z'd+d„Z(d,d„Z)d-d„Z*d-d„Z+ed'd„«       Z,e,j[                  e«      d.d„«       Z.e,j[                  e«      d/d„«       Z/e,j[                  e«      d0d„«       Z0e,j[                  e«      d1d„«       Z1e,j[                  e«      d2d„«       Z2e,j[                  e«      d3d„«       Z3d4d„Z4e,j[                  e«      d5d„«       Z5e,j[                  e«      d6d„«       Z6ed7d„«       Z7e7j[                  e«      d8d „«       Z8e7j[                  e«      d9d!„«       Z9ed7d"„«       Z:e:j[                  e«      d:d#„«       Z;e:j[                  e«      d;d$„«       Z<e:j[                  e«      d<d%„«       Z=e:j[                  e«      d=d&„«       Z>y)>é    )Úannotations)ÚIterableÚSequence)ÚsingledispatchN)ÚZ_AXISÚVec3ÚVec2)	Ú
DXFGraphicÚDXFNamespaceÚCircleÚArcÚEllipseÚSolidÚInsertÚ
LWPolylineÚPolyline)Ú
DXFPolygon)ÚPolylinePathÚEdgePathÚLineEdgeÚArcEdgeÚEllipseEdgeÚ
SplineEdge)ÚconstÚuprightÚupright_allc                ó  — t        | t        «      r'| j                  r| j                  j	                  d«      syt        | j                  j                  «      j                  «       }|j                  t        «      rt        | «       yy)al  Flips an inverted :ref:`OCS` defined by extrusion vector (0, 0, -1) into
    a :ref:`WCS` aligned :ref:`OCS` defined by extrusion vector (0, 0, 1).
    DXF entities with other extrusion vectors and unsupported DXF entities will
    be silently ignored. For more information about the limitations read the
    documentation of the :mod:`ezdxf.upright` module.

    Ú	extrusionN)Ú
isinstancer
   Úis_aliveÚdxfÚhasattrr   r   Ú	normalizeÚiscloseÚFLIPPED_Z_AXISÚ_flip_dxf_graphic)Úentityr   s     ú-lib/python3.12/site-packages/ezdxf/upright.pyr   r   0   sb   € ô 	�6œ:Ô&Ø�OŠOØ�J‰J×Ñ˜{Ô+àÜ�V—Z‘Z×)Ñ)Ó*×4Ñ4Ó6€IØ×ÑœÔ(Ü˜&Õ!ð )ó    c                ó(   — | D ]  }t        |«       Œ y)z|Call function :func:`upright` for all DXF entities in iterable
    `entities`::

        upright_all(doc.modelspace())

    N)r   )ÚentitiesÚes     r(   r   r   C   s   € ó ˆÜ��
ñ r)   c                ó    — | dk\  rd| z
  S d| z
  S )Nç        g     €f@g     €fÀ© ©Úangles    r(   Ú_flip_deg_angler2   Q   s   € Ø˜c’\ˆE°Ñ6Ð6 v°Ñ6Ð6r)   c                óZ   — | dk\  rt         j                  | z
  S t         j                   | z
  S )Nr.   )ÚmathÚpir0   s    r(   Ú_flip_rad_angler6   U   s'   € Ø ’|ŒD�G‰G°UÑ:Ð:¬$¯'©'¨°UÑ:Ð:r)   c                ó\   — t        | j                   | j                  | j                   «      S ©N)r   ÚxÚyÚz©Úvertexs    r(   Ú_flip_vertexr>   Y   s!   € Ü�—‘�	˜6Ÿ8™8 f§h¡h YÓ/Ð/r)   c                óD   — t        | j                   | j                  «      S r8   )r	   r9   r:   r<   s    r(   Ú_flip_2d_vertexr@   ]   s   € Ü�—‘�	˜6Ÿ8™8Ó$Ð$r)   c                ó€   — | j                  |«      r-t        | j                  |«      «      }| j                  ||«       y y r8   )r"   r>   ÚgetÚset)r!   Únamer=   s      r(   Ú_flip_existing_vertexrE   a   s3   € Ø
‡{�{�4ÔÜ˜cŸg™g d›mÓ,ˆØ�‰��fÕð r)   c                óL   — | j                  d«      r| j                   | _        y y )NÚ	thickness)r"   rG   ©r!   s    r(   Ú_flip_thicknessrI   g   s    € Ø
‡{�{�;ÔØŸ™˜ˆ�ð  r)   c                óL   — | j                  d«      r| j                   | _        y y )NÚ	elevation)r"   rK   rH   s    r(   Ú_flip_elevationrL   l   s    € Ø
‡{�{�;ÔàŸ™˜ˆ�ð  r)   c                 ó   — y r8   r/   )r'   s    r(   r&   r&   r   s   € àr)   c                ól   — | j                   }t        |d«       t        |«       |j                  d«       y )NÚcenterr   )r!   rE   rI   Údiscard)Úcircler!   s     r(   Ú_flip_circlerR   w   s)   € à
�*‰*€CÜ˜#˜xÔ(Ü�CÔØ‡K�K�Õr)   c                óž   — t        | «       | j                  }|j                  }t        |j                  «      |_        t        |«      |_        y r8   )rR   r!   Ú	end_angler2   Ústart_angle)Úarcr!   rT   s      r(   Ú	_flip_arcrW      s8   € ä�ÔØ
�'‰'€CØ—‘€IÜ# C§O¡OÓ4€C„MÜ% iÓ0€C…Or)   c                ó–   — | j                   }t        j                  D ]  }t        ||«       Œ t	        |«       |j                  d«       y ©Nr   )r!   r   ÚVERTEXNAMESrE   rI   rP   )Úsolidr!   rD   s      r(   Ú_flip_solidr\   ‰   s9   € à
�)‰)€CÜ×!Ô!ˆÜ˜c 4Õ(ð "ä�CÔØ‡K�K�Õr)   c                óÂ   — | j                   }t        |d«       |j                   |_        |j                   |_        |j                   |_        |j                  d«       y )NÚinsertr   )r!   rE   ÚrotationÚxscaleÚzscalerP   )r^   r!   s     r(   Ú_flip_insertrb   ’   sJ   € ð �*‰*€CÜ˜#˜xÔ(Ø—L‘L�=€C„LØ—*‘*�€C„JØ—*‘*�€C„Jà‡K�K�Õr)   c                óŠ   — | j                   }|j                   }|j                   |_        ||_        |j                  d«       y rY   )r!   Ú	end_paramÚstart_paramrP   )Úellipser!   rd   s      r(   Ú_flip_ellipserg   ž   s9   € ð �+‰+€CØ—‘�€IØ—_‘_Ð$€C„MØ€C„OØ‡K�K�Õr)   c                ó
  — g }| j                   D ]J  \  }}}}}| }t        t        ||«      «      }|j                  |j                  |j
                  |||f«       ŒL | j                  |d¬«       t        | j                  «       y )NÚxyseb)Úformat)	Úlwpointsr@   r	   Úappendr9   r:   Ú
set_pointsÚ_finalize_polyliner!   )ÚpolylineÚflipped_pointsr9   r:   Ústart_widthÚ	end_widthÚbulgeÚvs           r(   Ú_flip_lwpolylineru   ©   s|   € à,.€NØ/7×/@Ô/@Ñ+ˆˆ1ˆk˜9 eØ�ˆÜœD  A›JÓ'ˆØ×Ñ˜qŸs™s A§C¡C¨°iÀÐGÕHð 0Að ×Ñ˜¨wÐÔ7Ü�x—|‘|Õ$r)   c                óR   — t        | «       t        | «       | j                  d«       y rY   )rI   rL   rP   rH   s    r(   rn   rn   ´   s   € Ü�CÔÜ�CÔØ‡K�K�Õr)   c                óâ   — | j                   sy | j                  D ]>  }|j                  }t        |d«       |j	                  d«      sŒ-|j
                   |_        Œ@ t        | j                  «       y )NÚlocationrs   )Úis_2d_polylineÚverticesr!   rE   r"   rs   rn   )ro   r=   r!   s      r(   Ú_flip_polyline2dr{   º   sX   € à×"Ò"ØØ×#Ô#ˆØ�j‰jˆÜ˜c :Ô.Ø�;‰;�wÕØŸ™˜
ˆC�Ið	 $ô
 �x—|‘|Õ$r)   c                óœ   — | j                   D ]  }t        |«       Œ t        | j                  «       | j                  j	                  d«       y rY   )ÚpathsÚ_flip_boundary_pathrL   r!   rP   )ÚpolygonÚps     r(   Ú_flip_polygonr�   Ç   s6   € à�]Œ]ˆÜ˜AÕð ä�G—K‘KÔ Ø‡K�K×Ñ˜Õ$r)   c                ó   — t        d| ›�«      ‚)Nzunsupported path type: ©Ú	TypeError)Úpaths    r(   r~   r~   Ï   ó   € ä
Ð-¨d¨XÐ6Ó
7Ð7r)   c                óÀ   — g }| j                   D ]F  \  }}}| }t        t        ||«      «      }|j                  |j                  |j
                  |f«       ŒH || _         y r8   )rz   r@   r	   rl   r9   r:   )ro   Úflipped_verticesr9   r:   rs   rt   s         r(   Ú_flip_polyline_pathr‰   Ô   s\   € à9;ÐØ×(Ô(‰ˆˆ1ˆeØ�ˆÜœD  A›JÓ'ˆØ×Ñ §¡ a§c¡c¨5Ð 1Õ2ð )ð )€HÕr)   c                ó(   — | D ]  }t        |«       Œ y r8   )Ú
_flip_edge)ÚedgesÚedges     r(   Ú_flip_edge_pathrŽ   Þ   s   € ó ˆÜ�4Õñ r)   c                ó   — t        d| ›�«      ‚)Nzunsupported edge type: rƒ   ©r�   s    r(   r‹   r‹   å   r†   r)   c                ól   — t        | j                  «      | _        t        | j                  «      | _        y r8   )r@   ÚstartÚendr�   s    r(   Ú_flip_line_edger”   ê   s"   € ä  §¡Ó,€D„JÜ˜tŸx™xÓ(€D…Hr)   c                óÈ   — t        | j                  «      | _        | j                  }t        | j                  «      | _        t        |«      | _        | j
                   | _        y r8   )r@   rO   rT   r2   rU   Úccw)r�   rT   s     r(   Ú_flip_arc_edger—   ð   sG   € ä! $§+¡+Ó.€D„Kà—‘€IÜ$ T×%5Ñ%5Ó6€D„NÜ& yÓ1€DÔØ—8‘8ˆ|€D…Hr)   c                óø   — t        | j                  «      | _        t        | j                  «      | _        t        | j                  «      | _        t        | j
                  «      | _        | j                   | _        y r8   )r@   rO   Ú
major_axisr2   rU   rT   r–   r�   s    r(   Ú_flip_ellipse_edgerš   ú   sT   € ä! $§+¡+Ó.€D„KÜ% d§o¡oÓ6€D„Oô ' t×'7Ñ'7Ó8€DÔÜ$ T§^¡^Ó4€D„NØ—8‘8ˆ|€D…Hr)   c                óD  — t         }| j                  � || j                  «      | _        | j                  � || j                  «      | _        | j                  D �cg c]
  } ||«      ‘Œ c}| _        | j                  D �cg c]
  } ||«      ‘Œ c}| _        y c c}w c c}w r8   )r@   Ústart_tangentÚend_tangentÚcontrol_pointsÚ
fit_points)r�   Úflip_2d_vertexrt   s      r(   Ú_flip_spline_edger¡     s‘   € ä$€NØ×ÑÐ%Ù+¨D×,>Ñ,>Ó?ˆÔØ×ÑÐ#Ù)¨$×*:Ñ*:Ó;ˆÔØ6:×6IÒ6IÓJÑ6I°™>¨!Õ,Ð6IÑJ€DÔØ26·/²/ÓB±/¨Q‘~ aÕ(°/ÑB€D…Oùò KùÚBs   ÁBÂ B)r'   r
   ÚreturnÚNone)r+   zIterable[DXFGraphic]r¢   r£   )r1   Úfloatr¢   r¤   )r=   r   r¢   r   )r=   r	   r¢   r	   )r!   r   rD   Ústrr¢   r£   )r!   r   r¢   r£   )rQ   r   r¢   r£   )rV   r   r¢   r£   )r[   r   r¢   r£   )r^   r   r¢   r£   )rf   r   r¢   r£   )ro   r   r¢   r£   )r!   r   )ro   r   r¢   r£   )r   r   r¢   r£   )r¢   r£   )ro   r   r¢   r£   )rŒ   r   r¢   r£   )r�   r   r¢   r£   )r�   r   r¢   r£   )r�   r   r¢   r£   )r�   r   r¢   r£   )?Ú
__future__r   Útypingr   r   Ú	functoolsr   r4   Ú
ezdxf.mathr   r   r	   Úezdxf.entitiesr
   r   r   r   r   r   r   r   r   Úezdxf.entities.polygonr   Úezdxf.entities.boundary_pathsr   r   r   r   r   r   Úezdxf.lldxfr   Ú__all__r   r   r%   r2   r6   r>   r@   rE   rI   rL   r&   ÚregisterrR   rW   r\   rb   rg   ru   rn   r{   r�   r~   r‰   rŽ   r‹   r”   r—   rš   r¡   r/   r)   r(   Ú<module>r°      sq  ðõ$ #ß %Ý $Û ß )Ñ )÷
÷ 
õ 
õ .÷÷ õ à�mÐ
$€ó"ó&ð �€ó7ó;ó0ó%óó'ó
'ð ò	ó ð	ð ×Ñ˜FÓ#òó $ðð ×Ñ˜CÓ ò1ó !ð1ð ×Ñ˜EÓ"òó #ðð ×Ñ˜FÓ#òó $ðð ×Ñ˜GÓ$òó %ðð ×Ñ˜JÓ'ò%ó (ð%óð ×Ñ˜HÓ%ò%ó &ð%ð ×Ñ˜JÓ'ò%ó (ð%ð ò8ó ð8ð ×Ñ˜lÓ+ò)ó ,ð)ð ×Ñ˜hÓ'òó (ðð ò8ó ð8ð ×Ñ�XÓò)ó ð)ð
 ×Ñ�WÓòó ðð ×Ñ�[Ó!òó "ðð ×Ñ�ZÓ òCó !ñCr)   