<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
    <_name>The Plaster Tool - Plotty</_name>
    <id>fablabchemnitz.de.plaster</id>
    <dependency type="executable" location="extensions">fablabchemnitz_plaster.py</dependency>
    <dependency type="executable" location="extensions">inkex.py</dependency>
    <param name="main_tabs" type="notebook">
        <page name="tab_export" gui-text=" Export it! ">
            <param name="desc_0" type="description" appearance="header">File export settings</param>
            <param name="directory" type="string" _gui-text="Export directory:">~/Desktop</param>
            <param name="filename" type="string" _gui-text="Export filename:">output.gcode</param>
            <param name="add-numeric-suffix-to-filename" type="boolean" _gui-text="Add numeric suffix to filename (*.* to *_XXXX.*)">false</param>
            <param name="show-output-path" type="boolean" _gui-text="Show popup containg output directory of saved file">false</param>
            <param name="desc_1" type="description" appearance="header">InkScape performance</param>
            <param name="draw-calculation-paths" type="boolean" _gui-text="Draw calculated paths">false</param>
            <param name="desc_2" type="description">(disable for slow computers or huge images; raises performance)</param>
        </page>
        <page name="tab_speed_settings" gui-text=" Speed/geometry settings ">
            <param name="travel-speed" type="int" min="1" max="99999" _gui-text="Travel speed (mm/min or in/mm):">7000</param>
            <param name="tooling-speed" type="int" min="1" max="99999" _gui-text="Tooling speed (mm/min or in/mm):">2000</param>
            <param name="delay-time" type="int" min="0" max="5000" _gui-text="Servo speed/dwell time/delay (ms)">200</param>
            <param name="biarc-max-split-depth" type="int" min="1" max="100" _gui-text="BiArc maximum split depth:">4</param>
            <param name="biarc-tolerance" type="float" precision="4" _gui-text="BiArc tolerance:">1</param>
            <param name="scale-uniform" type="float" precision="4" min="-99999" max="99999" _gui-text="Uniform XY scale (%):">100,0</param>
            <param name="coordinates-unit" type="enum" _gui-text="Units:">
                <item value="MM">mm</item>
                <item value="IN">in</item>
            </param>
        </page>
        <page name="tab_tool_settings" gui-text=" Tool settings ">
            <param name="desc_3" type="description" appearance="header">Pen adjusting</param>
            <param name="pen-index" type="int" min="0" max="10" _gui-text="Servo (pen tool) index P">0</param>
            <param name="pen-up-angle" type="float" precision="4" min="0.0" max="180.0" _gui-text="Pen up angle S(0,0 .. 180,0°):">33,0</param>
            <param name="pen-down-angle" type="float" precision="4" min="0.0" max="180.0" _gui-text="Pen down angle S(0,0 .. 180,0°):">45,0</param>
            <param name="desc_4" type="description" appearance="header">Laser adjusting</param>
            <param name="tool-index" type="int" min="0" max="10" _gui-text="Laser tool index T">0</param>
            <param name="laserpower" type="float" precision="4" min="0" max="100" _gui-text="Laser power S(0 .. 100 %):">0</param>
        </page>
        <page name="tab_loops" gui-text=" Loops/Incrementer ">
            <param name="repeatings" type="int" min="0" max="9999" _gui-text="Loops ('0' means single run):">0</param>
            <param name="repeatings-command" type="string" _gui-text="Command(s) before repeating:">G4 P1000; wait 1 second</param>
            <param name="repeatings-offset-x" type="float" precision="4" min="-99999" max="99999" _gui-text="X-Offset (in or mm):">0.000</param>
            <param name="repeatings-offset-y" type="float" precision="4" min="-99999" max="99999" _gui-text="Y-Offset (in or mm):">0.000</param>
            <param name="scale-increment" type="float" precision="4" min="-99999" max="99999" _gui-text="Scale increment (+/- %):">0,0</param>
            <param name="repeatings-mode" type="enum" _gui-text="Mode:">
                <item value="partial">[Partial] Repeat geometry outline only</item>
                <item value="full">[Full] Repeat whole program</item>
            </param>
            <param name="repeatings-pen-increment" type="float" precision="4" min="-180.0" max="180.0" _gui-text="Pen up/down angle increment (+/- °):">0,0</param>
            <param name="laserpower-increment" type="float" precision="4" min="0.0" max="100.0" _gui-text="Laser power increment (+/- % of max. power):">0,0</param>
        </page>
        <page name="tab_randomize" gui-text=" Randomize ">
            <param name="desc_5" type="description" appearance="header">Random laser power</param>
            <param name="randomize-laserpower" type="boolean" _gui-text="Randomize laser power for each line segment">false</param>
            <param name="randomize-laserpower-lowerval" type="float" precision="4" min="0" max="100" _gui-text="Random laser power, lower bound (rel %):">0,0</param>
            <param name="randomize-laserpower-upperval" type="float" precision="4" min="0" max="100" _gui-text="Random laser power, upper bound (rel %):">0,0</param>
            <param name="desc_6" type="description" appearance="header">Random down position pen angle (pressure)</param>
            <param name="randomize-penangle" type="boolean" _gui-text="Randomize pen angle for each line segment">false</param>
            <param name="randomize-penangle-lowerval" type="float" precision="4" min="0.00001" max="180.0" _gui-text="Random pen angle, lower bound (rel °):">0,0</param>
            <param name="randomize-penangle-upperval" type="float" precision="4" min="0.00001" max="180.0" _gui-text="Random pen angle, upper bound (rel °):">0,0</param>
            <param name="desc_7" type="description" appearance="header">Random tooling speed</param>
            <param name="randomize-speed" type="boolean" _gui-text="Randomize tooling speed for each line segment">false</param>
            <param name="randomize-speed-lowerval" type="float" precision="4" min="0.00001" max="99999" _gui-text="Random tooling speed, lower bound (rel mm/min or in/mm):">0,0</param>
            <param name="randomize-speed-upperval" type="float" precision="4" min="0.00001" max="99999" _gui-text="Random tooling speed, upper bound (rel mm/min or in/mm):">0,0</param>
            <param name="desc_8" type="description">Note: minimum tooling speed is 1.0</param>
            <param name="desc_9" type="description" appearance="header">Random dwell time</param>
            <param name="randomize-delay" type="boolean" _gui-text="Randomize dwell time">false</param>
            <param name="randomize-delay-lowerval" type="float" precision="4" min="0.00001" max="99999" _gui-text="Random dwell time, lower bound (rel ms):">0,0</param>
            <param name="randomize-delay-upperval" type="float" precision="4" min="0.00001" max="99999" _gui-text="Random dwell time, upper bound (rel ms):">0,0</param>
        </page>
        <page name="tab_firmware" gui-text=" Firmware/GCode ">
            <param name="desc_9" type="description" appearance="header">Machine type</param>
            <param name="machine-type" type="enum" _gui-text="Generate code for:">
                <item value="laser">Laser</item>
                <item value="plotter">Plotter</item>
            </param>
            <param name="desc_10" type="description" appearance="header">Controller firmware/wiring</param>
            <param name="gcode-flavour-preset" type="optiongroup" _gui-text="Select preset:">
                <option value="repetier_laser">Repetier (with laser diode on tool pin, takes M452 + M3/M5 commands)</option>
                <option value="repetier_fan">Repetier (with laser diode on fan pin, takes M106 command)</option>
                <!--<option value="marlin">Marlin (n.a. yet)</option>
				<option value="mk4duo">MK4duo (n.a. yet)</option>
				<option value="reprap">RepRap (n.a. yet)</option>
				<option value="grbl">GRBL (n.a. yet)</option>
				<option value="smoothie">Smoothie (n.a. yet)</option>-->
            </param>
            <param name="desc_11" type="description" appearance="header">Other GCode modifications</param>
            <param name="header-command" type="string" _gui-text="Header command(s):">;plugin code by Mario Voigt (FabLab Chemnitz)</param>
            <param name="footer-command" type="string" _gui-text="Footer command(s):">;plugin code by Mario Voigt (FabLab Chemnitz)</param>
            <param name="desc_12" type="description" appearance="header">Safety</param>
            <param name="auto-homing" type="boolean" _gui-text="X/Y Homing at the beginning">true</param>
            <param name="auto-disable-tool" type="boolean" _gui-text="Disable tool at the end (turn off laser diode/unpower servo motor)">true</param>
        </page>
        <page name="tab_help" gui-text=" About ">
            <param name="desc_h_0" type="description" appearance="header">This dirty program creates GCode in x,y dimensions for cartesian CNC machines with tool type plotter/laser. It can handle a single servo motor for pen up and down movements. The z dimension is not implemented. Also multiple tools are not supported. Please define the hardware index of your single laser diode (tool index) and/or pen servo motor (servo index) to use this plugin. It's just intended to use with simple machine constructions. If you build a multi tool machine like a 3D printer with integrated/changeable sub tools for milling, 3D scanning, plotting or laser cutting, you just should pimp this plugin for your own needs.</param>
        </page>
        <page name="tab_faq" gui-text=" FAQ ">
            <param name="desc_f_1" type="description">1) Header, Footer, Repeat commands: Separate each line with '\n' to put more commands on input line</param>
            <param name="desc_f_2" type="description">2) Usage of servo motor (common syntax): M340 P°TOOLINDEX° S°ANGLE°</param>
            <param name="desc_f_3" type="description">3) Export directory: Put in '~/Desktop' to quickly push the file to your Desktop</param>
            <param name="desc_f_4" type="description">4) Pen Up/Down Increment (+/-): You can use this to regulate the pressure or to grind deeper with your pen/cutter/... for each loop</param>
            <param name="desc_f_5" type="description">5) X/Y-Offset: Use this for quickly creating a pattern in X, Y or combined XY directions</param>
            <param name="desc_f_6" type="description">6) Tooling speed: Define the speed of your pen or laser diode in mm/min or in/min</param>
            <param name="desc_f_7" type="description">7) If your image does not update scale and returns wrong dimensions in GCode, please delete orientation points group 'gcodetools' and run this plugin again!</param>
            <param name="desc_f_8" type="description">8) Pen moves in wrong direction: Just swap Pos 1 and Pos 2!</param>
            <param name="desc_f_9" type="description">9) Use of this plugin with multiple machines: If you hate to reconfigure this plugin each time you swap the machine just make use of a dirty trick: Just copy and rename the plaster.inx file into °ROOT°/share/extensions. You'll have to change the value "_name" and "id" below.</param>
        </page>
        <page name="tab_info" gui-text=" License/Version ">
            <param name="desc_i_1" type="description" appearance="header">The Plaster (Plotter-Laser) Tool is based on ...</param>
            <param name="desc_i_2" type="description">* Repetier Laser Tool (GNU GPL) from Hot-World GmbH und Co. KG (http://www.repetier.com)</param>
            <param name="desc_i_3" type="description">* EggBot Hatch (GNU GPL v2) from Evil Mad Scientist (http://www.evilmadscientist.com)</param>
            <param name="desc_i_4" type="description">* Inkscape Laser Tool Plug-in (GNU GPL) from JTECH Photonics (http://www.jtechphotonics.com)</param>
            <param name="desc_i_4" type="description">* THLaser Laser Plug-in (GNU GPL) from think|haus (http://www.thinkhaus.org)</param>
            <param name="desc_i_5" type="description">------------------------------------------------------------------------</param>
            <param name="desc_i_6" type="description">(Re-)written by Mario Voigt (FabLab Chemnitz) (https://gitea.fablabchemnitz.de)</param>
            <param name="desc_i_7" type="description">------------------------------------------------------------------------</param>
            <param name="desc_i_8" type="description">Last update: 03.11.2019</param>
            <param name="desc_i_9" type="description" appearance="header">you found a bug or got some fresh code? Just report to mario.voigt@stadtfabrikanten.org. Thanks!</param>
        </page>
    </param>
    <effect>
        <effects-menu>
            <submenu _name="FabLab Chemnitz">
				<submenu _name="Import/Export/Transfer"/>
			</submenu>
        </effects-menu>
        <object-type>path</object-type>
    </effect>
    <script>
        <command reldir="extensions" interpreter="python">fablabchemnitz_plaster.py</command>
    </script>
</inkscape-extension>