
    hJ                    >   S SK Jr  S SKJrJrJr  S SKrS SKrS SKJr  S SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJrJrJrJrJrJrJr  S SKJr  SrSrSr Sr!Sr"Sr#Sr$Sr% " S S5      r&SS jr'S S jr(S!S jr)Sr*Sr+ " S S5      r, S"   S#S jjr-S$S jr.g)%    )annotations)IterableSequenceOptionalN)colors)Vec2)const)TextEntityAlignment)print_bitmask)MLeaderStyleOverrideOVERRIDE_FLAG)EdgePathPolylinePathLineEdgeArcEdgeEllipseEdge
SplineEdgemleader)
DXFPolygonEDGE_START_MARKEREDGE_END_MARKERHATCHPOLYLINE_MARKERLINE_MARKER
ARC_MARKERELLIPSE_MARKERSPLINE_MARKERc                      \ rS rSrSSS.   SS jjrS rS rSS jrSS	 jrSS
 jr	SS jr
SS jr          SS jrSS jrSS jrSS jrS S jrS!S jrS"S jr\S#S j5       r\SS j5       rSrg)$HatchAnalyzer$         ?-   )marker_sizeanglec                   Xl         X l        [        R                  " 5       U l        U R                  R                  5       U l        U R                  5         U R                  5         g N)	r#   r$   ezdxfnewdoc
modelspacemspinit_layersinit_markers)selfr#   r$   s      E/var/www/html/env/lib/python3.13/site-packages/ezdxf/tools/analyze.py__init__HatchAnalyzer.__init__%   sH     '
99;88&&(    c                r   U R                   R                  R                  [        [        R
                  S9  U R                   R                  R                  [        [        R                  S9  U R                   R                  R                  [        [        R                  S9  U R                   R                  R                  [        [        R                  S9  U R                   R                  R                  [        [        R                  S9  U R                   R                  R                  [        5        g N)color)r)   layersaddPOLYLINE_LAYERr   YELLOW
LINE_LAYERRED	ARC_LAYERGREENELLIPSE_LAYERMAGENTASPLINE_LAYERCYANHATCH_LAYERr.   s    r/   r,   HatchAnalyzer.init_layers2   s    N&--@Jfjj9IV\\:M@L<K(r2   c                   U R                   R                  R                  [        5      nSS0nU R                  S-  nUnUR                  SUUS9  US-  nUR                  US4XSS-  -
  S4US9  UR                  S	US
9nXFR                  l	        UR                  US4[        R                  S9  U R                   R                  R                  [        5      nSS0nUR                  U* U* 4X34US9  UR                  U* U4X3* 4US9  U* S-  nUR                  U* S4XSS-  -   S4US9  UR                  S	US
9nXFR                  l	        UR                  US4[        R                  S9  g )Nlayer0       @r   r   centerradius
dxfattribs   r   )startendrM   NAME)tagrM   )align)r)   blocksr(   r   r#   
add_circleadd_line
add_attdefdxfheightset_placementr
   MIDDLE_LEFTr   MIDDLE_RIGHT)r.   blkattribsrL   rY   
text_starttexts          r/   r-   HatchAnalyzer.init_markers:   s   hhoo!!"34C.!!C' 	 	 	

 aZ
1+sl*A. 	 	

 ~~  
 !O#6#B#B 	 	

 hhoo!!/2C.7VG$  	 	

 	7F#! 	 	

 Wq[
7A,sl*A. 	 	

 ~~  
 !O#6#C#C 	 	
r2   c                :    U R                   R                  U5        g r&   )r)   saveas)r.   names     r/   exportHatchAnalyzer.exportq   s    r2   c                    UR                   R                  S5        [        UR                   l        U R                  R                  U5        g )N	extrusion)rX   discardrB   rF   r+   add_foreign_entity)r.   hatchs     r/   	add_hatchHatchAnalyzer.add_hatcht   s1    		+&%		##E*r2   c                8   UR                   R                  S5        SnUR                   Hm  nUS-  n[        U[        5      (       a  U R                  X25        M0  [        U[        5      (       a  U R                  X25        MX  [        S[        U5       35      e   g )Nrh   r      zunknown boundary path type: )
rX   ri   paths
isinstancer   add_polyline_markersr   add_edge_markers	TypeErrortype)r.   rk   path_numps       r/   add_boundary_markers"HatchAnalyzer.add_boundary_markersy   s}    		+&AMH!\**))!6Ax((%%a2">tAwi HII r2   c                2    U R                  [        XU5        g r&   )
add_markerr   r.   locationrd   rF   s       r/   add_start_markerHatchAnalyzer.add_start_marker   s    )85Ar2   c                2    U R                  [        XU5        g r&   )r{   r   r|   s       r/   add_end_markerHatchAnalyzer.add_end_marker   s    ?r2   c                z    U R                   R                  UUUU R                  S.S9nUR                  SU05        g )N)rF   rotation)rd   insertrM   rQ   )r+   add_blockrefr$   add_auto_attribs)r.   blk_namer}   rd   rF   blkrefs         r/   r{   HatchAnalyzer.add_marker   sF     && JJ ' 
 	/r2   c                    U R                  [        UR                  S   5      SU S3[        5        U R	                  [        UR                  S   5      SU S3[        5        g )Nr   zPoly-S()zPoly-E()r~   r   verticesr8   r   )r.   rw   nums      r/   rr   "HatchAnalyzer.add_polyline_markers   sZ    A73%q!1>	
 	A73%q!1>	
r2   c                   SnUR                    H  nUS-  nSU SU S3n[        U[        5      (       a  U R                  XE5        M9  [        U[        5      (       a  U R                  XE5        Ma  [        U[        5      (       a  U R                  XE5        M  [        U[        5      (       a  U R                  XE5        M  [        S[        U5       35      e   g )Nr   ro   (.r   zunknown edge type: )edgesrq   r   add_line_edge_markersr   add_arc_edge_markersr   add_ellipse_edge_markersr   add_spline_edge_markersrt   ru   )r.   rw   r   edge_numedgerd   s         r/   rs   HatchAnalyzer.add_edge_markers   s    GGDMHse1XJa(D  **46D'**))$5D+..--d9D*--,,T8"5d4j\ BCC r2   c                    U R                  UR                  SU-   [        5        U R                  UR                  SU-   [        5        g )NzLine-SzLine-E)r~   rO   r:   r   rP   )r.   linerd   s      r/   r   #HatchAnalyzer.add_line_edge_markers   s6    djj(T/:FDHHhozBr2   c                    U R                  UR                  SU-   [        5        U R                  UR                  SU-   [        5        g )NzArc-SzArc-E)r~   start_pointr<   r   	end_point)r.   arcrd   s      r/   r   "HatchAnalyzer.add_arc_edge_markers   s6    coow~yICMM7T>9Er2   c                    U R                  UR                  SU-   [        5        U R                  UR                  SU-   [        5        g )Nz	Ellipse-Sz	Ellipse-E)r~   r   r>   r   r   )r.   ellipserd   s      r/   r   &HatchAnalyzer.add_ellipse_edge_markers   sD    t!3]	
 	{T1=	
r2   c                    [        UR                  5      (       aI  U R                  UR                  SU-   [        5        U R                  UR                  SU-   [        5        g g )NSplineSSplineE)lencontrol_pointsr~   r   r@   r   r   )r.   splinerd   s      r/   r   %HatchAnalyzer.add_spline_edge_markers   s\    v$$%% !!""I$4l   )d"2L &r2   c                    [        U 5      $ r&   )hatch_reportrk   s    r/   reportHatchAnalyzer.report   s    E""r2   c                J    [        SR                  [        U 5      5      5        g N
)printjoinr   r   s    r/   print_reportHatchAnalyzer.print_report   s    diiU+,-r2   )r$   r)   r#   r+   N)r#   floatr$   r   )rd   strreturnNone)rk   r   r   r   )r}   r   rd   r   rF   r   r   r   )
r   r   r}   r   rd   r   rF   r   r   r   )rw   r   r   intr   r   )rw   r   r   r   r   r   )r   r   rd   r   r   r   )r   r   rd   r   r   r   )r   r   rd   r   r   r   )r   r   rd   r   r   r   rk   r   r   	list[str])__name__
__module____qualname____firstlineno__r0   r,   r-   re   rl   rx   r~   r   r{   rr   rs   r   r   r   r   staticmethodr   r   __static_attributes__ r2   r/   r   r   $   s     !	  	)5
n+
JB@00'+0360?B0	0
D&CF
	 # # . .r2   r   c                   U R                   n[        R                  UR                     n[        R                  UR
                     n[        U 5       S[        UR                  5       3SU 3SUR                   3S[        UR                  5       3SU 3SU R                  S L 3SU R                  S L 3S[        U R                  5       3S	[        U R                  5       3/
nS
nU R                   Hj  nUS-  n[!        U["        5      (       a  UR%                  ['        Xe5      5        M9  [!        U[(        5      (       d  MP  UR%                  [+        Xe5      5        Ml     U$ )Nz   solid fill: z   pattern type: z   pattern name: z   associative: z   island detection: z   has pattern data: z   has gradient data: z   seed value count: z   boundary path count: r   ro   )rX   r	   ISLAND_DETECTIONhatch_styleHATCH_PATTERN_TYPEpattern_typer   bool
solid_fillpattern_nameassociativepatterngradientr   seedsrp   rq   r   extendpolyline_path_reportr   edge_path_report)rk   rX   styler   r`   r   paths          r/   r   r      sE   
))C""3??3E++C,<,<=Lu:,
$s~~./0
L>*
C,,-.
4012
w'
T 9:;
 t!; <=
EKK 012
"3u{{#3"45D CqdL))KK,T78h''KK(34  Kr2   c                    SR                  [        R                  " U R                  5      5      nU S[	        U R
                  5       3SU 3/$ )N, z. Polyline Path, vertex count: #   path type:                      )r   r	   boundary_path_flag_namespath_type_flagsr   r   )rw   r   	path_types      r/   r   r      sM    		%889J9JKLI%.s1::.?@
-i[9 r2   c           	        SnSnSR                  [        R                  " U R                  5      5      nU R                  n[        U5      (       aI  US   R                  R                  US   R                  5      n[        S [        XUSS  5       5       5      nU S[        U R                  5       3SU 3S	U 3S
U 3/$ )NFr   r   c              3  p   #    U  H,  u  pUR                   R                  UR                  5      v   M.     g 7fr&   )r   iscloser   ).0e1e2s      r/   	<genexpr>#edge_path_report.<locals>.<genexpr>  s/      
/ LL  00/s   46ro   z. Edge Path, edge count: r   z#   continuously connected edges:   z#   closed edge loop:               )r   r	   r   r   r   r   r   r   r   allzip)rw   r   closed	connectedr   r   s         r/   r   r      s    FI		%889J9JKLIGGE
5zzq%%--eBi.A.AB 
e12Y/
 
	 %(QWW7
-i[9
-i[9
-fX6	 r2   MULTILEADER_MARKERPOINT_MARKERc                  @   \ rS rSrSrSSS.     S$S jjrS rS r\S%S	 j5       r	\S&S
 j5       r
S'S(S jjrS)S jrS*S jrS+S jrS rS*S jrS*S jrS rS rS*S jrS rS*S jrS rS*S jrS rS*S jr      S,S jrS*S jrS rS*S jrS*S jrS  r S*S! jr!S"r"g#)-MultileaderAnalyzeri  zxMultileader can not be added as foreign entity to a new document.
Annotations have to be added to the source document.

r!   O   )r#   report_widthc                  X l         X0l        Xl        U R                  R                  c   S5       eU R                  R                  U l        U R                  R	                  5       U l        U R                  5         U R                  5         g )Nzvalid DXF document required)r#   r   multileaderr)   r*   r+   r,   r-   )r.   r   r#   r   s       r/   r0   MultileaderAnalyzer.__init__  ss     '(&##/N1NN/##''88&&(r2   c                    U R                   R                  R                  [        5      (       a  g U R                   R                  R	                  [        [
        R                  S9  g r4   )r)   r6   	has_entryMULTILEADERr7   r   r;   rC   s    r/   r,   MultileaderAnalyzer.init_layers(  s=    88??$$[11Kvzz:r2   c                B   [         U R                  R                  ;  a  U R                  R                  R                  [         5      nSS0nU R                  nUS-  nUS-  nUR                  SUUS9  UR                  U* S4US4US9  UR                  SU* 4SU4US9  g g )	NrF   rG   rH   g      @rI   rJ   r   )rM   )r   r)   rT   r(   r#   rU   rV   )r.   r]   r^   sizesize_2rL   s         r/   r-    MultileaderAnalyzer.init_markers-  s    txx.((//%%l3CnG##DCZFCZFNN"  
 LL6'1{wLGLL!fW6{wLG /r2   c                .    U R                   R                  $ r&   )r   contextrC   s    r/   r   MultileaderAnalyzer.context<  s    '''r2   c                    U R                   R                  R                  S5      nU R                  R                  R                  U5      $ )Nstyle_handle)r   rX   getr)   entitydb)r.   handles     r/   mleaderstyle MultileaderAnalyzer.mleaderstyle@  s9    !!%%)).9xx  $$V,,r2   c                    XR                   -  $ r&   )r   )r.   symbols     r/   divider_line MultileaderAnalyzer.divider_lineE  s    ))))r2   c                j    U Vs/ s H!  n[         R                  " X R                  S9PM#     sn$ s  snf )N)width)textwrapshortenr   )r.   linesr   s      r/   shorten_lines!MultileaderAnalyzer.shorten_linesH  s4    HM
HMHT):):;
 	
 
s   (0c                R   [        U R                  5      U R                  5       SU R                  5       /nUR                  U R	                  5       5        UR                  U R                  5       5        U R                  R                  b  UR                  U R                  5       5        U R                  R                  bY  UR                  U R                  5       5        U R                  R                  (       a  UR                  U R                  5       5        U R                  R                  R                  (       a  UR                  U R                  5       5        U R                  R                  (       a  UR                  U R                  5       5        U R!                  U5      $ )NzExisting DXF attributes:)r   r   r  r   multileader_attributescontext_attributesr   mtextmtext_attributesblockblock_attributesblock_attribsblock_reference_attribsleadersleader_attributesarrow_headsr  )r.   r   s     r/   r   MultileaderAnalyzer.reportM  s+     !&	
 	d1134d--/0<<)MM$//12<<)MM$//12--d::<=##++MM$0023''MM$**,-!!&))r2   c                    U R                   n[        5         [        SU-  5        [        SR                  U R                  5       5      5        [        SU-  5        g )N=r   )r   r   r   r   )r.   r  s     r/   r    MultileaderAnalyzer.print_reportb  sA    !!cEkdii&'cEkr2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   overridden_attributesrC   s    r/   print_overridden_properties/MultileaderAnalyzer.print_overridden_propertiesi  s    dii22456r2   c                L   U R                   nU R                  nUb  U R                  5       S[        U5       SUR                  R
                   S3U R                  5       /n[        X!5      n[        R                  " 5        H@  nUR                  U5      (       d  M  UR                  U SUR                  U5       35        MB     UR                  (       a  UR                  S5        U$ U R                   R                  R                  S5      nU R                  5       SU S3/nU$ )	NzOverride attributes of z: '': zuse_mtext_default_content: 1r   MLEADERSTYLE(#) not found)r   r  r  r   rX   rd   r   r   keysis_overriddenappendr  use_mtext_default_content)r.   r   r   r   overriderd   r  s          r/   r"  )MultileaderAnalyzer.overridden_attributesl  s   &&!!!!#)#e*S8HJ!!#F ,E?H%**,))$//MMTF"X\\$-?,@"AB - 11<=  %%))--n=F!!# 4F r2   c                    U R                   R                  R                  5       n[        UR	                  5       5      nU Vs/ s H  o3 SX    3PM     sn$ s  snf Nr'  )r   rX   all_existing_dxf_attribssortedr*  )r.   r^   r*  keys       r/   r  *MultileaderAnalyzer.multileader_attributes  sO    ""&&??Aglln%489DS%r',(D999s   Ac                    U R                   R                  R                  n[        S5        [        SU 35        [        S[	        U5       35        [        U5        g )Nz
property_override_flags:zdec: zhex: )r   rX   property_override_flagsr   hexr   )r.   flagss     r/   print_override_state(MultileaderAnalyzer.print_override_state  sK      $$<<*,eWoc%j\"#er2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   r  rC   s    r/   print_context_attributes,MultileaderAnalyzer.print_context_attributes  s    dii//123r2   c           	        U R                   nUc  / $ U R                  5       SU R                  5       S[        UR                  5       3S[        UR                  5       3U R                  5       /nUR
                  R                  5        Vs/ s H  nUS;  d  M  UPM     nnU Vs/ s H  oU S[        X5       3PM     nnUR                  5         UR                  U5        U R                  U5      $ s  snf s  snf )NzCONTEXT object attributes:zhas MTEXT content: zhas BLOCK content: )r  r  r  r'  )r   r  	yes_or_nor  r  __dict__r*  getattrsortr   r  )r.   r   r   r4  r*  rd   
attributess          r/   r  &MultileaderAnalyzer.context_attributes  s    ,,?I(!)GMM":!;<!)GMM":!;<
 '',,.
.77 . 	 

 GKKddb!7 89d
Kj!!!&))

 Ls   
C3C3&C8c                T    [        SR                  U R                  5       5      5        g r   )r   r   r  rC   s    r/   print_mtext_attributes*MultileaderAnalyzer.print_mtext_attributes      dii--/01r2   c                    U R                  5       SU R                  5       /nU R                  R                  nUb  UR                  [	        U5      5        U R                  U5      $ )NzMTEXT content attributes:)r  r   r  r   _content_attributesr  )r.   r   r  s      r/   r  $MultileaderAnalyzer.mtext_attributes  ^    '

 ""MM-e45!!&))r2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   r  rC   s    r/   print_block_attributes*MultileaderAnalyzer.print_block_attributes  rI  r2   c                    U R                  5       SU R                  5       /nU R                  R                  nUb  UR                  [	        U5      5        U R                  U5      $ )NzBLOCK content attributes:)r  r   r  r   rK  r  )r.   r   r  s      r/   r  $MultileaderAnalyzer.block_attributes  rM  r2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   r  rC   s    r/   print_leader_attributes+MultileaderAnalyzer.print_leader_attributes  s    dii..012r2   c                    / nU R                   R                  nUb4  [        U5       H%  u  p4UR                  U R	                  X45      5        M'     U R                  U5      $ r&   )r   r  	enumerater   _leader_attributesr  )r.   r   r  indexleaders        r/   r  %MultileaderAnalyzer.leader_attributes  sU    ,,&&!*7!3d55eDE "4!!&))r2   c                x   U R                  5       US-    S3U R                  5       /nUR                  [        USS95        SR                  [	        [
        UR                  5      5      nUR                  SU S35        UR                  (       a*  UR                  U R                  UR                  5      5        U$ )Nro   z. LEADER attributes:)r  breaks)excluder   z	breaks: [])
r  r   rK  r   mapr   r]  r,  r  _leader_lines)r.   rY  rZ  r   ss        r/   rX  &MultileaderAnalyzer._leader_attributes  s     Qwi+,

 	)&:MNOIIc#v}}-.	!A&'<<MM$,,V\\:;r2   c                   / n[        U5       H  u  p4UR                  U R                  5       US-    S3U R                  5       /5        UR                  R	                  5        HW  u  pVUS;   a+  SnUb  SR                  [        [        U5      5      nSU S3nO[        U5      nUR                  U SU 35        MY     M     U$ )	Nro   z. LEADER LINE attributes:)r   r]   r   [r_  r'  )	rW  r   r  rA  itemsr   r`  r   r,  )r.   r  r   r   r   rd   valuevstrs           r/   ra  !MultileaderAnalyzer._leader_lines  s    "5)ICMM%%'Qwi89%%'  $}}22411D(#yyS%9tfA;Du:Db/0  5 *" r2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   r  rC   s    r/   print_block_attribs'MultileaderAnalyzer.print_block_attribs      dii44678r2   c                   U R                  5       SU R                  5       /n[        U R                  R                  5       H  u  p#UR	                  US-    S3U R                  5       /5        UR                  SUR                   35        UR                  SUR                   35        UR                  SUR                   35        UR                  SUR                   35        M     U$ )NzBLOCK reference attributes:ro   z. Attributeshandle: index: zwidth: ztext: )
r  rW  r   r  r   r,  r  rY  r  r`   r.   r   rY  attrs       r/   r  +MultileaderAnalyzer.block_reference_attribs  s    )

 %T%5%5%C%CDKEMMQwi|,%%' MMHT[[M23MMGDJJ<01MMGDJJ<01MMF499+./ E r2   c                ^   U R                  5       SU R                  5       /n[        U R                  R                  5       Hh  u  p#UR	                  US-    S3U R                  5       /5        UR                  SUR                   35        UR                  SUR                   35        Mj     U$ )NzARROW HEAD attributes:ro   z. Arrow Headrp  rq  )r  rW  r   r  r   r,  r  rY  rr  s       r/   r  MultileaderAnalyzer.arrow_heads
  s    $

 %T%5%5%A%ABKEMMQwi|,%%' MMHT[[M23MMGDJJ<01 C r2   c                T    [        SR                  U R                  5       5      5        g r   )r   r   mleaderstyle_attributesrC   s    r/   print_mleaderstyle&MultileaderAnalyzer.print_mleaderstyle  rn  r2   c           	        / nU R                   nUb  UR                  U R                  S5      [        U5      U R                  S5      /5        UR                  R                  5       n[        UR                  5       5      nUR                  U Vs/ s H  oU SX5    3PM     sn5        O:U R                  R                  R                  S5      nUR                  SU S35        U R                  U5      $ s  snf )Nr  r'  r   r(  r)  )r  r   r  r   rX   r2  r3  r*  r   r  r,  r  )r.   r   r   r^   r*  rd   r  s          r/   rx  +MultileaderAnalyzer.mleaderstyle_attributes  s    !!MM%%c*J%%c* ii88:G',,.)DMM$G$$V2gm_5$GH%%))--n=FMMN6(+>?!!&))	 Hs   C4)r)   r#   r+   r   r   N)r   zmleader.MultiLeaderr#   r   r   r   )r   zmleader.MLeaderContext)r   zOptional[mleader.MLeaderStyle])-r   r   )r  zIterable[str]r   r   )r   r   )r   r   )rY  r   rZ  zmleader.LeaderDatar   r   )#r   r   r   r   __doc__r0   r,   r-   propertyr   r  r  r  r   r   r#  r"  r  r:  r=  r  rG  r  rO  r  rT  r  rX  ra  rl  r  r  ry  rx  r   r   r2   r/   r   r     s     !( 	
  ;
H ( ( - -*

**70:
4*,2	*2	*3*"4	*9&"9*r2   r   c                    U=(       d    / nU b;  U R                   R                  5        VVs/ s H  u  p#X!;  d  M  U SU 3PM     snn$ / $ s  snnf r1  )rA  rg  )entityr^  rd   rh  s       r/   rK  rK  2  sc     mG  &446
6" tfBug6
 	

 I
s
   AAc                    U (       a  S$ S$ )Nyesnor   )datas    r/   r@  r@  ?  s    5"d"r2   r   )rw   r   r   r   r   r   )rw   r   r   r   r   r   r&   )r^  zOptional[Sequence[str]]r   r   r~  )/
__future__r   typingr   r   r   r  r'   r   
ezdxf.mathr   ezdxf.lldxfr	   ezdxf.enumsr
   ezdxf.tools.debugr   ezdxf.render.mleaderr   r   ezdxf.entitiesr   r   r   r   r   r   r   ezdxf.entities.polygonr   r   r   rB   r8   r:   r<   r>   r@   r   r   r   r   r   r   r   rK  r@  r   r2   r/   <module>r     s    # / /      + + D   .' #"
	 q. q.h4( #]* ]*B	 04
,

#r2   