Ë
    £èhK  ã                  ól   — d dl m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 ddlmZ  G d„ d«      Zd
d„Zy	)é    )Úannotations)ÚIteratorÚCallableÚAnyé   )Ú
AcisEntityÚNONE_REFÚFaceÚCoedgeÚLoopÚVertex)Úsabc                  óö   — e Zd Zedfdd„Zedd„«       Zdd„Zdd„Zdd„Z	efdd„Z
ef	 	 	 	 	 dd„Zef	 	 	 	 	 dd	„Zeddd
„«       Zddd„Zedd„«       Zeddd„«       Zedd d„«       Zed!d„«       Zd"d„Zd#d„Zy)$ÚAcisDebuggerr   c                ó€   — |dz
  | _         || _        t        «       | _        |j                  s| j                  |«       y y ©Nr   )Ú_next_idÚ_rootÚdictÚentitiesÚis_noneÚ_store_entities)ÚselfÚrootÚstart_ids      ú.lib/python3.12/site-packages/ezdxf/acis/dbg.pyÚ__init__zAcisDebugger.__init__   s7   € Ø  1™ˆŒØ!%ˆŒ
Ü/3«vˆŒØ�|Š|Ø× Ñ  Õ&ð ó    c                ó   — | j                   S ©N)r   ©r   s    r   r   zAcisDebugger.root   s   € à�z‰zÐr   c                óD   — | xj                   dz  c_         | j                   S r   )r   r!   s    r   Ú_get_idzAcisDebugger._get_id   s   € Ø�Š˜Ñ�Ø�}‰}Ðr   c                ó6  — |j                   s$|j                  dk(  r| j                  «       |_        || j                  |j                  <   t	        |«      j                  «       D ]4  }t        |t        «      sŒ|j                  dk(  sŒ$| j                  |«       Œ6 y )Néÿÿÿÿ)	r   Úidr#   r   ÚvarsÚvaluesÚ
isinstancer   r   )r   ÚentityÚes      r   r   zAcisDebugger._store_entities    sk   € Ø�~Š~ &§)¡)¨r¢/ØŸ™›ˆFŒIØ#)ˆ�‰�f—i‘iÑ Ü�f“×$Ñ$Ö&ˆAÜ˜!œZÕ(¨Q¯T©T°R«ZØ×$Ñ$ QÕ'ñ 'r   c                óh   — | j                   j                  «        || _        | j                  |«       y r    )r   Úclearr   r   )r   r*   s     r   Úset_entitieszAcisDebugger.set_entities(   s'   € Ø�‰×ÑÔØˆŒ
Ø×Ñ˜VÕ$r   c              #  ó†   ‡‡K  — dˆˆfd„Š|j                   r| j                  }t        «       Š ‰|«      E d {  –—†  y 7 Œ­w)Nc              3  ó  •K  — | j                   ry | –— ‰j                  | j                  «       t        | «      j	                  «       D ]2  }t        |t        «      sŒ|j                  ‰vsŒ# ‰|«      E d {  –—†  Œ4 y 7 Œ­wr    )r   Úaddr&   r'   r(   r)   r   )r*   r+   Ú_walkÚdones     €€r   r2   z AcisDebugger.walk.<locals>._walk.   sb   øè ø€ Ø�~Š~ØØŠLØ�H‰H�V—Y‘YÔÜ˜&“\×(Ñ(Ö*�Ü˜a¤Õ,°·±¸TÒ1AÙ$ Q›x×'Ñ'ñ +à'ús   ƒABÁBÁ,BÁ7A?Á8B)r*   r   )r   r   Úset)r   r   r2   r3   s     @@r   ÚwalkzAcisDebugger.walk-   s2   ùè ø€ ö	(ð �<Š<Ø—:‘:ˆDÜ›ˆÙ˜“;×Òús   „5A¹?ºAc              #  ó†   K  — |j                   r| j                  }t        || j                  |«      «      E d {  –—†  y 7 Œ­wr    ©r   r   Úfilterr5   )r   Úfuncr*   s      r   r8   zAcisDebugger.filter<   s1   è ø€ ð �>Š>Ø—Z‘ZˆFÜ˜$ §	¡	¨&Ó 1Ó2×2Ò2ús   ‚7A¹?ºAc              #  óŽ   ‡K  — |j                   r| j                  }t        ˆfd„| j                  |«      «      E d {  –—†  y 7 Œ­w)Nc                ó"   •— | j                   ‰k(  S r    )Útype)ÚxÚnames    €r   Ú<lambda>z*AcisDebugger.filter_type.<locals>.<lambda>H   s   ø€  A§F¡F¨d¢Nr   r7   )r   r>   r*   s    ` r   Úfilter_typezAcisDebugger.filter_typeC   s3   øè ø€ ð �>Š>Ø—Z‘ZˆFÜÓ2°D·I±I¸fÓ4EÓF×FÒFús   ƒ:A½A¾Ac              #  óz   K  — d|z  }t        | «      j                  «       D ]  \  }}|dk(  rŒ|› |› d|› �–— Œ y ­w)NÚ r&   z: )r'   Úitems)r*   ÚindentÚ
indent_strr>   Údatas        r   Úentity_attributeszAcisDebugger.entity_attributesJ   sI   è ø€ à˜6‘\ˆ
Ü˜v›,×,Ñ,Ö.‰JˆD�$Ø�tŠ|ØØ�L   b¨¨Ð/Ó/ñ /ùs   ‚9;c              #  óö  K  — d|z  }|j                   sät        | j                  |«      «      }d}g }g }|D ]„  }| j                  j	                  |«      }	|	€	|d|› d�z  }t        |	t        «      rC| j                  |	«      }
|j                  |
v r|j                  |«       Œj|j                  |«       Œ||d|› d�z  }Œ† |rd|› d|› �}|› t        |«      › d|› d|› �–— |j                  }|j                   sŒãy y ­w)	NrB   Ú z face z does not exist;z entity z is not a face;zunlinked partner faces: ú >> )r   ÚlistÚpartner_facesr   Úgetr)   r
   r&   ÚappendÚstrÚ	next_face)r   ÚfacerD   rE   rL   ÚerrorÚlinked_partner_facesÚunlinked_partner_facesÚpface_idÚpfaceÚreverse_facess              r   Úface_link_structurez AcisDebugger.face_link_structureR   s  è ø€ Ø˜6‘\ˆ
