
    'j                    t    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dS )    )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d0dZd0dZ	efd1dZ
efd2dZefd3dZed4d5d            Zd4d6dZed7d            Zed8d9d#            Zed4d:d&            Zed;d(            Zd<d)Zd=d+Zd,S )>AcisDebuggerr   rootr   start_idintc                    |dz
  | _         || _        t                      | _        |j        s|                     |           d S d S Nr   )_next_id_rootdictentitiesis_none_store_entities)selfr   r   s      H/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/acis/dbg.py__init__zAcisDebugger.__init__   sM     1!%
/3vv| 	'  &&&&&	' 	'    returnc                    | j         S N)r   r   s    r   r   zAcisDebugger.root   s
    zr   c                0    | xj         dz  c_         | j         S r   )r   r#   s    r   _get_idzAcisDebugger._get_id   s    }r   entityNonec                ,   |j         s$|j        dk    r|                                 |_        || j        |j        <   t	          |                                          D ]7}t          |t                    r |j        dk    r|                     |           8d S )N)	r   idr%   r   varsvalues
isinstancer   r   )r   r&   es      r   r   zAcisDebugger._store_entities    s    ~ 	'&)r//FI#)fi f$$&& 	( 	(A!Z(( (QTRZZ$$Q'''	( 	(r   c                p    | j                                          || _        |                     |           d S r"   )r   clearr   r   )r   r&   s     r   set_entitieszAcisDebugger.set_entities(   s7    
V$$$$$r   Iterator[AcisEntity]c              #  v   K   dfd|j         r| j        }t                       |          E d {V  d S )Nr&   r   c              3     K   | j         rd S | V                      | j                   t          |                                           D ]1}t          |t                    r|j        vr |          E d {V  2d S r"   )r   addr*   r+   r,   r-   r   )r&   r.   _walkdones     r   r6   z AcisDebugger.walk.<locals>._walk.   s      ~ LLLHHVY&\\((** ( (a,, (T1A1A$uQxx'''''''( (r   )r&   r   )r   r   set)r   r   r6   r7   s     @@r   walkzAcisDebugger.walk-   sm      	( 	( 	( 	( 	( 	( 	( < 	:D5;;r   funcCallable[[AcisEntity], bool]Iterator[Any]c              #  x   K   |j         r| j        }t          ||                     |                    E d {V  d S r"   r   r   filterr9   )r   r:   r&   s      r   r?   zAcisDebugger.filter<   sM       > 	 ZF$		& 1 122222222222r   namestrc              #     K   |j         r| j        }t          fd|                     |                    E d {V  d S )Nc                    | j         k    S r"   )type)xr@   s    r   <lambda>z*AcisDebugger.filter_type.<locals>.<lambda>H   s    AFdN r   r>   )r   r@   r&   s    ` r   filter_typezAcisDebugger.filter_typeC   sX       > 	 ZF2222DIIf4E4EFFFFFFFFFFFr   r   indentIterator[str]c              #     K   d|z  }t          |                                           D ]\  }}|dk    r| | d| V  d S )N r*   z: )r+   items)r&   rH   
indent_strr@   datas        r   entity_attributeszAcisDebugger.entity_attributesJ   sl      6\
v,,,,.. 	0 	0JD$t||/////////	0 	0r   facer
   c              #     K   d|z  }|j         st          |                     |                    }d}g }g }|D ]}| j                            |          }	|		|d| dz  }t          |	t                    rJ|                     |	          }
|j        |
v r|                    |           p|                    |           |d| dz  }|rd| d| }| t          |           d| d| V  |j
        }|j         d S d S )	NrK    z face z does not exist;z entity z is not a face;zunlinked partner faces:  >> )r   listpartner_facesr   getr-   r
   r*   appendrA   	next_face)r   rP   rH   rM   rU   errorlinked_partner_facesunlinked_partner_facespface_idpfacereverse_facess              r   face_link_structurez AcisDebugger.face_link_structureR   sr     6\
, 	" !3!3D!9!9::ME#% %'") B B))(33=@h@@@@EeT** B$($6$6u$=$=Mw-//,33H====.55h????AAAAAEE% TS3ISSESSGTGGGGGGGGG>D) , 	" 	" 	" 	" 	"r   Iterator[int]c              #    K   g }| j         }|j        s?|                    d |                                D                        |j        }|j        ?|D ],}|                                D ]}|j         j        j        V  -d S )Nc              3     K   | ]}|V  d S r"    .0cos     r   	<genexpr>z-AcisDebugger.partner_faces.<locals>.<genexpr>p   "      77"2777777r   )loopr   extendcoedges	next_looppartner_coedgesrP   r*   )rP   rk   ri   coedgepartner_coedges        r   rU   zAcisDebugger.partner_facesk   s       "y, 	"NN77777777>D , 	"  	2 	2F"("8"8":": 2 2$).111112	2 	2r      ident	list[str]c           
        g }g }| j         }|j        s?|                    d |                                D                        |j        }|j        ?|D ]}|j        }|j        }|                    d|j         d|j         d|            |	                                D ]8}|j        }	|j        }
