
    BPcZ                        d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlZddlmZ g dZd+d	Z G d
 de          ZdZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d  Z'd! Z(d" Z)d# Z*d$ Z+d% Z, G d& d'ej-                  Z.d( Z/d) Z0e1d*k    r e.            2                                 dS dS ),z4
Input a DXF file >= (AutoCAD Release 13 == AC1012)
    N)defaultdict)quote)etree)inkex_gettext(   PAD#FF0000#FFFF00#00FF00#00FFFF#0000FF#FF00FF#000000z#808080z#C0C0C0r   z#FF7F7Fz#CC0000z#CC6666z#990000z#994C4Cz#7F0000z#7F3F3Fz#4C0000z#4C2626z#FF3F00z#FF9F7Fz#CC3300z#CC7F66z#992600z#995F4Cz#7F1F00z#7F4F3Fz#4C1300z#4C2F26z#FF7F00z#FFBF7Fz#CC6600z#CC9966z#994C00z#99724Cz#7F3F00z#7F5F3Fz#4C2600z#4C3926z#FFBF00z#FFDF7Fz#CC9900z#CCB266z#997200z#99854Cz#7F5F00z#7F6F3Fz#4C3900z#4C4226r	   z#FFFF7Fz#CCCC00z#CCCC66z#989800z#98984Cz#7F7F00z#7F7F3Fz#4C4C00z#4C4C26z#BFFF00z#DFFF7Fz#99CC00z#B2CC66z#729800z#85984Cz#5F7F00z#6F7F3Fz#394C00z#424C26z#7FFF00z#BFFF7Fz#66CC00z#99CC66z#4C9800z#72984Cz#3F7F00z#5F7F3Fz#264C00z#394C26z#3FFF00z#9FFF7Fz#33CC00z#7FCC66z#269800z#5F984Cz#1F7F00z#4F7F3Fz#134C00z#2F4C26r
   z#7FFF7Fz#00CC00z#66CC66z#009800z#4C984Cz#007F00z#3F7F3Fz#004C00z#264C26z#00FF3Fz#7FFF9Fz#00CC33z#66CC7Fz#009826z#4C985Fz#007F1Fz#3F7F4Fz#004C13z#264C2Fz#00FF7Fz#7FFFBFz#00CC66z#66CC99z#00984Cz#4C9872z#007F3Fz#3F7F5Fz#004C26z#264C39z#00FFBFz#7FFFDFz#00CC99z#66CCB2z#009872z#4C9885z#007F5Fz#3F7F6Fz#004C39z#264C42r   z#7FFFFFz#00CCCCz#66CCCCz#009898z#4C9898z#007F7Fz#3F7F7Fz#004C4Cz#264C4Cz#00BFFFz#7FDFFFz#0099CCz#66B2CCz#007298z#4C8598z#005F7Fz#3F6F7Fz#00394Cz#26424Cz#007FFFz#7FBFFFz#0066CCz#6699CCz#004C98z#4C7298z#003F7Fz#3F5F7Fz#00264Cz#26394Cz#003FFFz#7F9FFFz#0033CCz#667FCCz#002698z#4C5F98z#001F7Fz#3F4F7Fz#00134Cz#262F4Cr   z#7F7FFFz#0000CCz#6666CCz#000098z#4C4C98z#00007Fz#3F3F7Fz#00004Cz#26264Cz#3F00FFz#9F7FFFz#3300CCz#7F66CCz#260098z#5F4C98z#1F007Fz#4F3F7Fz#13004Cz#2F264Cz#7F00FFz#BF7FFFz#6600CCz#9966CCz#4C0098z#724C98z#3F007Fz#5F3F7Fz#26004Cz#39264Cz#BF00FFz#DF7FFFz#9900CCz#B266CCz#720098z#854C98z#5F007Fz#6F3F7Fz#39004Cz#42264Cr   z#FF7FFFz#CC00CCz#CC66CCz#980098z#984C98z#7F007Fz#7F3F7Fz#4C004Cz#4C264Cz#FF00BFz#FF7FDFz#CC0099z#CC66B2z#980072z#984C85z#7F005Fz#7F3F6Fz#4C0039z#4C2642z#FF007Fz#FF7FBFz#CC0066z#CC6699z#98004Cz#984C72z#7F003Fz#7F3F5Fz#4C0026z#4C2639z#FF003Fz#FF7F9Fz#CC0033z#CC667Fz#980026z#984C5Fz#7F001Fz#7F3F4Fz#4C0013z#4C262Fz#333333z#5B5B5Bz#848484z#ADADADz#D6D6D6z#FFFFFFr   c                 t    d}| t          dt          t                              v rt          |          }|s|}|S )a>  Returns hex color code corresponding to a color value

    dxfcolor     -- dxf code to convert to hex color code
                    0 (BYBLOCK) and 256 (BYLAYER) use parent_color
                    No more differentiation is currently done
                    Negative values are ignored (specification
                    allows layer to be hidden here)
                    Negative values also use parent_color
    parent_color -- hex color code from parent layer.
                    Use default color '#000000' if
                    parent layer color undefined.
    N   )rangelenCOLORS)dxfcolorparent_colorrgbcolors      +/usr/share/inkscape/extensions/dxf_input.pyget_rgbcolorr   5  s@     H5CKK(((((#  O    c                       e Zd ZdZi dddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/Z ed0 e                                D                       Z fd1Ze	d2             Z
d3 Zd4 Zd5 Z xZS )6ValueConstructz>Store values from the DXF and provide them as named attributes1)textdefault2)tag
block_name3)mtext6)	line_type7)
text_style8)
layer_name10)x111)x213)x314)x420)y121)y223)y324)y440)scaleknotsradiuswidth_ratio41)
ellipse_a1insert_scale_xmtext_width42)
ellipse_a2bulgeinsert_scale_y)angle)angle2)color)fillflags)
attach_pos)	edge_type)sweep)	path_type)	num_edges)extrude)line_weight)505162707172739293230370c                 &    g | ]\  }}|D ]}||fS  r_   ).0abnames       r   
<listcomp>zValueConstruct.<listcomp>k  s-    EEE11EE44)EEEEr   c                 T    t                                          t                     d S N)super__init__list)self	__class__s    r   rh   zValueConstruct.__init__m  s!    r   c                     || j         v S rf   )values)clskeys     r   is_validzValueConstruct.is_validp  s    cj  r   c                 V   |                     d          }|r
|d d         n|}|| j        v r2| | j        |                  }|                     d          s|d         S |S |                    d          r"|dd          }|| j        v r| j        |         | v S t          d| d|           )N_listr   has_   zCan't find dxf attribute 'z' )endswithattrs
startswithAttributeError)rj   attris_listro   rets        r   __getattr__zValueConstruct.__getattr__t  s    --((",d3B3ii$*tz#'C==)) 1vJ??6"" 	/qrr(Cdj  z#$..G#GGGGHHHr   c                     || j         vrt          d| d          t          |t                    s|g}|| | j         |         <   d S )NzCan't set bad dxf attribute '')rw   ry   
isinstanceri   )rj   rz   values      r   __setattr__zValueConstruct.__setattr__  sY    tz!! !H!H!H!HIII%&& 	GE!&TZr   c                    t          g d          t          |           z  D ]G}t          t          | |                             D ]"}||| |         |         z  |z
  z  | |         |<   #Ht          g d          t          |           z  D ]G}t          t          | |                             D ]"}||| |         |         |z
  z  z
  | |         |<   #HdS )z-Adjust the x,y coordinates to fit on the page)r*   r,   r.   r0   )r2   r4   r6   r8   N)setr   r   )	rj   xminyminr;   rQ   heightxgrpiygrps	            r   adjust_coordszValueConstruct.adjust_coords  s   00011CII= 	I 	ID3tDz??++ I I %4:a=)@4)G HT
