
    Og                    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      S/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/acis/dbg.py__init__zAcisDebugger.__init__   s7     1!%
/3v||  &     c                    | j                   S N)r   r   s    r   r   zAcisDebugger.root   s    zz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    sp    ~~&))r/FI#)fii f$$& 	(A!Z(QTTRZ$$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.   sg     ~~LHHVYY&\((* (a,T1A$Qx''('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      >>ZZF$		& 1222s   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    AFFdN r   r7   )r   r>   r*   s    ` r   filter_typezAcisDebugger.filter_typeC   s3      >>ZZF2DIIf4EFFFs   :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   sN     6\
v,,,. 	0JD$t|Lb//	0s   9;c              #    K   d|z  }|j                   st        | 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!3D!9:ME#% %'") B))(3=vhZ/?@@EeT*$($6$6u$=Mww-/,33H=.55h?xzAAEB &23I2J!E7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7   )loopr   extendcoedges	next_looppartner_coedgesrQ   r&   )rQ   rd   rb   coedgepartner_coedges        r   rL   zAcisDebugger.partner_facesk   s      "yy,,NN777>>D ,,  	2F"("8"8": 2$))..1112	2s   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    "yy,,NN777>>D ,,  		FKKE\\FLL7699+VEHH:WVHMN"("8"8": &++'--).*;*;)<F588*GTZS[\			 %K	-23T	D 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\
dV4\-D-DT-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||uubeen$uubeen$''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      
Av1FA
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   s     
}}++-
 	ZF ;;D""BBH-dggYbtBEE7"TZZLYY	Z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   s:    &&x0 	F6))+,q0	 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    *2A '  (%
 '/   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   s=      	&JC88C=%%DF#eW%%	&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     &
 kk$G  "F||~E**, 	F25'::"6***QJE	 
 + !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   