à—,’,Ü  ×!3Ñ!3°DÓ!9Ó:ˆMØˆEØ#%Ð Ø%'Ð"Û)�ØŸ™×)Ñ)¨(Ó3�Ø�=Ø˜v h ZÐ/?Ð@Ñ@�EÜ˜e¤TÔ*Ø$(×$6Ñ$6°uÓ$=�MØ—w‘w -Ñ/Ø,×3Ñ3°HÕ=à.×5Ñ5°hÕ?à˜x¨ z°ÐAÑA‘Eð *ñ &Ø2Ð3IÐ2JÈ!ÈEÈ7ÐS�Ø�L¤ T£ ¨4°¨¸aÀ¸wÐGÒGØ—>‘>ˆDð) —,•,ùs   ‚C4C9Ã7C9c              #  ó:  K  — g }| j                   }|j                  s?|j                  d„ |j                  «       D «       «       |j                  }|j                  sŒ?|D ]9  }|j                  «       D ]$  }|j                   j                  j                  –— Œ& Œ; y ­w)Nc              3  ó    K  — | ]  }|–— Œ y ­wr    © ©Ú.0Úcos     r   Ú	<genexpr>z-AcisDebugger.partner_faces.<locals>.<genexpr>p   ó   è ø€ Ð7© "œ2©ùó   ‚)Úloopr   ÚextendÚcoedgesÚ	next_loopÚpartner_coedgesrQ   r&   )rQ   rd   rb   ÚcoedgeÚpartner_coedges        r   rL   zAcisDebugger.partner_facesk   s|   è ø€ à "ˆØ�y‰yˆØ—,’,Ø�N‰NÑ7¨¯©¬Ó7Ô7Ø—>‘>ˆDð —,“,ó ˆFØ"(×"8Ñ"8Ö":�Ø$×)Ñ)×.Ñ.×1Ñ1Ó1ñ #;ñ ùs   ‚ABÁ?Bc           
     óB  — g }g }| j                   }|j                  s?|j                  d„ |j                  «       D «       «       |j                  }|j                  sŒ?|D ]£  }|j
                  }|j                  }|j                  d|j                  › d|j                  › d|› �«       |j                  «       D ]H  }|j
                  }	|j                  }