1I00011CII= 	H 	HD3tDz??++ H H &$t*Q-$2F)G GT
1H	H 	Hr   )__name__
__module____qualname____doc__rm   dictitemsrw   rh   classmethodrp   r}   r   r   __classcell__)rk   s   @r   r   r   J  s       HH " 	Z 	^	
 	_ 	_ 	g 	g 	g 	g 	g 	g 	g 	g 	9  	=!" 	7#$ 9  F< DEEEEEFFE     ! ! [!I I I' ' 'H H H H H H Hr   r   Fc                 b    t          t          |                     d          d                    S )Nr      )chrintgroup)ms    r   re_hex2unicharr     s$    s1771::r""###r   c                 D    t          t          j        |                     S rf   )strinkexStyle)styles    r   formatStyler     s    u{5!!"""r   c                     | d                              d           | d                              d           t          |           S )NrW   r   rV   )appendexport_mtextvalss    r   export_textr     sB    
 	JaJar   c                 x
   | j         s| j        r(| j        r| j        r| j        }| j        }d}| j        rt          t          z  | j        z  }dx}}| j	        s|}d}| j
        r%| j        dv rd}n| j        dv rd}| j        dv r|d	z  }d
|z  d
|z  d|t          t          j        |fz  d}d}d}	| j        r| j        dk    r| j        }n| j        r| j        r| j        t          z  t(          z   }
| j        t,          z
   t          z  t.          z   }t1          j        ||z  |
|
z  z             }|dk     r-|dk    r't1          j        ||
          }d|z  t0          j        z  }| j        rK| j        t<          v r=t<          | j                 dz  r(d}	d}|}d
|z  d
|z  d|t          t          j        |fz  d}|dk    r|                    dd| ||fz  i           t@          !                    tE          j#        d%i |          }|$                    dd           d}| j        rd%                    | j&                  }| j         r
|| j'        z  }| j(        r| j        r| j)        dk    r| j        dk    r| j)        d	z  | j        z  }tU          |          }tW          |          |k    rz|,                    d          dk     ra|,                    d          dk     rHd}tW          |          |k    r3|d |         dz   ||d          z   }||d	z   z  }tW          |          |k    3t[          |          }d}|,                    d          }|dk    r|!                    tE          j.                              }|	r9|$                    dd
|z             |dk    r|$                    dd
|z             nh|$                    d d!           |dk    r|$                    d"||z              n|$                    dd
|z             |$                    d#d
|z             |d |         }t_          |||           ||d	z   d          }|,                    d          }|d$z  }|dk    |!                    tE          j.                              }|	r9|$                    dd
|z             |dk    r|$                    dd
|z             nh|$                    d d!           |dk    r|$                    d"||z              n|$                    dd
|z             |$                    d#d
|z             |}t_          |||           d S d S d S d S )&N   r   start)         middle)      	   end)ru   r   r   r   %fz=font-size: %.3fpx; fill: %s; font-family: %s; text-anchor: %sxyr   Fg)\(?gGz?   ru   TzOfont-size: %.3fpx; fill: %s; font-family: %s; text-anchor: %s; writing-mode: tb	transformrotate (%f %f %f)zsodipodi:linespacingz125% g      $@      ?\P{r   dxsodipodi:roleliner   dyr   r_   )0has_text	has_mtexthas_x1has_y1r+   r3   	has_scaler;   	textscale	has_flagshas_attach_posrL   rI   optionsfont	has_anglerG   has_y2has_x2r-   r   r5   r   r   mathsqrtatan2pihas_text_styler'   style_directionupdatelayeraddr   TextElementr   join
mtext_listr   has_mtext_widthrB   r   r   findmtext_normalizeTspanmtext_separate)r   r   r   sizer   r   anchorattribsrG   	bVerticalorgxorgyunitang1noder   charsperlinenocharsposlinesfoundtspantext1s                          r   r   r     s    	 |+ |+T[ |+T[ |+GG > 	29$tz1DR~ 	B 	)++!I--)++AX TUGL&12
 
 	> 	-zQ
