<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
    <_name>Paths to OpenSCAD</_name>
    <id>fablabchemnitz.de.paths2openscad</id>
    <dependency type="extension">org.inkscape.output.svg.inkscape</dependency>
    <param name="tab" type="notebook">
        <page name="splash" _gui-text="Paths to OpenSCAD">
            <param name="fname" type="string" _gui-text="Output file">{NAME}.scad</param>
            <_param name="fname_help" type="description">Use '{NAME}.scad' here to use the name from svg.</_param>
            <param name="zsize" type="float" min="0" max="1000" precision="2" _gui-text="Depth (Z) [mm]">5.0</param>
            <_param name="zsize_help" type="description">Default 3D extrude depth (when no zsize is parsed from an svg object).</_param>
            <param name="parsedesc" type="boolean" _gui-text="Description parsing">true</param>
            <_param name="parsedesc_help" type="description">Read the extruded zsize, zoffset, scale per svg object from its description or ID. See the Extrusion Syntax tab for details.</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <param name="scadview" type="boolean" _gui-text="View in OpenSCAD">false</param>
            <_param name="scadview_help" type="description">Start OpenSCAD to view the 3D-model.</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <param name="scad2stl" type="boolean" _gui-text="Convert to STL">false</param>
            <_param name="scad2stl_help" type="description">Also save an .stl file next to the specified output file.</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <param name="stlpost" type="boolean" _gui-text="STL postprocessing">false</param>
            <_param name="stlpost_help" type="description">Start e.g. a slicer after converting to STL. See the Commands tab for details.</_param>
            <param name="stlmodule" type="boolean" _gui-text="Only create a module">false</param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
        </page>
        <page name="tuning" _gui-text="Tuning">
            <param name="smoothness" type="float" min="0.0001" max="5" precision="4" _gui-text="Smoothing">0.2</param>
            <_param name="smoothness_help" type="description">Used when rendering curves. Smaller values are smoother. Range: 0.0001 to 5
    </_param>
            <param type="float" name="chamfer" min="0.0" gui-text="Add chamfer radius [mm]" xml:lang="de">0</param>
            <param name="chamfer_fn" type="optiongroup" appearance="minimal" _gui-text="Chamfer präzision ($fn)">
                <option value="4">4: Rough (fast)</option>
                <option value="12">12: Medium (slow)</option>
                <option value="16">16: Fine (slower)</option>
                <option value="32">32: Perfekt (slowest)</option>
            </param>
            <_param name="outline_header" type="description" appearance="header">Outline Mode</_param>
            <_param name="outline_help" type="description">Objects are extruded into 3D either in normal mode, or in outline mode. Normally filled areas are extruded, ignoring the line width. Objects with no fill are rendered in outline mode.

Note: the 'Scale: XX %' instruction has no effect in outline mode.</_param>
            <param name="min_line_width" type="float" min="0.1" max="10" _gui-text="Minimum line width [mm]">1.0</param>
            <param type="float" name="line_width_scale_perc" min="1" max="10000" gui-text="Scale line width [%]">100.0</param>
            <param name="line_fn" type="optiongroup" appearance="minimal" _gui-text="Line width precision ($fn)">
                <option value="4">4: Rough (fast)</option>
                <option value="8">8: Medium (slow)</option>
                <option value="16">16: Fine (slower)</option>
                <option value="32">32: Perfekt (slowest)</option>
            </param>
            <param name="force_line" type="boolean" _gui-text="Force outline mode, ignore fill">False</param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
        </page>
        <page name="commands" _gui-text="Commands">
            <_param name="commands_help" type="description">Placeholders: You can use '{NAME}.scad' for the OpenSCAD file to read as specified as 'Output file' in the main tab. You can use '{NAME}.stl' for an STL file to write.
    </_param>
            <_param name="commands_help_warn" type="description">
Beware, Windows and Mac users: The shipped defaults are for Linux.</_param>
            <_param name="commands_help_mac" type="description">
