
    BPcL                         d Z ddlZddlmZ ddlmZmZ d Zd Z G d dej                  Z	e
d	k    r e	                                             dS dS )
aK  
This extension allow you to draw a isometric grid with inkscape
There is some options including subdivision, subsubdivions and custom line width
All elements are grouped with similar elements
These grid are used for isometric view in mechanical drawing or piping schematic
!!! Y Divisions can't be smaller than half the X Divions
    N)	Rectangle)MoveLinec                     |                     t          j                              }dt          |          dd|_        |                    d|           t          | |          t          ||          g|_        d S )N#000000nonestrokezstroke-widthfillinkscape:label)	addinkexPathElementstrstylesetr   r   path)x1y1x2y2widthnameparentelems           0/usr/share/inkscape/extensions/grid_isometric.py	draw_liner   !   sh    ::e'))**D%s5zz6RRDJHHt$$$b"tB||,DIII    c                     t          t          |           t          |          t          |          t          |                    }dt          |          |d|_        |                    d|           |S )N)xyr   heightr   r	   r   )r   r   r   r   )r    r!   whr   r   r   r   s           r   	draw_rectr%   (   sa    s1vvQs1vvc!ffEEED%s5zz4PPDJHHt$$$Kr   c                   0    e Zd Zd Zed             Zd ZdS )GridIsometricc                 4   |                     dt          ddd           |                     dt          ddd           |                     d	t          d
dd           |                     dt          ddd           |                     dt          ddd           |                     dt          ddd           |                     dt          ddd           |                     dt          ddd           |                     dt          d d!d"           d S )#Nz--x_divsx_divs   zMajor X Divisions)typedestdefaulthelpz--y_divsy_divszMajor Y Divisionsz--dxdxg      I@zMajor X division Spacingz	--subdivssubdivs   z!Subdivisions per Major X divisionz--subsubdivs
subsubdivsz$Subsubdivisions per Minor X divisionz	--divs_thdivs_thzMajor X Division Line thicknessz--subdivs_th
subdivs_thg      ?zMinor X Division Line thicknessz--subsubdivs_thsubsubdivs_thg?z"Subminor X Division Line thicknessz--border_th	border_th   zBorder Line thickness)add_argumentintfloat)selfparss     r   add_argumentszGridIsometric.add_arguments0   s   SxAT 	 	
 	
 	
 	SxAT 	 	
 	
 	
 	T4>X 	 	
 	
 	
 	4 	 	
 	
 	
 	7 	 	
 	
 	
 	2 	 	
 	
 	
 	2 	 	
 	
 	
 	 5 	 	
 	
 	
 	( 	 	
 	
 	
 	
 	
r   c                 6    d                     | j                  S )zGenerate label from optionsz"Grid_Polar:X{0.x_divs}:Y{0.y_divs})formatoptions)r<   s    r   container_labelzGridIsometric.container_labele   s!     4::L
 
 	
r   c              #   T  K   | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j        j	        | j        j
        dz   dz  k     r)t          | j        j
        dz   dz            | j        _	        | j        j        d| j        j
        z  z  }| j        j        d| j        j	        z  z  dz  }t          j                            d          }|V  t          j                            d          }|V  t          j                            d          }|V  | j        j        dk    r#t          j                            d          }|V  | j        j        dk    r#t          j                            d	          }|V  | j        j        dk    r#t          j                            d
          }|V  | j        j        dk    r#t          j                            d          }	|	V  | j        j        dk    r#t          j                            d          }