[ 		-T[ 		- 7U?T)DWv%&.5D9TD[4$;677Dt$++z$--d
TW,  	4?o#E#Et/!3  !	nUGL&9:  A::NNK)<1~)MNOOOyy*55W5566'000> 	,774?++D= 	DID 
	/DN 
	/$&&4:+;+;#/!3dj@l++t99|++		%((1,,499T??Q3F3F!$ii#oo#':#5STT
#BD7Q;.C "$ii#oo t$$		%  bjjHHU[]]++E 
+		#tax(((199IIdD4K000		/6222199IIc1r6****IIdD2I...		$r	***%LE4...&DIIe$$EQJE% bjj( '' 
	'IIc4!8$$$qyy		$r	***IIov...qyy		#q2v&&&&		$r	***IIdD2I&&&tUE*****y|+ |+ |+ |+ |+ |+r   c                    |                      d          }|dk    rd}|                     dd|          }|                     dd|          }|dk    r|dk    rd}n||k    rd}|rdd}| |d	z            d
k    r5|                      d|          }|dk    r||z
  dk     r| |d	z   |d	z            }| d |         dz   |z   | |dz   d          z   } |                      d|dz             }|dk    | S )Nr   r   Fr   r   }Tr   r   \;   z}\P{r   )r   rfind)r   r   nestposLposRcontrolposCs          r   r   r   ,  s&   IIeE
"**zz$5))zz$5))"99rzz$;;D 	HGD1H~%%yyt,,2::4$;""4"4"4!8dQh#67G<')G3d519;;6GGD		%++% "**& Kr   c                    d}|                     d          }|dk    r|dk    r|                     d          }|dk     rn|d |         }||dz   d          }|dk    r&|                     t          j                              }t	          ||           d}||dz   d          }|                     d          }nT|d |         }|dk    r&|                     t          j                              }t	          ||           d}||d          }d}|dk    t          |          dk    rB|}|dk    r&|                     t          j                              }t	          ||           d}d S d S )NTr   r   r   r   r   F)r   r   r   r   
mtext_ctrlr   )r   r   r   tspanAddr   found1r   s          r   r   r   E  su   HIIdOOE
"**A::YYt__Fzz&ME%!)++&E5  //ue$$$H
%DIIdOOEE%LE5  //ue$$$H<DE- "**0 4yy1}}uHHU[]]++E5%    }r   c                    |d         dk    r	|| _         d S |d                                         dv r|                    d          }|dk    r|d |         }|dd          }	 t          |          }d}|d                                         dk    r8t	          |          }t          |          }|                     d	d
|z             n|d                                         dk    r$|t          z  }|                     d	d|z             n|d                                         dk    r|                     d	d|z             nt|d                                         dk    rV|dk    r|                     dd           n9|dk    r|                     dd           n|dk    r|                     dd           ||dz   d          | _         d S # t          $ r d}Y d S w xY w|| _         d S |d                                         dk    r;|                    d          }|dk    r|d |         }||dz   d          | _         d S d S || _         d S )Nr   r   r   )CHTQWAr   r   Tr   r   z
stroke: %sr  zfont-size: %.3fpx;r  zletter-spacing: %f;r  zdominant-baselineztext-bottomcentralztext-topFF)	r   upperr   floatr   r   r   r;   
ValueError)r   phraser   cvaluer   doner   rI   s           r   r   r   j  sv   ayD
ay:::D!!199FUF^FABBZF1f !9??$$++E

A(OOEIIg|e';<<<<AY__&&#--UNEIIg';e'CDDDDAY__&&#--IIg'<u'DEEEEAY__&&#--zz		"5}EEEE!		"5yAAAA!		"5zBBB#EAIKK0


)    ,  EJJJ!9??## KK%%Eqyy#EAIKK0


 y  EJJJs   $G GGc           	          | j         ro| j        rj| d         rt          j        d           t          j        rt          | j        | j                   d S t          | j        | j        |dz  dddd           d S d S d S )NrV   3$PDMODE is ignored. A point is displayed as normal.r           r   )
r   r   r   errormsgr   gcodetoolspointsgenerate_gcodetools_pointr+   r3   generate_ellipse)r   ws     r   export_pointr    s    { Jt{ J: 	RNPQQQ# 	J%dgtw77777TWdgq1uc3SIIIIIJ J J Jr   c                    | j         rr| j        rm| j        rh| j        rct	          j                    }t          |_        d| j        | j        | j	        | j
        fz  |_        t                              |           dS dS dS dS dS )z!Draw a straight line from the dxfM %f,%f %f,%fN)r   r   r   r   r   PathElementr   r+   r3   r-   r5   pathr   r   r   r  s     r   export_liner    s     { t{ t{ t{  ""
#tw$'&JJ			$	       r   c                 @   | j         r| j        r| j        r| j        r}| j        rx| j        rst          j                    }t          |_        d| j	        | j
        | j        | j        | j        | j        fz  |_        t                               |           d S d S d S d S d S d S d S )NzM %f,%f %f,%f %f,%f z)r   r   has_x3r   r   has_y3r   r  r   r+   r3   r-   r5   r/   r7   r  r   r   r  s     r   export_solidr     s    
 	K K K	
 K K  ""
+GGGGGG/
 
	 			$%           r   c                     | j         rk| j        re| j        r_t          | j                  t          | j                  k    r6| j        }t          | j                  }|dk    rt          |          |dz   k    r|dk    rt          t          |          dz
  dd          D ]}||         ||dz
           k    r||         ||dz            k    rj||         ||dz
           z
  ||dz            ||dz
           z
  z  }||         ||dz
           z
  ||dz            ||dz
           z
  z  }| j                            |dz
  d|z
  | j        |dz
           z  || j        |dz
           z  z              | j                            |dz
  d|z
  | j        |dz
           z  || j        |dz
           z  z              d|z
  | j        |dz
           z  || j        |dz
           z  z   | j        |dz
  <   d|z
  | j        |dz
           z  || j        |dz
           z  z   | j        |dz
  <   |                    |||                    t          t          |          dz
  dd	          D ]}||         ||dz            k    r||dz
           ||dz            k    r||dz
           ||         k    r||         ||dz
           z
  ||dz            ||dz
           z
  z  }| j                            |dz
  d|z
  | j        |dz
           z  || j        |dz
           z  z              | j                            |dz
  d|z
  | j        |dz
           z  || j        |dz
           z  z              t          | j                  }d
