
    hD                       % S SK Jr  S SKrS SKrS SKJrJrJrJrJ	r	  S SK
r
S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SKrS SKJr  S SKJr  S SKJrJrJr  S SKJr  \(       a  S S	KJr  S S
KJrJ r   SS/r!\RD                  " S5      r#S0S jr$S1S jr%S2S jr& " S S5      r'\(" 5       r)S\*S'   S3S jr+\+ " S S\'5      5       r,S4S jr-Sr.Sr/\+ " S S\'5      5       r0\+ " S S\'5      5       r1\+ " S S \'5      5       r2\+ " S! S"\'5      5       r3\+ " S# S$\'5      5       r4\+ " S% S&\'5      5       r5S4S' jr6\+ " S( S)\'5      5       r7\+ " S* S+\'5      5       r8S5S, jr9S6S- jr:S. r;S/ r<g)7    )annotationsN)CallableOptionalTYPE_CHECKINGTypeSequencePath)recover)const)is_dxf_fileis_binary_dxf_filedxf_info)dwg_file_info)
DXFGraphic)
PropertiesLayerPropertiesgetadd_parsersezdxfc                T    [         R                  U 5      nU(       a  UR                  $ g N)	_commandsr   run)cmdclss     @/var/www/html/env/lib/python3.13/site-packages/ezdxf/commands.pyr   r   (   s    
--
C
ww    c                    [         R                  5        H  n UR                  U 5        M     g ! [         a'    [        R                  SUR                   S35         MJ  f = f)NzImportError - 'z' command not available)r   values
add_parserImportErrorloggerinfoNAME)
subparsersr   s     r   r   r   /   sT    !	MNN:& "  	MKK/#((3JKL	Ms   /-A A c                     [        U SSS9 n[        U5      nS S S 5        WR                  [        R
                  :*  $ ! , (       d  f       N+= f! [         a     gf = f)Nrtignore)errorsF)openr   IOErrorversionr   DXF12)filenamefpr$   s      r   is_dxf_r12_filer1   7   sR    (D2bB<D 3 <<5;;&&	 32 s+   A >A 
AA A 
AAc                      \ rS rSrSrSr\\R                  SS j5       5       r	\\R                  SS j5       5       r
Srg)	Command@   z)abstract base class for launcher commandscommandc                    g r    )r&   s    r   r!   Command.add_parserE        	r   c                    g r   r7   )argss    r   r   Command.runJ   r9   r   r7   NreturnNone)__name__
__module____qualname____firstlineno____doc__r%   staticmethodabcabstractmethodr!   r   __static_attributes__r7   r   r   r3   r3   @   sL    3D     r   r3   zdict[str, Type[Command]]r   c                ,    U [         U R                  '   U $ )z Register a launcher sub-command.)r   r%   )r   s    r   registerrJ   S   s    IchhJr   c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)AuditY   zLauncher sub-command: auditauditc                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SS9  UR                  SSS
SS9  g )Nzaudit and repair DXF fileshelpfilesFILE+zaudit DXF filesmetavarnargsrQ   -sz--save
store_truez/save recovered files with extension ".rec.dxf" actionrQ   -xz	--explorezTfilters invalid DXF tags, this may load corrupted files but data loss is very likely)r!   rL   r%   add_argumentr&   parsers     r   r!   Audit.add_parser_   s    &&uzz8T&U"	 	 	
 	B	 	 	
 	'	 	 	
