
    Og                    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lZddlmZ ddlmZmZmZ erd dlmZ  ej(                  d	      Zdd
ZeD  ch c]  } | dz   	 c} ZeD  ch c]  } | dz   	 c} Zej3                  d       eez  ZeZddZdddZd e
ed      iZ	 	 	 	 ddZddZ ddZ!yc c} w c c} w )    )annotations)IterableOptionalTYPE_CHECKINGSequenceAnyIterator)partialN   )DXFTag)POINT_CODESNONE_TAGVALID_XDATA_GROUP_CODES)Tagsezdxfc              #  :  K   d}| D ]  }|j                   dk(  rW|0t        |d   j                        }t        |   |      E d{    d}t        |j                        t        v r#|g}t        }n||j                  |       t        }|t        us|  y7 Tw)zReorder coordinates of legacy DXF Entities, for now only LINE.

    Input Raw tag filter.

    Args:
        tagger: low level tagger

    Nr   )code_svalueCOORDINATE_FIXING_TOOLBOXr   append)tagger	collectortagentitys       W/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/lldxf/repair.pytag_reorder_layerr      s      !%I 88q=$IaL../4V<YGGG 	#))} 99 E	$  %hI%
 Hs   ABBABB
      &   c           	   #    K   dfd}d}d}g }d| D ]  }|d   }|dk(  r||rZ||k7  rUt        |      dkD  r|E d{    n,t        j                  dt        |d           |       z          |j	                          |t
        v r|dz   }|d	z   }|j                  |       ||k(  r|j                  |       |dz  }||kD  sd}|t        vr| |t        v rd
nd}t        j                  d| dt        |        |       z           t        |      dk(  r-t        j                  dt        |d           |       z          yt        |      dkD  r|E d{    yy7 &7 	w)zFilter invalid and misplaced point group codes.

    - removes x-axis without following y-axis
    - removes y- and z-axis without leading x-axis

    Args:
        tagger: low level tagger

    c                 ,     rdt         d          S y)Nzin entity #r    )r   )
handle_tags   r   r   z*filter_invalid_point_codes.<locals>.entityL   s      JqM!2 344    r   N   r   zremove misplaced x-axis tag: r   r   zy-axiszz-axiszremove misplaced z tag: returnstr)	lenloggerinfor*   clearX_CODESr   INVALID_CODESINVALID_Y_CODES)	r   r   expected_codez_codepointr   r   axisr$   s	           @r   filter_invalid_point_codesr6   A   s}     MFEJ 1v19JT]*5zA~   3CaM?CfhN KKM7? 2IMBYFLL]"LLRMv% " =(	#'?#:x'vVCH:>I;B 5zQ3CaM?CfhNO	Ua 
9 !: 	s)   :E(E#BE(BE(E&E(&E(r      c                J  
 fd}d
fd}t         |             }i 
g }d }| D ]E  }|j                  |v r$|
|j                  <   |#| j                  |      }5|j                  |       G t	        
      dk(  r| S g }D ]  }	|j                   ||	              |||| |S )Nc               3  @   K   D ]  } |  | dz    | dz     y wNr   r    )r   codess    r   extend_codesz*fix_coordinate_order.<locals>.extend_codes~   s-      	DJ)O)O	s   c              3     K   	 |     	 | dz       	 | dz       y # t         $ r Y "w xY w# t         $ r Y &w xY w# t         $ r Y y w xY wwr;   )KeyError)r   coordinatess    r   
get_coordsz(fix_coordinate_order.<locals>.get_coords   sx     	d##	dRi((	dRi((  		  		  		sS   A# 
2 
A A	/A/A	>A>A	A
AAAr   )r   int)	frozensetr   indexr   r+   extend)tagsr=   r>   rB   coordinate_codesremaining_tags
insert_posr   ordered_coordsr   rA   s    `        @r   fix_coordinate_orderrL   }   s      !0KNJ '88''$'K!!!ZZ_
!!#&' ;1 N 0j./0,:N:j)r%   LINE)r=   c                    d | D        S )Nc              3  F   K   | ]  }|j                   t        v s|  y w)N)r   r   ).0r   s     r   	<genexpr>z3filter_invalid_xdata_group_codes.<locals>.<genexpr>   s     GC388/F#FCGs   !!r<   )rG   s    r    filter_invalid_xdata_group_codesrR      s     H4GGr%   c           
   #    K   d}d}d}| D ]j  }|dz  }|j                   dk(  r*|j                  }t        |j                        dk(  rd}n)d}n&|j                   |k(  r	 t        |j                  d       | l y # t        $ r= t
        j                  d	t        |j                         d
t        |       d|        Y w xY ww)Nr&   r'   r#      r   DIMSTYLEi      zskipped invalid handle "z" in DXF entity "z" near line )r   r   r   rC   
ValueErrorr,   warning)rG   linehandle_codestructure_tagr   s        r   filter_invalid_handlesr]      s     DKM 	88q=IIM#))}
*!XX$CIIr" 	#  .r#))}o >##%m#4"5\$I s+   ACA92C9AB?<C>B??Cc                L    t        | t              r| j                  dd      S | S )Nasciiignore)encodingerrors)
isinstancebytesdecode)bs    r   r   r      s$    !Uxxx::Hr%   )r   Iterable[DXFTag]r)   Iterator[DXFTag])r   rg   r)   rg   )r7   )rG   r   r=   zSequence[int])rG   rg   r)   rh   r(   )"
__future__r   typingr   r   r   r   r   r	   	functoolsr
   loggingrG   r   typesr   r   r   ezdxf.eztypesr   	getLoggerr,   r   r1   INVALID_Z_CODESremover0   r/   r6   rL   r   rR   r]   r   )r   s   0r   <module>rr      s    #     A A"			7	#B *554"95)454"95   r /1
9x.d G(9 
H
HH0s 65s   B3&B8