| j        | j	        fz  }t          d|dz
  dz            D ]v}|d| j        d|z  dz            | j        d|z  dz            | j        d|z  dz            | j        d|z  dz            | j        d|z  dz            | j        d|z  dz            fz  z  }w| j
        dz  r|dz  }|t          d}t          j        t          d|           |dk    ryt          |          dk    rfd| j        | j	        | j        d         | j        d         | j        d         | j        d         fz  }|t          d}t          j        t          d|           |dk    rt          |          dk    rd| j        | j	        | j        d         | j        d         | j        d         | j        d         | j        d         | j        d         | j        d         | j        d         f
z  }|t          d}t          j        t          d|           d S d S d S d S d S d S d S )Nr   ru   r   r   r   r   r   r   M %f,%fr   z C %f,%f %f,%f %f,%f zdr   r  zM %f,%f Q %f,%f %f,%fr   z#M %f,%f Q %f,%f %f,%f Q %f,%f %f,%f)r   	has_knotsx1_listr   y1_list
knots_listr   insertr+   r3   rK   r   r   
SubElementr   )r   r<   ctrlsr   a0a1r  r   s           r   export_spliner0    s    	T5NT5 LT5 T\!2!222DL!!199Uuqy00qyys5zzA~q"55 2 2AQx5Q<//E!Ha!e4L4L#Ahq1u5%A,qSTu:UV#Ahq1u5%A,qSTu:UV++E 2Xa!e)<<rDLQRUVQVDW?WW   ++E 2Xa!e)<<rDLQRUVQVDW?WW   03Rx4<E< /a!e!44/5QU+ 03Rx4<E< /a!e!44/5QU+ Qa111s5zzA~q"55  AaE!a%L00!!a%LE!a%L88!!a%LE!H44#Ahq1u5%A,qSTu:UV++E 2Xa!e)<<rDLQRUVQVDW?WW   ++E 2Xa!e)<<rDLQRUVQVDW?WW   %%E11D1uqyQ.//  .LQ+LQ+LQ+LQ+LQ+LQ+2   zA~  511GUFG444A::#e**//*QQQQ. D !511GUFG444A::#e**//8QQQQQQQQ< D !511GUFG44444iT5 T5 T5 T5 T5 T5 32D ://r   c           	          | j         r<| j        r7| j        r2t          | j        | j        t          | j        z  dddd           d S d S d S d S )Nr  r   )r   r   
has_radiusr  r+   r3   r;   r=   r   s    r   export_circler3  "  sp    { Tt{ Tt T$'54;+>S#sSSSSST T T T T Tr   c           
         | j         rt| j        ro| j        rj| j        re| j        r`t          | j        | j        t          | j	        z  dd| j
        t          j        z  dz  | j        t          j        z  dz             d S d S d S d S d S d S )Nr  r        f@)r   r   r2  r   
has_angle2r  r+   r3   r;   r=   rG   r   r   rH   r   s    r   
export_arcr7  (  s     	
K
 O
 N	

 O
 	GGDKJ 5(K$'!E)	
 	
 	
 	
 	

 
 
 
 
 
 
 
 
 
r   c           	      ,   | j         r| j        r{| j        rv| j        rq| j        rl| j        rg| j        rb| j        t          z   }| j	        t          z   t          z
  }t          | j        | j        ||| j        | j        | j                   d S d S d S d S d S d S d S d S rf   )r   r   r   r   has_width_ratiohas_ellipse_a1has_ellipse_a2r-   r   r5   r   r   r  r+   r3   r>   r@   rD   )r   r-   r5   s      r   export_ellipser<  <  s     	
K
 K
 K	

  
 
 
 Wt^Wt^f$GTWb"d&6	
 	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
r   c                    | j         r| j        rt          | j                  dk    rt          | j                  t          | j                  k    rd| j        | j        fz  }t          dt          | j                            D ]"}|d| j        |         | j        |         fz  z  }#|t          d}t          j
        t          d|           d S d S d S d S d S )Nr   r#  z %f,%fr%  r  )r   r   r   r(  r)  r+   r3   r   r   r   r,  r   )r   r  r   r   s       r   export_leaderr>  Q  s    { 5t{ 5t|q  S%6%6#dl:K:K%K%K11D1c$,//00 F FDLOT\!_#EEE 511GUFG444445 5 5 5  %K%Kr   c                      t          |           S rf   )export_lwpolyliner   s    r   export_polylinerA  \  s    T"""r   c           
          | j         rm| j        rg| j        rat          | j                  dk    rJt          | j                  t          | j                  k    r!d}d}| j        dz  rXt                              d           | j                            | j	                   | j                            | j
                   t          |         dk    r|dz  }t          |         dk    d| j	        | j
        fz  }| j	        }| j
        }t          dt          | j                            D ]}d}|dz  }t          |         dk    r9t          |         dk    r| j        |         }|dz  }|dz  }t          |         dk    9|rd}|dk     rd}| }d}	|dk    rd}	t          j        | j        |         |z
  dz  | j        |         |z
  dz  z             }
d|
z  |d|z  z   z  }
|d	|
|
|	|| j        |         | j        |         fz  z  }n |d
| j        |         | j        |         fz  z  }| j        |         }| j        |         }| j        dz  r|dz  }|t          d}t!          j        t$          d|           d S d S d S d S d S d S )Nr   r   r2   r#  rC   r   g      ?r   z A %f,%f 0.0 %d %d %f,%fz L %f,%fr$  r%  r  )r   r   r   r   r(  r)  rK   seqsr   r+   r3   r   
bulge_listr   r   r   r   r,  r   )r   iseqsibulger  xoldyoldr   rE   rN   largerr   s               r   r@  r@  `  s   { 15t{ 15t~ 15t|q  S%6%6#dl:K:K%K%KEFzA~ -D!!!##DG,,,##DG,,,u+%%
 u+%%11D7D7D1c$,//00 ' '
5kT))E{d** $ 7!QJE	 5kT))
  LEqyy !!&Eqyy !	a4/A5a49OTU8UU A qEC%K$78A6QQ:  DD J$,q/4<?)KKKD|A|AzA~  511GUFG44444c15 15 15 15 15 15  %K%Kr   c                    | j         r| j        r| j        r| j        r| j        r| j        rt          | j                  dk    rt          | j                  t          | j                  k    rd}d}d}d}d}t          dt          | j
                            D ]}| j        |         }| j        |         }| j        |         dk    r}t          | j        |         z  }	| j        |         }