|j                  d|j                  › d|	j                  › d|
› �«       ŒJ Œ¥ d|z  }|D �cg c]  }||z   ‘Œ	 c}S c c}w )Nc              3  ó    K  — | ]  }|–— Œ y ­wr    r[   r\   s     r   r_   z0AcisDebugger.coedge_structure.<locals>.<genexpr>}   r`   ra   zCoedge=z edge=z sense=z    Partner Coedge=rB   )
rb   r   rc   rd   re   ÚedgeÚsenserN   r&   rf   )rQ   ÚidentÚlinesrd   rb   rg   Úedge1Úsense1rh   Úedge2Úsense2Ú	ident_strÚlines                r   Úcoedge_structurezAcisDebugger.coedge_structurev   s  € àˆØ "ˆØ�y‰yˆà—,’,Ø�N‰NÑ7¨¯©¬Ó7Ô7Ø—>‘>ˆDð —,“,ó ˆFØ—K‘KˆEØ—\‘\ˆFØ�L‰L˜7 6§9¡9 +¨V°E·H±H°:¸WÀVÀHÐMÔNØ"(×"8Ñ"8Ö":�Ø&×+Ñ+�Ø'×-Ñ-�Ø—‘Ø)¨.×*;Ñ*;Ð)<¸FÀ5Ç8Á8À*ÈGÐTZÐS[Ð\õñ #;ð	 ð ˜%‘Kˆ	Ù-2Ó3©U T�	˜DÓ ¨UÑ3Ð3ùÒ3s   ÄDc                óV   — d|z  }|› | › dt        t        j                  | «      «      › �S )NrB   rJ   )rK   r   Ú
loop_edges)rb   rD   rE   s      r   Úloop_verticeszAcisDebugger.loop_verticesŒ   s1   € à˜6‘\ˆ
Ø�˜d˜V 4¬¬\×-DÑ-DÀTÓ-JÓ(KÐ'LÐMÐMr   c              #  óH  K  — | j                   }|}|j                  s„|j                  }|j                  }|j                  }|j
                  r|j                  |j                  g–— n|j                  |j                  g–— |j                  }||u ry |j                  sŒƒy y ­wr    )rg   r   rk   Ústart_vertexÚ
end_vertexrl   r&   Únext_coedge)rb   rg   Úfirstrk   ÚsvÚevs         r   rw   zAcisDebugger.loop_edges‘   s�   è ø€ à—‘ˆØˆØ—.’.Ø—;‘;ˆDØ×"Ñ"ˆBØ—‘ˆBØ�|Š|Ø—u‘u˜bŸe™e�nÓ$à—u‘u˜bŸe™e�nÒ$Ø×'Ñ'ˆFØ˜‰Øð —.•.ùs   ‚BB"Â B"c           
   #  ó  K  — d„ | j                   j                  «       D «       D ]`  }|j                  }|j                  }|j                  }|› d|j
                  › d|j
                  › d|j
                  › d|j                  › �	–— Œb y ­w)Nc              3  óB   K  — | ]  }t        |t        «      sŒ|–— Œ y ­wr    )r)   r   )r]   r+   s     r   r_   z7AcisDebugger.vertex_to_edge_relation.<locals>.<genexpr>¢   s   è ø€ ð 