Mac: /Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <!-- CAUTION: keep this command in sync with the default INX_SCADVIEW in paths2openscad.py -->
            <param name="scadviewcmd" type="string" _gui-text="View in OpenSCAD: ">openscad '{NAME}.scad'</param>
            <_param name="scadviewcmd_help" type="description">Is only started, if no command of the same name is running. Always started non-blocking. A running OpenSCAD automatically picks up changed file contents. Defaults:</_param>
            <_param name="scadviewcmd_default_linux" type="description">Linux: openscad '{NAME}.scad'</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <!-- CAUTION: keep this command in sync with the default INX_SCAD2STL in paths2openscad.py -->
            <param name="scad2stlcmd" type="string" _gui-text="Convert to STL: ">openscad '{NAME}.scad' -o '{NAME}.stl'</param>
            <_param name="stlpostcmd_help" type="description">Automatically run, when STL postprocessing is requested.</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
            <!-- CAUTION: keep this command in sync with the default INX_STL_POSTPROCESSING in paths2openscad.py -->
            <param name="stlpostcmd" type="string" _gui-text="STL postprocessing: ">cura '{NAME}.stl' &amp;</param>
            <_param name="stlpostcmd_help" type="description">Append an '&amp;' for non-blocking.</_param>
            <_param name="spacer" type="description">
                <!-- -->
            </_param>
        </page>
        <page name="extrusion" _gui-text="Extrusion Syntax">
            <_param name="extrusion_1" type="description" xml:space="preserve">The depth (Z-Axis) and other parameters can be defined through an svg object's description. The menu 'Object-&gt;Object Properties ...' (Shift-Ctrl-O) shows details of one selected object.

If an object's ID is in either name_XXX_mm or name_XXXmm
format, then XXX is translated into zsize in millimeters.
Use . or _ as separator for a decimal number.
Note that all whitespace or comma are saved as '_' in ID.
    </_param>
            <_param name="extrusion_2" type="description" appearance="header">Syntax for the object property description</_param>
            <_param name="extrusion_3" type="description" xml:space="preserve">Depth: 10 mm
  Linear extrusion length (or Z-Size)) of the object.

Antimatter: true
  Object is part of the difference set, which is
  cut away from all other objects.

Offset: 4.5 mm
  Move an object upwards to create a balcony (or window).

Taper: 90 %           or           Taper: 120,60 %
  Scale the object along its Z-axis. The bottom surface always
  is as drawn, but the top surface is scaled to this value.
  If two values are given (separated by Komma), different
  scaling applies along X- and Y-axis.

Parameters in the objects take precedence over groups.</_param>
        </page>
        <page name="info" _gui-text="About ...">
            <_param name="aboutpage" type="description" xml:space="preserve">
This extension converts Inkscape paths to
extruded polygons in OpenSCAD.  Before
using, some objects must firat be converted to paths
with the "Path &gt; Object to Path" menu item.

Inkscape's units of pixels are converted
to millimeters using the SVG standard's
definition of 96 px = 1 inch = 25.4 mm.
(Before inkscape 0.92 the standard was 90 px per inch,
Adobe products often use 75 px per inch)

v0.25
Dan Newman (dan newman @ mtbaldy us)
Josef Skladanka (jskladan @ redhat com)
Juergen Weigert (juergen @ fabmail org)

Find updates at https://github.com/fablabnbg/inkscape-paths2openscad/releases

<!-- keep the version numnber in sync with paths2openscad.py header comments and translated copies -->
</_param>
        </page>
    </param>
    <effect needs-live-preview="false">
        <object-type>all</object-type>
        <effects-menu>
            <submenu _name="FabLab Chemnitz">
				<submenu _name="Import/Export/Transfer"/>
			</submenu>
        </effects-menu>
    </effect>
    <script>
        <command reldir="extensions" interpreter="python">fablabchemnitz_paths2openscad.py</command>
    </script>
</inkscape-extension>