<?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>
    <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="bool" gui-text="Create preview">true</param>
            <param name="graffiti-create-linearization-preview" type="bool" 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" appearance="radio" 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="optiongroup" appearance="combo" gui-text="Units (mm or in):">
                <option value="G21 (All units in mm)">mm</option>
                <option value="G20 (All units in inches)">in</option>
            </param>

            <label xml:space="preserve">
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).
            </label>
        </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="bool" 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="bool" 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="bool" 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="optiongroup" appearance="combo" gui-text="Units (mm or in):">
                <option value="G21 (All units in mm)">mm</option>
                <option value="G20 (All units in inches)">in</option>
            </param>
            <param name="postprocessor" type="optiongroup" appearance="combo" gui-text="Post-processor:">
                <option context="GCode postprocessor" value=" ">None</option>
                <option value="parameterize();">Parameterize Gcode</option>
                <option value="flip(y);parameterize();">Flip y axis and parameterize Gcode</option>
                <option value="round(4);">Round all values to 4 digits</option>
                <option 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</option>
            </param>
            <param name="postprocessor-custom" type="string" gui-text="Additional post-processor:"></param>


            <param name="create-log" type="bool" 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'>
            <label xml:space="preserve">
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
</label>

        </page>

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