<?xml version="1.0" encoding="UTF-8"?>

<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
    <_name>Graffiti</_name>
    <id>ru.cnc-club.filter.gcodetools_graffiti_orientation</id>
	<dependency type="executable" location="extensions">gcodetools.py</dependency>
	<dependency type="executable" location="extensions">inkex.py</dependency>
	<param name='active-tab' type="notebook">

	<page name='graffiti' _gui-text='Graffiti'>	
		<param name="graffiti-max-seg-length" type="float" precision="5" min="0" max="1000" _gui-text="Maximum segment length:">10</param>
		<param name="graffiti-min-radius" type="float" precision="5" min="0" max="1000" _gui-text="Minimal connector radius:">10</param>
		<param name="graffiti-start-pos" type="string" _gui-text="Start position (x;y):">(0.0;0.0)</param>
		<param name="graffiti-create-preview" type="boolean" _gui-text="Create preview">true</param>
		<param name="graffiti-create-linearization-preview" type="boolean" _gui-text="Create linearization preview">true</param>
		<param name="graffiti-preview-size" type="int" min="100" max="10000" _gui-text="Preview's size (px):">800</param>
		<param name="graffiti-preview-emmit" type="int" min="100" max="10000" _gui-text="Preview's paint emmit (pts/s):">1000</param>
	</page>

		<page name='orientation' _gui-text='Orientation'>	

			<param name="orientation-points-count" type="optiongroup" _gui-text="Orientation type:">
<_option value="2">2-points mode
(move and rotate,
maintained aspect ratio X/Y)</_option>
<_option value="3">3-points mode
(move, rotate and mirror, 
different X/Y scale)</_option>
<_option value="graffiti">graffiti points</_option>
<_option value="in-out reference point">in-out reference point</_option>

			</param>
			<param name="Zsurface" type="float" precision="5" min="-1000" max="1000" _gui-text="Z surface:">0</param>
			<param name="Zdepth" type="float" precision="5" min="-1000" max="1000" _gui-text="Z depth:">-1</param>
			<param name="unit" type="enum" _gui-text="Units (mm or in):">
				<_item value="G21 (All units in mm)">mm</_item>
				<_item value="G20 (All units in inches)">in</_item>
			</param>

			<_param name="help" type="description">
Orientation points are used to calculate transformation (offset,scale,mirror,rotation in XY plane) of the path.
3-points mode only: do not put all three into one line (use 2-points mode instead).

You can modify Z surface, Z depth values later using text tool (3rd coordinates).

If there are no orientation points inside current layer they are taken from the upper layer.

Do not ungroup orientation points! You can select them using double click to enter the group or by Ctrl+Click.

Now press apply to create control points (independent set for each layer).
			</_param>
		</page>

		<page name='options' _gui-text='Options'>
			<param name="Zscale" type="float" precision="5" min="-100000" max="100000" _gui-text="Scale along Z axis:">1</param>			
			<param name="Zoffset" type="float" precision="5" min="-100000" max="100000" _gui-text="Offset along Z axis:">0.0</param>
			<param name="auto_select_paths" type="boolean" _gui-text="Select all paths if nothing is selected">true</param>
			<param name="min-arc-radius" type="float" precision="5" min="-1000" max="1000"  _gui-text="Minimum arc radius:">0.05</param>
			<param name="comment-gcode" type="string" _gui-text="Comment Gcode:"></param>
			<param name="comment-gcode-from-properties" type="boolean" _gui-text="Get additional comments from object's properties">False</param>
			
		</page>

		<page name='preferences' _gui-text='Preferences'>
			<param name="filename" type="string" _gui-text="File:">output.ngc</param>
			<param name="add-numeric-suffix-to-filename" type="boolean" _gui-text="Add numeric suffix to filename">true</param>
			
			<param name="directory" type="string" _gui-text="Directory:">/home</param>

			<param name="Zsafe" type="float" precision="5" min="-1000" max="1000" _gui-text="Z safe height for G00 move over blank:">5</param>
			<param name="unit" type="enum" _gui-text="Units (mm or in):">
				<_item value="G21 (All units in mm)">mm</_item>
				<_item value="G20 (All units in inches)">in</_item>
			</param>
			<param name="postprocessor" type="enum" _gui-text="Post-processor:">
				<_item msgctxt="GCode postprocessor" value=" ">None</_item>
				<_item value="parameterize();">Parameterize Gcode</_item>
				<_item value="flip(y);parameterize();">Flip y axis and parameterize Gcode</_item>
				<_item value="round(4);">Round all values to 4 digits</_item>
				<_item value='regex("G01 Z([0-9\.\-]+).*\(Penetrate\)", lambda match: "G00 Z%f (Fast pre-penetrate)\n%s" %(float(match.group(1))+5, match.group(0)));'>Fast pre-penetrate</_item>
			</param>
			<param name="postprocessor-custom" type="string" _gui-text="Additional post-processor:"></param>			
			

			<param name="create-log" type="boolean" _gui-text="Generate log file">false</param>			
			<param name="log-filename" type="string" _gui-text="Full path to log file:"></param>			
			
		</page>

		<page name='help' _gui-text='Help'>
			<_param name="fullhelp" type="description">
Gcodetools plug-in: converts paths to Gcode (using circular interpolation), makes offset paths and engraves sharp corners using cone cutters. 
This plug-in calculates Gcode for paths using circular interpolation or linear motion when needed.

Tutorials, manuals and support can be found at
English support forum:
	http://www.cnc-club.ru/gcodetools
	
and Russian support forum:
	http://www.cnc-club.ru/gcodetoolsru

Credits: Nick Drobchenko, Vladimir Kalyaev, John Brooker, Henry Nicolas, Chris Lusby Taylor.

Gcodetools ver. 1.7
</_param>	

		</page>

	</param>	
    <effect>
		<effects-menu>
			<submenu _name="Gcodetools"/>
		</effects-menu>
		<object-type>path</object-type>
    </effect>
    <script>
        <command reldir="extensions" interpreter="python">gcodetools.py</command>
    </script>
</inkscape-extension>