|d||	t          j        |
t          j        z  dz            z  z   ||	t          j        |
t          j        z  dz            z  z   fz  z  }nd}
|d||fz  z  }t          d| j
        |                   D ]-}| j        |         dz  rA|dk    r |d| j        |         | j        |         fz  z  }|| j        |         dz
  k    r|dz  }n| j        |         dk    r| j        |         }| j        |         }t          | j        |         z  }	| j        |         }||
z
  dz   dz  }d| j        |         z
  }d}|r_|d	|	|	||||	t          j        |t          j        z  dz            z  z   ||	t          j        |t          j        z  dz            z  z   fz  z  }n|d	|	|	||||	t          j        |
dz   t          j        z  dz            z  z   ||	t          j        |
dz   t          j        z  dz            z  z   fz  z  }|d	|	|	||||	t          j        |
t          j        z  dz            z  z   ||	t          j        |
t          j        z  dz            z  z   fz  z  }|dz  }|dz  }n;| j        |         dk    r*|d| j        |         | j        |         fz  z  }|dz  }|dz  }|dz  }/|d
z  }| j        rt1          ddt2          z  i          }nt1          ddd          }||d}t5          j        t8          d|           d S d S d S d S d S d S d S d S d S )Nr   r   r   r   zM %f,%f r5  zL %f,%f h  zA %f,%f 0.0 %d %d %f,%f zz rJ   %szurl(#Hatch)1.0)rJ   zfill-opacityr%  r  )r   r   has_fillhas_edge_typehas_path_typehas_num_edgesr   r(  r)  r   num_edges_listedge_type_listr;   radius_list
angle_listr   cosr   sinpath_type_listangle2_list
sweep_listx2_listy2_listr   rI   r   r,  r   )r   i10i11i40i72r  r   xcycrmr/  ja2diffrN   rI  r   r   s                     r   export_hatchrh    s    	Q5KQ5 MQ5 	Q5
 Q5 Q5 t|q  S%6%6#dl:K:K%K%KCCCCD1c$"56677 < <\#&\#&&s+q00!1#!66B-BJR$(2<%+?"@"@@@R$(2<%+?"@"@@@*  DD
 BJ"b11Dq$"5a"899 . .A*1-1 ,!q55 J$,s2CT\RUEV1W$WWD 3A 6 :::1HC,S1Q66!\#.!\#."T%5c%::!-c2 "R#4 !DOC$8 8 !  $> " " % % "R$(2<%3G*H*H%H H "R$(2<%3G*H*H%H HB % DD !$> " " % % "R$(BJ$'3IE3Q*R*R%R R "R$(BJ$'3IE3Q*R*R%R RB % D !$> " " % % "R$(2<%3G*H*H%H H "R$(2<%3G*H*H%H HB % D qq,S1Q66
dl3.?cAR-S SSqq1HCC} T#VTE\$:;;#]E$R$RSS 511GUFG44444cQ5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 Q5 ! %K%Kr   c                    | j         rf| j        r`| j        rZ| j        rT| j        rUt          j        dd          d| j        z  i}d}|                    d|i           t          j
        t          d|           d S t          | j        | j        z
            }t          | j        | j        z
            }| j        | j        k    r0|dk    r*|t$          z  }d}d	| j        | j        | j        | j        fz  }nB| j        | j        k    r0|dk    r*|t$          z  }d}d	| j        | j        | j        | j        fz  }nd S |t(          d
z   d}t          j
        t          d|           | j        }| j        }d}	| j        r8| j        t2          v r*t$          t4          z  t2          | j                 z  }	|	dk     rd}	d|z  d|z  d|	t6          t8          j        fz  d}|dk    r|                    ddd||fz  i           t          j
        t          d|          }
|
                    t          j                              }|                     dd           tC          tE          d|z                      |_#        d S d S d S d S d S )Nhrefxlinkz#%sztranslate(0 0)r   usegh㈵>r   r  zR; marker-start: url(#DistanceX); marker-end: url(#DistanceX); stroke-width: 0.25pxr%  r  r   r   r   zUfont-size: %.3fpx; fill: %s; font-family: %s; text-anchor: middle; text-align: centerr   r   ir   r   r   z%.2f)$r   r   r   r   has_block_namer   addNSr!   r   r   r,  r   absr+   r/   r3   r7   r1   r;   r9   r   r-   r5   r   r#   DIMTXTr   rI   r   r   r   r   r   r   r	  r   )r   r   tformr   r   r&  r  r   r   r   r   r   s               r   export_dimensionrr    s    { 20t{ 20t{ 20t{ 20 0	0FG,,et.GG %E NNK/000UE733333 TWtw&''BTWtw&''B47""WJ&$'47DGTW)MM'TW$$"w,,J&$'47DGTW)MMfg G
 UFG444AAD~ !:'' 9,vdj/AADaxx AXAXp-. G Qww-@CA;-NOPPP#E67;;DHHU[]]++EIIov...U6A:..//EJJJe20 20 20 20 20 20 20 20r   c           
         | j         r| j        r| j        rt          t          z  }t          t
          z  t          z   }| j        t          t          z  z   }| j        t          t
          z  z
  t          z
  }dx}}| j	        r| j
        }| j	        r| j        }|||dz
  z  z  }|||dz
  z  z  }t                              t          j                              }|                    t          j        dd          dt%          | j                            dd                              d                    z              t-          d|z            }d	|z  |j        d