Ù-�!´¸A¼vÕ1FŒAÑ-ùs   ‚˜z: parent edge is z; z => )r   r(   rk   rz   r{   r&   Úcurve)r   Úvertexrk   r~   r   s        r   Úvertex_to_edge_relationz$AcisDebugger.vertex_to_edge_relation¡   sz   è ø€ ñ
Ø—}‘}×+Ñ+Ô-ö
ˆFð —;‘;ˆDØ×"Ñ"ˆBØ—‘ˆBØ�HÐ-¨d¯g©g¨Y°b¸¿¹¸¸tÀBÇEÁEÀ7È"ÈTÏZÉZÈLÐYÓYñ
ùs   ‚BBc                ól   — | j                  d«      D ]   }t        |j                  «       «      dkD  sŒ  y y)Nrg   r   FT)r@   Úlenrf   )r   rg   s     r   Úis_manifoldzAcisDebugger.is_manifoldª   s5   € Ø×&Ñ& xÖ0ˆFÜ�6×)Ñ)Ó+Ó,¨qÓ0Ùð 1ð r   N)r   r   r   Úint)Úreturnr   )r‰   rˆ   )r*   r   r‰   ÚNone)r   r   r‰   zIterator[AcisEntity])r9   zCallable[[AcisEntity], bool]r*   r   r‰   úIterator[Any])r>   rO   r*   r   r‰   r‹   )r   )r*   r   rD   rˆ   r‰   úIterator[str])rQ   r
   rD   rˆ   r‰   rŒ   )rQ   r
   r‰   zIterator[int])é   )rQ   r
   rm   rˆ   r‰   z	list[str])rb   r   rD   rˆ   r‰   rO   )rb   r   r‰   zIterator[list[int]])r‰   rŒ   )r‰   Úbool)Ú__name__Ú
__module__Ú__qualname__r	   r   Úpropertyr   r#   r   r.   r5   r8   r@   ÚstaticmethodrG   rX   rL   ru   rx   rw   r„   r‡   r[   r   r   r   r      sù   „ Ø*2ÀAô 'ð òó ðóó(ó%ð
 '/ô ð  HPð3Ø0ð3Ø:Dð3à	ó3ð /7ðGØðGØ!+ðGà	óGð ó0ó ð0ô"ð2 ò2ó ð2ð ó4ó ð4ð* óNó ðNð òó ðóZôr   r   c              #  óV  K  — d„ }t        j                  | «      }|j                  «       }|j                  «       E d {  –—†  d}	 |j	                  «       D ]  }d|› �–—  ||«      E d {  –—†  |dz  }Œ  y 7 Œ97 Œ# t         j
                  $ r}t        |«      –— Y d }~y d }~ww xY w­w)Nc              3  óp   K  — | D ]-  \  }}t        j                  |«      j                  }|› d|› �–— Œ/ y ­w)Nz = )r   ÚTagsr>   )r+   ÚtagÚvaluer>   s       r   Úentity_dataz%dump_sab_as_text.<locals>.entity_data²   s8   è ø€ Û‰JˆC�Ü—8‘8˜C“=×%Ñ%ˆDØ�F˜#˜e˜WÐ%Ó%ñ ùs   ‚46r   z--------------------- record: r   )r   ÚDecoderÚread_headerÚdumpsÚread_recordsÚParsingErrorrO   )rF   r™   ÚdecoderÚheaderÚindexÚrecordr+   s          r   Údump_sab_as_textr£   ±   s¢   è ø€ ò&ô
 �k‰k˜$Ó€GØ× Ñ Ó"€FØ�|‰|‹~×ÐØ€EðØ×*Ñ*Ö,ˆFØ2°5°'Ð:Ò:Ù" 6Ó*×*Ð*Ø�Q‰J‰Eñ -ð øð
 +ùä×Ñò Ü�!‹f�ûðüsK   ‚<B)¾A8¿B)Á%A< Á+A:Á,A< Á7B)Á:A< Á<B&ÂB!ÂB)Â!B&Â&B)N)rF   Úbytesr‰   rŒ   )Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   r   rI   r   r   r£   r[   r   r   Ú<module>r§      s1   ðõ #ß *Ñ *÷÷ õ ÷^ñ ^ôBr   