r   c                4  ^ ^^^ S
S jmS mS mSU UUU4S jjnT R                    H  n[        [        R                  " U5      5      n[        U5      S:X  a(  SU S3n[	        U5        [
        R                  U5        MY  U H  n[        R                  R                  U5      (       d(  SU S3n[	        U5        [
        R                  U5        MO  [        U5      (       d(  SU S	3n[	        U5        [
        R                  U5        M  U" U5        M     M     g )Nc                b    [        U 5      n[        UR                  UR                  S-   -  5      $ )Nz.rec.dxf)r
   strparentstem)nameps     r   build_outname Audit.run.<locals>.build_outnamex   s(    T
Aqxx166J#6788r   c                n    U R                    H%  n[        R                  SUR                  -   5        M'     g )Nzfixed:)fixesr#   r$   messageauditorerrors     r   	log_fixesAudit.run.<locals>.log_fixes|   s%     Hu}}45 'r   c                h    U R                    H"  n[        R                  UR                  5        M$     g r   )r*   r#   ro   rl   rm   s     r   
log_errorsAudit.run.<locals>.log_errors   s      U]]+ (r   c           	     L  > SU  3n[        U5        [        R                  U5        TR                  (       a  [        R                  S5        TR                  (       a  [        R                  O[        R
                  n U" U 5      u  p4UR                  (       a  UR                  5         T	" U5        UR                  (       a  UR                  5         T
" U5        UR                  SL a  UR                  SL a  [        S5        O8[        S[        UR                   5       S[        UR"                  5       S	35        TR$                  (       a*  T" U 5      n UR'                  U5        [        S
U S35        g g ! [         a%    Sn[        U5        [        R                  U5         g [        R                   a8  nS[        U5       3n[        U5        [        R                  U5         S nAg S nAff = f! [         a$  n[        SU S[        U5       35         S nAg S nAff = f)Nzauditing file: z$explore mode - skipping invalid tagsz&Not a DXF file or a generic I/O error.zInvalid or corrupted DXF file: FzNo errors found.zFound z errors, applied z fixeszSaved recovered file as: ''zCan not save recovered file 'z':
)printr#   r$   explorer   readfiler,   ro   r   DXFStructureErrorrc   
has_errorsprint_error_report	has_fixesprint_fixed_errorslenr*   rk   savesaveas)r/   msgloaderdocrn   eoutnamer;   rh   rs   rp   s          r   _auditAudit.run.<locals>._audit   s   #H:.C#JKK||BC(,W__':J:JF%h/ !!**,7#  **,'"!!U*w/@/@E/I()S01 2"7==12&:
 yy'1CJJw' 6wiqAB 5  >c
S!** 7Ax@c
S!	2  Q9'$s1vhOPPQs6   ?
E9 G5 9,G2'G2:.G--G25
H#?HH#r   z	File(s) 'z' not found.zFile 'z' is not a DXF file.)rf   rc   r>   rc   )r/   rc   r>   r?   )rR   listglobr   rw   r#   ro   ospathexistsr   )	r;   r   patternnamesr   r/   rh   rs   rp   s	   `     @@@r   r   	Audit.runv   s    	9	6	,*	C *	CX zzG7+,E5zQ!',7c
S!!ww~~h//"8*L9C#JLL%"8,,"8*,@AC#JLL%x  " "r   r7   N
r@   rA   rB   rC   rD   r%   rE   r!   r   rH   r7   r   r   rL   rL   Y   s2    %D
 
, K! K!r   rL   c                    [         R                  " U 5      u  pWR                  (       a9  S[        UR                  5       S3n[        U5        [        R                  U5        UR                  (       a9  S	[        UR                  5       S
3n[        U5        [        R!                  U5        WU4$ ! [         a7    SU  S3n[        U[        R
                  S9  [        R                  " S5         N[        R                   a8    SU  S3n[        U[        R
                  S9  [        R                  " S5         GN"f = f)N(Not a DXF file or a generic I/O error: ""file    Invalid or corrupted DXF file: "   Audit process found  unrecoverable error(s).Audit process fixed 
 error(s).)r   ry   r,   rw   sysstderrexitr   rz   r{   r   r*   r#   ro   r}   rk   r$   )r/   r   rn   r   s       r   load_documentr      s    	''1 $S%8$99QRc
S$S%7$8
Cc
C<%  8
!Dc

#"" 0
!<c

#s   B2 2>D=2AD=<D=zselect the line type rendering method, default is approximate. Approximate uses the closest approximation available to the backend, the accurate method renders as accurately as possible but this approach is slower.zKset custom line weight scaling, default is 0 to disable line weights at allc                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Draw   zLauncher sub-command: drawdrawc                   U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	/ S
QSS9  UR                  SSSS9  UR                  SSSSS9  UR                  SS/ SQSS9  UR                  SSSS9  UR                  SSSS9  UR                  SSS [        R
                  S!S"9  UR                  S#[        S$S%S&9  UR                  S'S(SS)S9  UR                  S*S+SS,S9  g )-Nz-draw and save DXF as a bitmap or vector imagerP   r   rS   ?zDXF file to view or convertrU   z	--backend
matplotlib)r   qtmupdf
custom_svgz'choose the backend to use for rendering)defaultchoicesrQ   z	--formatsrY   z*show all supported export formats and exitrZ   -l--layoutModel-select the layout to draw, default is "Model"r   rQ   z--backgroundDEFAULT)r   WHITEBLACK
PAPERSPACE
MODELSPACEOFFCUSTOMz"choose the background color to usez--all-layers-visiblez6draw all layers including the ones marked as invisiblez--all-entities-visiblezdraw all entities including the ones marked as invisible (some entities are individually marked as invisible even if the layer is visible)z-oz--outFzoutput filename for export)requiredtyperQ   --dpii,  z(target render resolution, default is 300r   r   rQ   -f--forcez.overwrite the destination if it already exists-v	--verbosegive more output)r!   r   r%   r]   pathlibr
   intr^   s     r   r!   Draw.add_parser   s   &&IIK ' 
 	.	 	 	
 	 ?:	 	 	
 	= 	 	

 	@	 	 	
 	 6 	 	
 	"I 	 	

 	$' 	 	
 	- 	 	
 	;	 	 	
 	A	 	 	
 	#	 	 	
r   c           
         SSK JnJn  SSKJnJn  SSKJnJnJ	nJ
nJn	  U R"                  S:X  a   W" U R$                  5      nOU R"                  S:X  a   W" U R$                  5      nO\U R"                  S:X  a   W	" U R$                  5      nO8U R"                  S	:X  a  W" U R$                  5      nO['        U R"                  5      eU R(                  nU(       a"  [*        R,                  " [*        R.                  S
9  U R0                  (       aY  [        SU R"                   S35        WR3                  5        H  u  p[        SU SU 35        M     [        R                   " S5        U R4                  (       a  U R4                  nO![        S5        [        R                   " S5        [        SW S35        [7        U5      u  nn UR8                  R;                  U R<                  5      nW" U5      nW" 5       RC                  WU RD                     S9nWR#                  5       nU RF                  (       a  S,S jnURI                  U5        W" UUUS9nU RJ                  (       a  S-S jnURM                  U5        [N        RP                  " 5       nU(       a  [        SWR@                   S35        URS                  WSS9  [N        RP                  " 5       nU(       a  [        SUU-
  S S35        U RT                  Gbj  [V        RX                  " U RT                  5      RZ                  UR3                  5        VVs1 s H  u  nnSU 3iM     snn;  a;  [        S U RT                   S!U R"                   35        [        R                   " S5        U RT                  R]                  5       (       aA  U R^                  (       d0  [        S"U RT                   S#35        [        R                   " S5        g [        S$U RT                   S35        [N        RP                  " 5       nURa                  U RT                  5        [N        RP                  " 5       nU(       a  [        SUU-
  S S35        g g [        S%5        [V        RX                  " [b        Rd                  " S&S'95      nUS(URg                  5        3-  nURa                  U5        [        S)U S*35        U(       a  [        S+5        W" U5        g ! [         a5  n
[        [        U
5      5        [        R                   " S5         S n
A
GNS n
A
ff = f! [         a5  n
[        [        U
5      5        [        R                   " S5         S n
A
GNS n
A
ff = f! [         a5  n
[        [        U
5      5        [        R                   " S5         S n
A
GNS n
A
ff = f! [         a5  n
[        [        U
5      5        [        R                   " S5         S n
A
GN S n
A
ff = f! [>         a`    [        SU R<                   SUR8                   Vs/ s H  nUR@                  PM     Os  snf sn 35        [        R                   " S5         GNpf = fs  snnf ).Nr   )RenderContextFrontend)ConfigurationBackgroundPolicy)	open_fileMatplotlibFileOutputPyQtFileOutputSvgFileOutputMuPDFFileOutput   r   r   r   r   )levelzformats supported by :z  z: zargument FILE is requiredzloading file "z"...zCould not find layout "z". Valid layouts: )background_policyc                $    U  H
  nSUl         M     g NT
is_visible)layer_properties
propertiess     r   override_layer_properties+Draw.run.<locals>.override_layer_properties  s    "2J,0J) #3r   )configc                    SUl         g r   r   )entityr   s     r   override_entity_properties,Draw.run.<locals>.override_entity_properties  s
    (,
%r   zdrawing layout 'z' ...T)finalizeztook z.4fz seconds.zthe format of the output path "z"" is not supported by the backend zthe destination "z" already exists. Not writingzexporting to "zexporting to temporary file...
ezdxf_draw)prefixzoutput.z
saved to "r   zopening viewer...)r   zSequence[LayerProperties]r>   r?   )r   r   r   r   r>   r?   )4ezdxf.addons.drawingr   r   ezdxf.addons.drawing.configr   r    ezdxf.addons.drawing.file_outputr   r   r   r   r   r"   rw   rc   r   r   backenddpi
ValueErrorverboseloggingbasicConfigINFOformatssupported_formatsr   r   layoutsr   layoutKeyErrorrf   with_changes
backgroundall_layers_visibleset_layer_properties_overrideall_entities_visiblepush_property_override_functiontimeperf_counterdraw_layoutoutr   r
   suffixr   forcer   tempfilemkdtempdefault_format)r;   r   r   r   r   r   r   r   r   r   r   file_outputr   	extensiondescriptionr/   r   _r   lctxr   r   r   frontendr   t0t1ext
output_diroutput_paths                                  r   r   Draw.run>  s   	DS  <<<'2488< \\T!,TXX6 \\W$-dhh7 \\\)'1KT\\**,,gll3<<)$,,q9:*5*G*G*I&	9+R}56 +JHHQK99yyH-.HHQKxj-.x(Q	[[__T[[1F C --.t? . 
 !!#""1 --.GHCV4$$-445OP $V[[M78Vd3 E"R%H-.88||DHH%,,(3(E(E(G5(Gfc1!C5	(G5  5dhhZ @77;||nF xx  )$((3PQRtxxj56&&(  *&&(E"r'#h78  24 h&6&6l&KLJ$1K1K1M0N'OOK[)J{m1-.)*k"c  	#a&MHHQKK	  c!f  c!f  c!f<  	)$++ 7"36;;"?;a166;"?!@B HHQK	H5s   S$ T& U( 9V*  %W, 2Y$
T#.*TT#&
U%0*U  U%(
V'2*V""V'*
W)4*W$$W),+YX.-%YYr7   Nr   r7   r   r   r   r      s5    $DM
 M
^ |# |#r   r   c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Viewi  zLauncher sub-command: viewviewc                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SS9  UR                  S[        S[
        S9  g )Nz!view DXF files by the PyQt viewerrP   r   rS   r   zDXF file to viewrU   r   r   r   r   r   z	--lwscaler   r   )r!   r  r%   r]   floatHELP_LWSCALEr^   s     r   r!   View.add_parser  s    &&II? ' 
 	#	 	 	
 	@	 	 	
 		 	 	
r   c                    SSK Jn  SSKJn  SSK	J
n  U" U R                  S9n[        R                  " [        R                  [        R                  5        WR                  [
        R                   5      nUR#                  S5        [%        U5        UR'                  U5      nU R(                  nU(       a(  [+        U5      u  pUR-                  U	U
U R.                  S9  [
        R                  " UR1                  5       5        g ! [         a5  n[        [	        U5      5        [
        R                  " S5         S nAGN5S nAff = f)	Nr   	QtWidgetsr   )	CADViewer)r   )lineweight_scalingFusion)r   )ezdxf.addons.xqtr  r"   rw   rc   r   r   ezdxf.addons.drawing.qtviewerr  r   r   lwscalesignalSIGINTSIG_DFLQApplicationargvsetStyleset_app_iconfrom_configr   r   set_documentr   exec)r;   r  r   r  r   r   appviewerr/   r   rn   s              r   r   View.run  s    	2 	<=#||
 	fmmV^^4$$SXX.XS&&v.99(2LC{{   
 	/  	#a&MHHQKK	s   D 
E*D==Er7   Nr   r7   r   r   r  r    s0    $D
 
0  r   r  c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Browsei  zLauncher sub-command: browsebrowsec                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	[        S
SS9  UR                  SSS
SS9  g )Nzbrowse DXF file structurerP   r   rS   r   DXF file to browserU   r   z--lineFzgo to line number)r   r   rQ   -g--handleSgo to entity by HANDLE, HANDLE has to be a hex value without any prefix like 'fefe'r   rQ   )r!   r.  r%   r]   r   r^   s     r   r!   Browse.add_parser  s    &&v{{9T&U%	 	 	
 	(u;N 	 	
 	%	 	 	
r   c                V    SSK Jn  SSKJn  [        R                  " [        R                  [        R                  5        WR                  [
        R                  5      nUR                  S5        [        U5        UR!                  U R"                  U R$                  U R&                  [)        5       S9nUR+                  5         [
        R                  " UR-                  5       5        g ! [         a5  n[        [	        U5      5        [
        R                  " S5         S nAGNS nAff = f)Nr   r  r   )browserr  )linehandleresource_path)r  r  r"   rw   rc   r   r   ezdxf.addonsr8  r   r!  r"  r#  r$  r%  r&  DXFStructureBrowserr   r9  r:  resources_pathshowr)  )r;   r  r   r8  r*  main_windows         r   r   
Browse.run  s    	2 	)fmmV^^4$$SXX.XS11II;;(*	 2 
 	!  	#a&MHHQKK	s   C) )
D(3*D##D(r7   Nr   r7   r   r   r.  r.    s0    &D
 
&  r   r.  c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)BrowseAcisDatai-  z!Launcher sub-command: browse-aciszbrowse-acisc                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SS9  g )Nz#browse ACIS structures in DXF filesrP   r   rS   r   r1  rU   r2  r3  Fr4  r5  )r!   rC  r%   r]   r^   s     r   r!   BrowseAcisData.add_parser3  sg    &&&K ' 
 	%	 	 	
 	%	 	 	
r   c                    SSK Jn  SSKJn  [        R                  " [        R                  [        R                  5        WR                  [
        R                  5      nUR                  S5        [        U5        U" U R                   U R"                  S9nUR%                  5         [
        R                  " UR'                  5       5        g ! [         a4  n[        [	        U5      5        [
        R                  " S5         S nANS nAff = f)Nr   r  r   )AcisStructureBrowserr  )r:  )r  r  r"   rw   rc   r   r    ezdxf.addons.acisbrowser.browserrG  r   r!  r"  r#  r$  r%  r&  r   r:  r?  r)  )r;   r  r   rG  r*  r@  s         r   r   BrowseAcisData.runF  s    	2 	JfmmV^^4$$SXX.XS*II;;
 	  	#a&MHHQKK	s   C 
D
*DD
r7   Nr   r7   r   r   rC  rC  -  s0    +D
 
$  r   rC  c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Stripi[  zLauncher sub-command: stripstripc                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SSS9  UR                  SSS
SSS9  UR                  SS
SSS9  UR                  SSS
SSS9  g )Nzstrip comments from DXF filesrP   r   rS   rT   8DXF file to process, wildcards "*" and "?" are supportedrU   z-bz--backuprY   Fz\make a backup copy with extension ".bak" from the DXF file, overwrites existing backup filesr[   r   rQ   z-tz--thumbnailzstrip THUMBNAILIMAGE sectionz	--handlesz*remove handles from DXF R12 or older filesr   r   r   )r!   rK  r%   r]   r^   s     r   r!   Strip.add_parsera  s    &&uzz8W&XK	 	 	
 	9 	 	
 	/ 	 	
 	=	 	 	
 	# 	 	
r   c           
     L   SSK Jn  U R                   H  n[        R                  " U5       Hq  nS/nU R                  (       a2  [        U5      (       a  UR                  SS/5        O[        SU 35        U" UU R                  U R                  U R                  US9  Ms     M     g )Nr   )rL  i     i   z-Cannot remove handles from DXF R13 or later: )backup	thumbnailr   codes)ezdxf.tools.striprL  r   r   handlesr1   extendrw   rT  rU  r   )r;   rL  r   r/   rV  s        r   r   	Strip.run  s    +yyG IIg.<<&x00aX.KH:V ;;"nn LL / !r   r7   Nr   r7   r   r   rK  rK  [  s1    %D#
 #
J  r   rK  c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Configi  zLauncher sub-command: configr   c                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SS9  UR                  SSSS9  UR                  SSSS9  g )Nzmanage config filesrP   z-pz--printrY   zprint configurationrZ   z-wz--writerS   zwrite configuration)rV   rQ   z--homezqcreate config file 'ezdxf.ini' in the user home directory '~/.config/ezdxf', $XDG_CONFIG_HOME is supported if setz--resetz6factory reset, delete default config files 'ezdxf.ini')r!   r\  r%   r]   r^   s     r   r!   Config.add_parser  s    &&v{{9N&O&	 	 	
 	&	 	 	
 	F 	 	
 	I 	 	
r   c                "   SSK Jn  SnU R                  (       a"  UR                  5         UR                  5         SnU R                  (       a  UR                  5         SnU R                  (       aN  Sn[        U R                  5      R                  5       n UR                  [        U5      5        [        SU 35        U R                  (       d  USL a  UR                  5         g g ! [         a  n[        [        U5      5         S nANKS nAff = f)Nr   )optionsFTzconfiguration written to: )r   r`  resetdelete_default_config_fileshomewrite_home_configwriter
   
expanduser
write_filerc   rw   r,   )r;   r`  r[   filepathr   s        r   r   
Config.run  s    !::MMO//1F99%%'F::FDJJ'224H""3x=128*=> ::5MMO )  c!fs   (C& &
D0D		Dr7   Nr   r7   r   r   r\  r\    s0    &D
 
4  r   r\  c           
       ^  S
U 4S jjnS
U 4S jjnSn[        T 5      (       a*   [        R                  " T 5      nUR                  5       nSnO [        R                  " T 5      u  pEXEU4$ ! [         a    [        R
                  " U" 5       5      e[        R                   a    [        R
                  " U" 5       5      ef = f! [         a    [        R
                  " U" 5       5      e[        R                   au    [        T 5      nUR                  S:w  a>  [        ST  SUR                   SUR                   S	35        [        R
                  " 5       e[        R
                  " U" 5       5      ef = f)Nc                 D   > ST S3n [        U [        R                  S9  U $ )Nr   r   r   rw   r   r   r   r/   s    r   io_error%load_every_document.<locals>.io_error  s$    8
!Dc

#
r   c                 D   > ST S3n [        U [        R                  S9  U $ )Nr   r   r   rl  rm  s    r   structure_error,load_every_document.<locals>.structure_error  s$    0
!<c

#
r   FTinvalidz!This is a DWG file!!!
Filename: "z"
Format: DWG
Release: z
DWG Version: 
)r>   rc   )r   r   ry   r,   r   DXFLoadErrorrz   rN   r   r   r-   rw   release)r/   rn  rq  
binary_fmtr   rn   dwginfos   `      r   load_every_documentry    sQ   

 J(##	8..*C
 ))+
	8"++H5LC ##/  	1$$XZ00&& 	8$$_%677	8  	1$$XZ00&& 	8#H-G)+""* ,  '0 1$$+OO#4B	8 ((**$$_%677	8s   A+ C +AB?B-E/c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)Infoi   zLauncher sub-command: infor$   c                    U R                  [        R                  SS9nUR                  SSSSS9  UR                  SS	S
SSS9  UR                  SSS
SSS9  g )Nzshow information and optional stats of DXF files as loaded by ezdxf, this may not represent the original content of the file, use the browse command to see the original contentrP   r   rS   rT   rN  rU   r   r   rY   Fr   rO  rX   z--statszshow content stats)r!   r{  r%   r]   r^   s     r   r!   Info.add_parser  s    &&II' ' 
 	K	 	 	
 	# 	 	
 	% 	 	
r   c                  ^ ^ SSK Jm  SU U4S jjnT R                   H  nSn[        R                  " U5       H  n[        R
                  R                  U5      (       aL  [        R
                  R                  US5      n[        R                  " U5       H  nU" U5        US-  nM     Ms  U" U5        US-  nM     US:X  d  M  [        R                  R                  SU S35        M     g )	Nr   )r$   c                  >  [        U 5      u  pnU(       a  SOSn[        SR                  T" UTR                  TR                  US95      5        UR
                  (       a"  [        S[        UR                  5       S35        UR                  (       a"  [        S[        UR                  5       S35        [        5         g ! [        R                   a     g f = f)	NBinaryASCIIrt  )r   contentfmtr   r   r   r   )ry  rw   joinr   statsr}   r   rk   r{   r*   r   ru  )fnr   rn   rw  r  r;   r$   s        r   processInfo.run.<locals>.process(  s    +>r+B(j #-h'II$(LL$(JJ #		 $$0W]]1C0DJOP%%.s7>>/B.CC[\ ) %% s   C CCz*.dxfr   z No matching files for pattern: "z"
)r  rc   )ezdxf.documentr$   r   r   r   r   isdirr  r   r   re  )r;   r  r   
file_countr/   dir_pattern	filename2r$   s   `      @r   r   Info.run$  s    '	 	2 yyGJ IIg.77==**"$'',,x"AK%)YY{%;		*"a
 &< H%!OJ / Q

  #CG9C!PQ !r   r7   Nr   r7   r   r   r{  r{     s2    $D
 
: )R )Rr   r{  c                  <    \ rS rSrSrSr\S 5       r\S 5       rSr	g)HPGLiQ  zLauncher sub-command: hpglhpglc           
        U R                  [        R                  SS9nUR                  SSSSSS9  UR                  S	S
SSSS9  UR                  SS[        SSSSS9  UR                  SSSSSS9  UR                  SSSSSS9  UR                  SS[        SSS S!S"9  UR                  S#S$SSS%S9  UR                  S&SSS'S9  S(Ul        UR                  S)[        SS*S+S,9  S(Ul        g )-Nz8view and/or convert HPGL/2 plot files to various formatsrP   r   rS   r    zVview and/or convert HPGL/2 plot files, wildcards (*, ?) supported in command line mode)rV   rW   r   rQ   z-ez--exportFORMATFzJconvert HPGL/2 plot file to SVG, PDF or DXF from the command line (no gui))rV   r   rQ   z-rz--rotate)r   Z      i  r   z1rotate page about 90, 180 or 270 degrees (no gui))r   r   r   r   rQ   r\   z
--mirror_xrY   z)mirror page in x-axis direction, (no gui)rO  z-yz
--mirror_yz)mirror page in y-axis direction, (no gui)z-mz--merge_controlr   )r   r   r   z{provides control over the order of filled polygons, 0=off (print order), 1=luminance (order by luminance), 2=auto (default))r   r   r   r   rQ   r   r   zinserts the mandatory 'enter HPGL/2 mode' escape sequence into the data stream; use this flag when no HPGL/2 data was found and you are sure the file is a HPGL/2 plot filez--acizCuse pen numbers as ACI colors and assign colors by layer (DXF only)z?Note that plot files are intended to be plotted on white paper.r   `   z)pixel density in dots per inch (PNG only))r   r   r   rQ   )r!   r  r%   r]   r   epilogr^   s     r   r!   HPGL.add_parserW  s   &&IIV ' 
 	i 	 	
 	] 	 	
 	%D 	 	
 	< 	 	
 	< 	 	
 	A 	 		
 	) 	 	
 	V	 	 	
 N 	 	< 	 	
 N 	r   c                \   U R                   (       a{  [        R                  R                  U R                  5      (       a  U R                  /nO [
        R
                  " U R                  5      nU H  n[        [        U5      U 5        M     g [        U R                  U R                  5        g r   )
exportr   r   r   r   r   export_hpgl2r
   launch_hpgl2_viewerr   )r;   	filenamesr/   s      r   r   HPGL.run  si    ;;ww~~dii((!YYK	 IIdii0	%T(^T2 &  		4::6r   r7   Nr   r7   r   r   r  r  Q  s3    $DN
 N
` 	7 	7r   r  c           
        SSK Jn  SSKJn  UR                  R                  5       nSU R                   SU 3n U R                  5       nUR                  (       a  SU-   nU R                  SUR                  5        35      nUS	:X  a  [        U5        UR                   (       a  UR"                  OUR$                  n	UR'                  UUR(                  UR*                  UR,                  U	UR.                  S
9n
 U
R1                  U5        GOBUS:X  aY  [        U5        UR3                  UUR(                  UR*                  UR,                  UR.                  S9n UR5                  U5        OUS:X  aY  [        U5        UR7                  UUR(                  UR*                  UR,                  UR.                  S9n UR9                  U5        OUS:X  ae  [        U5        UR;                  UUR(                  UR*                  UR,                  UR.                  SUR<                  S9n UR9                  U5        O[        SU 35        [?        S5        [        SUR                   S35        g ! [         a+  n[        [        U5      [        R                  S9   S nAg S nAff = f! [         a+  n[        [        U5      [        R                  S9   S nANS nAff = f! [         a+  n[        [        U5      [        R                  S9   S nANS nAff = f! [         a+  n[        [        U5      [        R                  S9   S nANS nAff = f! [         a,  n[        [        U5      [        R                  S9   S nAGN+S nAff = f)Nr   )api)	ColorModezconverting HPGL/2 plot file 'z' to r   s   %1Br   DXF)rotationmirror_xmirror_y
color_modemerge_controlSVG)r  r  r  r  PDFPNGpng)r  r  r  r  r  r   zinvalid export format: r   zfile 'z' successfully written) ezdxf.addons.hpgl2r  ezdxf.addons.drawing.dxfr  r  upperrf   
read_bytesr,   rw   rc   r   r   r   with_suffixloweraciACIRGBto_dxfrotater  r  r  r   to_svg
write_textto_pdfwrite_bytes	to_pixmapr   r   )rh  r;   hpgl2r  r  	start_msgdatar   export_pathr  r   
svg_string	pdf_bytes	png_bytess                 r   r  r    s   /2
++


C/eC5II""$ zz~&&399;-'89K
e|i&*hhY]]IMM
ll[[]]]]!,,  
	+JJ{# 
i\\[[]]]],, " 

	+"":. 
iLL[[]]]],, ! 
		+##I. 
iOO[[]]]],, $ 
		+##I. 	'u-.Q	F;##$$:
;<E  c!f3::&&  	+#a&szz*	+  	+#a&szz*	+  	+#a&szz*	+  	+#a&szz**	+sw   I( 9J  K 8L #M (
J2!JJ 
K*!KK
L"!LL
M!M  M
M>!M99M>c                R    SSK Jn  SSKJn  [        R                  " [        R                  [        R                  5        WR                  [        R                  5      nUR                  S5        [        U5        U" 5       nUR!                  5         U (       a3  ["        R$                  R'                  U 5      (       a  UR)                  XS9  [        R
                  " UR+                  5       5        g ! [         a*  n[        [	        U5      5        [        S5         S nAGNS nAff = f)Nr   r  r   )HPGL2Viewerr  )r   )r  r  r"   rw   rc   r   ezdxf.addons.hpgl2.viewerr  r   r!  r"  r#  r   r$  r%  r&  r?  r   r   r   load_plot_filer)  )r/   r   r  r   r  r*  r+  s          r   r  r    s    . 6
MM&--0

 
 
*CLL]F
KKMBGGNN8,,h4HHSXXZ  c!fQs   C2 2
D&<D!!D&c                   SSK JnJn  UR                  5       n[	        5       nUR                  [        US-  5      UR                  SS5      5        UR                  [        US-  5      UR                  SS5      5        UR                  [        US-  5      UR                  SS5      5        UR                  [        US	-  5      UR                  S
S
5      5        UR                  [        US-  5      UR                  SS5      5        UR                  [        US-  5      UR                  SS5      5        U R                  U5        g )Nr   )QtGuiQtCorez	16x16.png   z	24x24.png   z	32x32.png    z	48x48.png0   z	64x64.pngr4   z256x256.png   )	r  r  r  QIconr>  addFilerc   QSizesetWindowIcon)r*  r  r  app_iconrg   s        r   r&  r&    s    .{{}HAS[)6<<B+?@S[)6<<B+?@S[)6<<B+?@S[)6<<B+?@S[)6<<B+?@S]*+V\\#s-CDhr   c                 @    SSK Jn   U " [        5      R                  S-  $ )Nr   r	   	resources)r   r
   __file__rd   r	   s    r   r>  r>  #  s    >  ;..r   )r   rc   r>   zOptional[Callable]r=   )r/   rc   r>   bool)r   zType[Command])r/   rc   )rh  r
   r>   r?   )r/   rc   r   r  r>   r?   )=
__future__r   r   r   typingr   r   r   r   r   rF   r   r   r   r   r   r   r
   r   r   ezdxf.lldxfr   ezdxf.lldxf.validatorr   r   r   ezdxf.dwginfor   ezdxf.entitiesr   ezdxf.addons.drawing.propertiesr   r   __all__	getLoggerr#   r   r   r1   r3   dictr   __annotations__rJ   rL   r   
HELP_LTYPEr  r   r  r.  rC  rK  r\  ry  r{  r  r  r  r&  r>  r7   r   r   <module>r     s   #   D D 
 
 	         K K ')K-
 			7	#M'   '+f	# , 
h!G h! 
h!V2#  U 
 
R#7 R# 
R#j 
:7 : 
:z 
-W - 
-` 
*W * 
*Z 
?G ? 
?D 
5W 5 
5p&$R 
MR7 MR 
MR` 
`77 `7 
`7FJ=Z& /r   