<   |j                            ||           | j        r"| j	        r|j                            ||           | j        r:| j        }	||z  dk    rd|	z
  }	|j                            |	| |           d S d S d S d S d S )Nr   rj  rk  # _zutf-8      ?z%.3fpxstroke-widthr   rL  )rm  r   r   r;   r   r   r   r+   r3   has_insert_scale_yrA   rF   r   r   r   User   rn  r   r!   replaceencodero  r   r   add_translatehas_insert_scale_x	add_scaler   rG   
add_rotate)
r   cxcyr   r   ixscaleiyscaleelemfwiderotated_angles
             r   export_insertr  %  s   
  %>t{ %>t{ %> T\T\F"Gedl"Gedl"V+'" 	*)G" 	*)G	R7Q;	R7Q;yy%%K((%//S99@@IIJJJ	
 	
 	
 C'M""%-%5
>"$$Q***" 	7t'> 	7N$$Wg666> 	> JM 1$$ #m 3N%%mbS"=====K%> %> %> %> %> %>B	> 	>r   c           	          | j         r8t          j        t          dd| j                            dd          i          ad S d S )Nsymbolidru  rv  )rm  r   r,  defsr!   r{  blockr   s    r   export_blockr  R  sK     
 (T4?#:#:3#D#DE
 

 
r   c                     t           ad S rf   )r  r  r   s    r   export_endblkr  [  s    EEEr   c                     | j         r7| j        r2| j                            | j                   t          |            d S d S d S rf   )has_defaulthas_tag	text_listr   r    r   r   s    r   export_attdefr  `  sV     DL dh'''T   r   c                    t          j        ||z  ||z  z             }t          j        ||           }||z
  dt           j        z  z   dt           j        z  z  }	t	          |	          dk    rt	          |	dt           j        z  z
            dk    r_d}
|	t           j        k    rd}
|t          j        |          z  }||z  t          j        |          z  }|t          j        |          z  |t          j        |          z  z
  }|t          j        |          z  |t          j        |          z  z   }|t          j        |          z  }||z  t          j        |          z  }|t          j        |          z  |t          j        |          z  z
  }|t          j        |          z  |t          j        |          z  z   }d| |z   ||z
  |||z  d|z  t           j        z  |
| |z   ||z
  fz  }nId| |z   ||z
  |||z  d|z  t           j        z  | |z
  ||z   |||z  d|z  t           j        z  | |z   ||z
  fz  }|t          d}t          j	        t          d	|           d S )
Nr   gHz>r   r   zM %f,%f A %f,%f %f %d 0 %f,%fg     fz5M %f,%f A %f,%f %f 0, 0 %f,%f A %f,%f %f 0, 0 %f,%f zr%  r  )r   r   r   r   ro  rW  rX  r   r   r,  r   )rb  rc  xmymr  r/  rf  rd  ra   rg  rI  xtytr+   r3   r-   r5   r  r   s                      r   r  r  g  sS   	27R"W$	%	%B	B		AGa$'k!a$'k2D
4yy9TAK%7!8!89!D!D$'>>E$(2,,Vdhrll"$(1++TXa[[ 00$(1++TXa[[ 00$(2,,Vdhrll"$(1++TXa[[ 00$(1++TXa[[ 00.GGFQJ GG	2
 	
 GGGFQJ GGFQJ GGJ
 
 5))G	UFG,,,,,r   c                     t                               t          j                              }d|_        |                    dd           d| d|d|_        d S )Nzstroke:none;fill:#ff0000zinkscape:dxfpointr   zm ,zd 2.9375,-6.34375 0.8125,1.90625 6.84375,-6.84375 0,0 0.6875,0.6875 -6.84375,6.84375 1.90625,0.8125 z)r   r   r   r  r   r   r  )rb  rc  r  s      r   r  r    sZ    99U&(())D+DJHH #&&&& 22rrr	 	IIIr   c                        e Zd Zd Zd Zd ZdS )DxfInputc                    |                     dd           |                     dd           |                     dd           |                     dd           |                     d	d
           |                     dd
           |                     ddt          j                   |                     ddd           |                     dd           d S )Nz--tabr   )r   z--scalemethodmanualz--scalerN  z--textscalez--xmin0.0z--yminz--gcodetoolspointsF)r   typez
--encodinginput_encodelatin_1)destr   z--fontArial)add_argumentr   Boolean)rj   parss     r   add_argumentszDxfInput.add_arguments  s    '9555/8<<<)U333-777(E222(E222.EMRRR,^YOOO(G44444r   c                     |S rf   r_   )rj   streams     r   loadzDxfInput.load  s    r   c                 `   #$  j         a                      dd          }|                                at          j        at          j        t          ddddddd	          }t          j        |d
ddd           t          j        t          dddddddd          }t          j        |d
ddddd           t          j        |d
ddddd           t          j        |d
ddddd            fd##fd$$fd}dx}xaad}da	d }d }i }	i }
i }i a
i ai }i ad!a $            }|d          d"k    rst          j        t!          d#          t#          t%          |d                              z   d$z   t#          t%          |d%                             z              | _        d S d!}d&}d }d }d }d }d }d!}|d          r~|d%         d'k    rq $            }|d%         d(k    rd)}nW|d%         d*k    r|st          j        d+           d)}t           j        d,k    r|d%         d-k    r |d.          }nIt           j        dk    r9|d%         d/k    r |d0          a |d1          a|d%         d2k    r |d0          }|d%         d3k    r |d4          }|d%k    rN|d          d5k    rB|d%         }t                              t          j                            |                    |
|<   |d6k    r|d          d5k    r|d%         }g ||<   |d7k    r|d          d5k    r|d%         }|d8k    r-|d          d5k    r!|d%         }g t          |<   g ||<   g t          |<   |d          d5k    r|d%         d9k    rd%}|d          d5k    r|d%         d:k    rd6}|d          d5k    r|d%         d;k    rd7}|d          d5k    r|d%         d<k    rd8}|d%k    r*|d          d=k    r|d%}nkt1          |d%                   |	|<   |d6k    r@|d          d>k    r4|d6}n;||                             t5          |d%                              |d7k    r.|d          d?k    r"|d7}nt5          |d%                   t          |<   |d8k    r7|d          d@k    r+|d8}nt          |                             |d%                    |d8k    r2|d          dAk    r&|d8}n||                             |d%                    |d8k    r/|d          d.k    r#|d&k    rt1          |d%                   t          |<   |d          dk    r|d%         dBk    rd }|d          r|d%         d'k    q|d k    r@|d%k    rd9}n|d6k    rd:}n|d7k    rd;}nd<}t          j        dC|z   dDz              | _        d S t           j        d,k    rdEa|dk    rdanvt           j        dk    rda|t          k    rdF|t          z
  z  anKt5          t           j                  at5          t           j                  at5          t           j                  adGt8          j                            t           j                  t6          t          t          t           j        fz  t          _         t6          dHz  at5          t           j!                  a!d|