|                    d|j         d|	j         d|
            9d|z  fd|D             S )Nc              3     K   | ]}|V  d S r"   rc   rd   s     r   rg   z0AcisDebugger.coedge_structure.<locals>.<genexpr>}   rh   r   zCoedge=z edge=z sense=z    Partner Coedge=rK   c                    g | ]}|z   S rc   rc   )re   line	ident_strs     r   
<listcomp>z1AcisDebugger.coedge_structure.<locals>.<listcomp>   s    333T	D 333r   )
ri   r   rj   rk   rl   edgesenserW   r*   rm   )rP   rq   linesrk   ri   rn   edge1sense1ro   edge2sense2rw   s              @r   coedge_structurezAcisDebugger.coedge_structurev   s9    "y, 	"NN77777777>D , 	"  		 		FKE\FLLM69MMEHMMVMMNNN"("8"8":":  &+'-\.*;\\58\\TZ\\    %K	3333U3333r   ri   r   c                h    d|z  }| |  dt          t                              |                      S )NrK   rS   )rT   r   
loop_edges)ri   rH   rM   s      r   loop_verticeszAcisDebugger.loop_vertices   s:    6\
MdMM\-D-DT-J-J(K(KMMMr   Iterator[list[int]]c              #     K   | j         }|}|j        sS|j        }|j        }|j        }|j        r|j        |j        gV  n|j        |j        gV  |j        }||u rd S |j        Qd S d S r"   )rn   r   ry   start_vertex
end_vertexrz   r*   next_coedge)ri   rn   firstry   svevs         r   r   zAcisDebugger.loop_edges   s      . 
	;D"BB| %uben$$$$uben$$$'F . 
	 
	 
	 
	 
	r   c           
   #     K   d | j                                         D             D ]=}|j        }|j        }|j        }| d|j         d|j         d|j         d|j         	V  >d S )Nc              3  D   K   | ]}t          |t                    |V  d S r"   )r-   r   )re   r.   s     r   rg   z7AcisDebugger.vertex_to_edge_relation.<locals>.<genexpr>   sE       
 
Av1F1F

 
 
 
 
 
r   z: parent edge is z; z => )r   r,   ry   r   r   r*   curve)r   vertexry   r   r   s        r   vertex_to_edge_relationz$AcisDebugger.vertex_to_edge_relation   s      
 
}++--
 
 
 	Z 	ZF ;D"BBYYdgYYYYBEYYTZYYYYYY	Z 	Zr   boolc                    |                      d          D ]*}t          |                                          dk    r dS +dS )Nrn   r   FT)rG   lenrm   )r   rn   s     r   is_manifoldzAcisDebugger.is_manifold   sO    &&x00 	 	F6))++,,q00uu 1tr   N)r   r   r   r   )r    r   )r    r   )r&   r   r    r'   )r   r   r    r2   )r:   r;   r&   r   r    r<   )r@   rA   r&   r   r    r<   )r   )r&   r   rH   r   r    rI   )rP   r
   rH   r   r    rI   )rP   r
   r    r`   )rp   )rP   r
   rq   r   r    rr   )ri   r   rH   r   r    rA   )ri   r   r    r   )r    rI   )r    r   )__name__
__module____qualname__r	   r   propertyr   r%   r   r1   r9   r?   rG   staticmethodrO   r_   rU   r   r   r   r   r   rc   r   r   r   r      s       *2A ' ' ' ' '    X   ( ( ( (% % % %
 '/       HP3 3 3 3 3 /7G G G G G 0 0 0 0 \0" " " " "2 2 2 2 \2 4 4 4 4 \4* N N N N \N    \Z Z Z Z     r   r   rN   bytesr    rI   c              #  ^  K   d }t          j        |           }|                                }|                                E d {V  d}	 |                                D ]}d| V   ||          E d {V  |dz  } d S # t           j        $ r}t          |          V  Y d }~d S d }~ww xY w)Nc              3  ^   K   | D ]'\  }}t          j        |          j        }| d| V  (d S )Nz = )r   Tagsr@   )r.   tagvaluer@   s       r   entity_dataz%dump_sab_as_text.<locals>.entity_data   sP       	& 	&JC8C==%D%%e%%%%%%	& 	&r   r   z--------------------- record: r   )r   Decoderread_headerdumpsread_recordsParsingErrorrA   )rN   r   decoderheaderindexrecordr.   s          r   dump_sab_as_textr      s     & & &
 k$G  ""F||~~E**,, 	 	F:5:::::"{6*********QJEE	 	    !ffs   4B B,B''B,N)rN   r   r    rI   )
__future__r   typingr   r   r   r   r   r	   r
   r   r   r   rR   r   r   r   rc   r   r   <module>r      s    # " " " " " * * * * * * * * * *                     ^ ^ ^ ^ ^ ^ ^ ^B     r   