|
V  | j        j        dk    r#t          j                            d          }|V  t#          dd||| j        j        dd          V  | j        j        }| j        j        }d}d}d}d}d}d}t%          dd| j        j
        z  |z  |z            D ]T}|dz  }d}|| j        j        k    rd}|dz  }d}d}d}|| j        j        k    rd}d}d}d}|dk    rUt'          | j        j        |z  |z  |z  d| j        j        |z  |z  |z  || j        j        dt          |          z   |           |dk    rWd}t'          | j        j        |z  |z  |z  d| j        j        |z  |z  |z  || j        j        dt          |          z   |           |dk    rWd}t'          | j        j        |z  |z  |z  d| j        j        |z  |z  |z  || j        j        dt          |          z   |           V| j        j        }| j        j        }| j        j        |z  |z  }| j        j
        | j        j	        z   | j        j        z  | j        j        z  }| j        j
        | j        j        z  | j        j        z  }| j        j	        | j        j        z  | j        j        z  }d}d}d}d}d}d}t%          dt          |dz                      D ];}|dz  }d}|| j        j        k    rd}|dz  }d}d}d}|| j        j        k    rd}d}d}d}d|z  dz
  d|z  k     re|d|z  dz
  z  }|}d}||dz  z
  ||dz
  z  dz  z
  }|dk    rdt'          ||||| j        j        dt          |          z   |	           t'          ||z
  |||z
  || j        j        dt          |          z   |           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |
           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |           d|z  dz
  d|z  k    re|d|z  dz
  z  }|}d}||dz  z
  ||dz
  z  dz  z
  }|dk    rdt'          ||||| j        j        dt          |          z   |	           t'          ||z
  |||z
  || j        j        dt          |          z   |           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |
           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |           d|z  dz
  d|z  k    r|}||dz  z
  ||dz
  d|z  dz  z
  z  dz  z
  }d}||dz  z
  ||dz
  z  dz  z
  }|dk    r}|}||dz  z
  ||dz
  d|z  dz  z
  z  dz  z
  }|d|d|z  z
  z  dz
  z  }d}||k     rB|dk    rdt'          ||||| j        j        dt          |          z   |	           t'          ||z
  |||z
  || j        j        dt          |          z   |           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |
           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |           ||k     rB|dk    rdt'          ||||| j        j        dt          |          z   |	           t'          ||z
  |||z
  || j        j        dt          |          z   |           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |
           |dk    rfd}t'          ||||| j        j        dt          |          z   |           t'          ||z
  |||z
  || j        j        dt          |          z   |           =d S )Npx   r2   gz?MajorXGridlinesMajorYGridlinesMajorZGridlinesMinorXGridlinesSubMinorXGridlinesMinorYGridlinesSubMinorYGridlinesMinorZGridlinesSubMinorZGridlinesr   r   Border	MajorXDiv   gz?	MajorYDiv	MajorZDiv)svgunittouur   rA   r0   r4   r5   r6   r7   r/   r)   r:   r   Groupnewr1   r3   r%   ranger   )r<   xmaxymaxmajglxmajglymajglzminglxmminglxminglymminglyminglzmminglzsdssdcpt_div
cpt_subdivcpt_subsubdivcom_div
com_subdivcom_subsubdivitaillenb_ligne
nb_ligne_x
nb_ligne_yltxatyatxbtybs                                 r   generatezGridIsometric.generatel   sK     (++C,@,@4,GHH#x00T\5I1J1JT1QRR"&("3"3C8O4P4PSW4W"X"X%)X%6%6*++d2&
 &
" "&!2!23t|7M3N3NQU3U!V!V <4<#6#:a"?@@"%t|':Q'>!&C"D"DDL |!dl&9"9:|!dl&9"9:XE !233 !233 !233 <!##[__%677FLLL<"Q&&koo&:;;GMMM<!##[__%677FLLL<"Q&&koo&:;;GMMM<!##[__%677FLLL<"Q&&koo&:;;GMMM 1dD$,*@&(SSSSS \!l% 

q1t|22R7#=?? /	 /	AQMM 777 !a
 !
T\111
 !
!!LOa'",s2LOa'",s2L.#a&&(   Q
LOa'",s2LOa'",s2L+#a&&(   !||LOa'",s2LOa'",s2L(#a&&(   \!l%2%+\ 4<#66l"#l%& 	 L$,"669PP 	 L$,"669PP 	
 

q#hl++,, a	 a	AQMM 777 !a
 !
T\111
 !
Q!J//Q!,V|44!a%8H88ST A%%2#c!ff,   s
s
2#c!ff,   ??!"J/#c!ff,   s
s
/#c!ff,   a<<G,#c!ff,   s
s
,#c!ff,   Q!Z00Q!,V|44!a%8H88ST A%%2#c!ff,   s
s
2#c!ff,   ??!"J/#c!ff,   s
s
/#c!ff,   a<<G,#c!ff,   s
s
,#c!ff,   Q!J//-.Q1z>Q*>!?@8KM 
 V|44!a%8H88ST!88C L12!QUq:~.B%CDxOQ 
 !Aa*n)=$>$BCCCTzz(A--% # # # # $ : +c!ff 4 '   & $s
 # $s
 # $ : +c!ff 4 '   &??)*J% # # # # $ 7 +c!ff 4 &   & $s
 # $s
 # $ 7 +c!ff 4 &   #a<<&'G% # # # # $ 4 +c!ff 4 &   & $s
 # $s
 # $ 4 +c!ff 4 &   Tzz(A--% # # # # $ : +c!ff 4 '   & $s
 # $s
 # $ : +c!ff 4 '   &??)*J% # # # # $ 7 +c!ff 4 &   & $s
 # $s
 # $ 7 +c!ff 4 &   #a<<&'G% # # # # $ 4 +c!ff 4 &   & $s
 # $s
 # $ 4 +c!ff 4 &  sa	 a	r   N)__name__
__module____qualname__r>   propertyrB   rv    r   r   r'   r'   /   sS        3
 3
 3
j 
 
 X
s s s s sr   r'   __main__)__doc__r   r   inkex.pathsr   r   r   r%   GenerateExtensionr'   rw   runr{   r   r   <module>r      s   (         " " " " " " " "- - -  p p p p pE+ p p pf zMOO r   