vr?t                              t          j                            d                    |
d<   dI|	d<   |"                                D ]T}dJ}||         D ]3}|d k    r|dKz  }|dLtG          j$        |t6          z  |z            z  z  }4|dJk    rdM||<   LdN|z   ||<   UdJa%t          a&|d          r7|d%         dOk    s|s( $            }|d%         d(k    rd)}tJ          r0|'                    |d                    rtP                              |d                     |d          dPv r|d%         )                    dQd$          }tU          j+        dRdJ|          }tU          j+        dSdJ|          }tU          j+        dTdJ|          }tU          j+        dUdJ|          }|}tU          j+        dVtX          |          }n5|d          dWv rt1          |d%                   }nt5          |d%                   }||d                                       |           nt[          |d%                   rt[          tJ                    r`tL          t          k    rtL          a.no|j/        rh|j0        sd|_0        |j0        |
vrDt                              t          j                            |j0                            |
|j0        <   |
|j0                 a.da1|j/        r)|j0        |	v r te          |	|j0                 tb                    a1|j3        rte          |j1        tb                    a1ti          dXtb          z  dYdZ          a5d[}|j6        rX|j7        d k    rMdH|j7        z  d\z  }|t6          z  }|d[k     rd[}tL          t          k    rti          dXtb          z  dYd]|z  d^          a5|j8        r!|j9        |v rtj          d_||j9                 z   z  a5da:|j;        r7tJ          d`k    r,tJ          dak    r!t5          |j:                  a:tt          dk     rd)a|<                    t          t          t6          tt          t                     tt          dbk    r-|j=        r&|j>        rdc|j?        z
  dc|j@        z
  c|_@        |_?        t          tJ                    }|r#tJ          dak    r |||           n ||           |d%         ddk    rd!}dea%t                      }g a(d }d}d }d } d }!d)}"|d          r|d%         dfk    r $            }|d%         dgk    r|d)k    r|"rtP                              d0           |d0                             |           tP                              d1           |d1                             |            tP                              dh           |dh                             |!           d }!d)}d)}"|d!k    r|d          dik    rGtP                              |d                     ||d                                       |d%                    |d          dk    r|d%         }|d          d.k    rt1          |d%                   }nf|d          d.k    rt1          |d%                   djk    rd!}"|d          dkv r5t5          |d%                   }|d          d0k    r|}n|d          d1k    r|} n|}!|d          r|d%         dfk    |"rtP                              d           |d                             |           tP                              d0           |d0                             |           tP                              d1           |d1                             |            tP                              dh           |dh                             |!           tP                              d.           |d.                             |           |d%         a%t                      }g a(|d          r|d%         dOk    %|(t          r!t          j        t!          dl                     | _        d S )mNgl6͈@gCP(@)widthr   marker	DistanceXautor  zoverflow:visible)r  orientrefXrefYr   r  zM 3,-3 L -3,3 M 0,-5 L  0,5z stroke:#000000; stroke-width:0.5r%  patternHatchuserSpaceOnUser(   0)r  patternUnitsr  r   r   r   z
M8 4 l-4,4r   z0.25square)r&  strokerx  linecapz
M6 2 l-4,4z
M4 0 l-4,4c                       j                                                                                             t          j                  S rf   )documentreadlinestripdecoder   r  )rj   s   r   	_get_linez"DxfInput.effect.<locals>._get_line  s4    =))++1133::7;OPPPr   c                  ,                                fS rf   r_   )r  s   r   get_linez!DxfInput.effect.<locals>.get_line  s    9;;		++r   c                 ^                 }|d         | k    rt          |d                   S dS )Nr   r   r  )r	  )r   r   r  s     r   	get_groupz"DxfInput.effect.<locals>.get_group  s2    8::DAw%T!W~~%3r   r  r   r   FzAutoCAD Binary DXFzMInkscape cannot read binary DXF files. 
Please convert to ASCII format first.ru  r   *BLOCKSENTITIESTz$PDMODEr  filez$MEASUREMENTrV   z$EXTMINr*   r2   z$EXTMAXz$LTSCALEr:   r   r   r   ru   LAYERLTYPEDIMSTYLESTYLErU   49140r"   4ENDTABz0Import stopped. DXF is incorrect.
group code 2 (z) is missinggffffff9@g     @j@z/%s - scale = %f, origin = (%f, %f), method = %sgx<@   r   z 0.5,z%.4f,zstroke-linecap: roundzstroke-dasharray:ENDSEC)r   r   r"   r$   r&   r(   z\~z\^Iz{\\Lz\\S.*;z\\W.*;z\\U\+([0-9A-Fa-f]{4}))rU   rV   rZ   r[   rM  none)r  rJ   rw  g      Y@z%.3f)r  rJ   rx  r   LINEPOINTg      r5  POLYLINE
LWPOLYLINESEQENDVERTEXrC   r$   r   )r*   r2   rC   zlAn object that has the extrude parameter set was detected. The imported figure may be displayed incorrectly.)Cr   get_templategetrootsvgr  r   r,  r   r   r   rp  style_font3r   
be_extruder   r  rv  r   r   r  scalemethodr   Layernewr   r   r	  r;   osr  basename
input_filedescr   keysr   fabsentityr  rp   rC  r{  resubr   
has_exportr   has_layer_namer)   rI   r   	has_colorr   r   has_line_weightrR   has_line_typer%   rQ   has_extruder   r   r6  rG   rH   
get_exportr   )%rj   docr  r  r  xmaxltscalemeasurementflaglayer_colorslayer_nodes	linetypesstyle_font4r   
inENTITIES
style_name	layernamelinename	stylenameerrno
pdmode_errerrMsglinetypelengthr   valr  exporter	inVertexsflag70val8val10val20val42validr  r  s%   `                                  @@r   effectzDxfInput.effect  s4   * ,ooNNkkmmx!! + 

 

 	2; 	
 	
 	
 " 0 
 
 	!# &#	 		
 		
 		
 	!# &#	 		
 		
 		
 	!# &#	 		
 		
 		
	Q 	Q 	Q 	Q 	Q	, 	, 	, 	, 	,	 	 	 	 	 !  td$	
xzz7***N<  c$q'll##	$
  c$q'll##$    DMF

		

1g E	$q'X--8::DAw*$$!
Aw)##J#TUUU!
"f,,7n,,"+)D//K$..7i''$9T??D$9T??D7i''$9T??DAw*$$#)D//qyyT!W^^ G	),1K1K)L)LI&qyyT!W^^7&(	(#qyyT!W^^ G	qyyT!W^^!!W
*,J'*,J'.0
+Aw#~~$q'W"4"4Aw#~~$q'W"4"4Aw#~~$q'Z"7"7Aw#~~$q'W"4"4qyyT!W__$E*-d1g,,Y'qyyT!W__#E(#**5a>>:::qyyT!W--$E$)$q'NNy!qyyT!W^^%EJ'..tAw777qyyT!W^^%EJ'..tAw777qyyT!W__$$25d1g,,OJ/Aw#~~$q'X"5"5K 1g E	$q'X--L A::zz ! !# NC !  
  DMF&((Ec!! F**Ed{{-'-((E&&D&&DDGW/00H
 
 	'+,,	k!!"wwu{s';';<<K !L!(( 
	E 
	EHH#H- N NQ;;'HH$)FUNW4L*M*M MMHH2~~&=	(##&9H&D	(##1g S	47h..j.8::DAw*$$!
 O$--Q00 ODG$$$7<<<q'//%55C &S11C&"c22C&B44C&B44CC&!9>3OOCC!W 888d1g,,CCQ..CT!W$$S))))DG$$ |f%% =+}} %, 
=# 2.1DO?+== <?77 % @ @< <K8 !,DO <%E* W?l::$0do1NPU$V$VE~ @ ,TZ ? ?'4%<(P(PQQEA+ "+a// +d.> > FAJA 3ww$' %(326,068>
%& %&)" )" ) E>Y66!S9T^+D%DDE!G' 2"f,,6W3D3D&+DL&9&9G&}}-1
&&tT5'6JJJ$> do  %
 2 % 3 4DK  *&11H +!W,,$HT1----$HTNNN7j(( %I)F)++DDFDEEE Eq' !0tAw(':':'xzz7h..(D00#( !.$(KK$5$5$5$(J$5$5e$<$<$<$(KK$5$5$5$(J$5$5e$<$<$<$(KK$5$5$5$(J$5$5e$<$<$<,-E(,I$(E$--#Aw#~~ $DG 4 4 4 $T!W 4 4T!W = = =#Aw#~~'+Aw#Aw$),T!W#Aw$#&tAw<<2#5#5,1E#Aw*<<<&+DGnn#'7d??,/EE%)!W__,/EE,/EC q' !0tAw(':':D  1C(((S	((...D)))T
))%000D)))T
))%000D)))T
))%000KK%%%J%%f---a%''g 1g S	47h..j.p  	NH    r   N)r   r   r   r  r  r  r_   r   r   r  r    sF        	5 	5 	5  h h h h hr   r  c                 p    t                                          d|                                 z   d           S )Nexport_)globalsgetloweropts    r   r  r  [  s'    99==SYY[[0$777r   c                 $    t          |           d uS rf   )r  r  s    r   r  r  _  s    c??$&&r   __main__)r   )3r   r  r  sysr   collectionsr   urllib.parser   lxmlr   r   inkex.localizationr   rv  r   r   r   export_viewportexport_endsecr   r   r   r   r   r   r   r  r  r   r0  r3  r7  r<  r>  rA  r@  rh  rr  r  r  r  r  r  r  InputExtensionr  r  r  r   runr_   r   r   <module>r$     s
  ,  
			 				 



  # # # # # #              1 1 1 1 1 1A
 A
 A
H   *FH FH FH FH FH[ FH FH FHR $ $ $
# # #  + + +D  2" " "J-  -  - `J J J    2W5 W5 W5tT T T
 
 
(
 
 
*5 5 5# # #35 35 35lT5 T5 T5n50 50 50p*> *> *>Z
 
 
  
  *- *- *-Z  w w w w wu# w w wt8 8 8' ' ' zHJJNN r   