lot of inx refactorings - changed menu logic

This commit is contained in:
Mario Voigt 2021-11-03 03:52:37 +01:00
parent 2ea449bfb6
commit c28164f0fd
112 changed files with 484 additions and 458 deletions

View File

@ -13,9 +13,9 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -54,7 +54,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Animation"/>
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -23,9 +23,9 @@ c1,c2,c3 = curvatures of first 3 osculating circles</label>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -6,7 +6,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -21,8 +21,8 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Streaks And Blobs" />
</submenu>
</effects-menu>
</effect>

View File

@ -17,9 +17,9 @@ You can paste Bouwkamp codes with or without various formatting characters (like
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -19,7 +19,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>

View File

@ -39,8 +39,8 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Streaks And Blobs" />
</submenu>
</effects-menu>
</effect>

View File

@ -16,7 +16,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Paths - Join/Order"/>
</submenu>
</effects-menu>
</effect>

View File

@ -59,7 +59,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>

View File

@ -76,7 +76,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
<menu-tip>Generate color harmonies and save as palette file</menu-tip>

View File

@ -18,7 +18,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Dimensioning/Measuring"/>
</submenu>
</effects-menu>
</effect>

View File

@ -178,7 +178,7 @@ Tips:
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -90,7 +90,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -28,7 +28,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Destructive Clip</name>
<id>fablabchemnitz.de.destructive_clip</id>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
</submenu>
</effects-menu>
<menu-tip>"Destructively" clip selected paths using the topmost as clipping path</menu-tip>
</effect>
<script>
<command location="inx" interpreter="python">destructive_clip.py</command>
</script>
<name>Destructive Clip</name>
<id>fablabchemnitz.de.destructive_clip</id>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
<menu-tip>"Destructively" clip selected paths using the topmost as clipping path</menu-tip>
</effect>
<script>
<command location="inx" interpreter="python">destructive_clip.py</command>
</script>
</inkscape-extension>

View File

@ -48,7 +48,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Dimensioning/Measuring"/>
</submenu>
</effects-menu>
</effect>

View File

@ -5,9 +5,9 @@
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
</submenu>
<submenu name="FabLab Chemnitz">
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -1,22 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Eggmazing</name>
<id>fablabchemnitz.de.eggmazing</id>
<param name="mazeSize" type="optiongroup" appearance="combo" gui-text="Maze dimensions (w x h):">
<option value="SMALL">Small (32 x 6)</option>
<option value="MEDIUM">Medium (64 x 12)</option>
<option value="LARGE">Large (96 x 18)</option>
<option value="XLARGE">Extra large (128 x 24)</option>
</param>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">eggmazing.py</command>
</script>
<name>Eggmazing</name>
<id>fablabchemnitz.de.eggmazing</id>
<param name="mazeSize" type="optiongroup" appearance="combo" gui-text="Maze dimensions (w x h):">
<option value="SMALL">Small (32 x 6)</option>
<option value="MEDIUM">Medium (64 x 12)</option>
<option value="LARGE">Large (96 x 18)</option>
<option value="XLARGE">Extra large (128 x 24)</option>
</param>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">eggmazing.py</command>
</script>
</inkscape-extension>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Modify existing Path(s)"/>
</submenu>
</effects-menu>
</effect>

View File

@ -53,7 +53,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Transformations" />
</submenu>
</effects-menu>
<menu-tip>Widen the document to send all lines properly to Epilog Dashboard</menu-tip>

View File

@ -9,7 +9,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)" />
<submenu name="Transformations" />
</submenu>
</effects-menu>
</effect>

View File

@ -18,7 +18,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Modify existing Path(s)"/>
</submenu>
</effects-menu>
</effect>

View File

@ -32,7 +32,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -4,21 +4,21 @@
<id>fablabchemnitz.de.flash_burst</id>
<param name="r1" type="int" min="1" max="20" gui-text="Radius - inner (min)">10</param>
<param name="r2" type="int" min="1" max="20" gui-text="Radius - inner (max)">10</param>
<separator/>
<separator />
<param name="R1" type="int" min="200" max="500" gui-text="Radius - outer (min)">350</param>
<param name="R2" type="int" min="200" max="500" gui-text="Radius - outer (max)">350</param>
<separator/>
<separator />
<param name="a1" type="int" min="1" max="45" gui-text="Angle (min)">5</param>
<param name="a2" type="int" min="1" max="45" gui-text="Angle (max)">10</param>
<separator/>
<separator />
<param name="ad1" type="int" min="1" max="10" gui-text="Angle delta (min)">3</param>
<param name="ad2" type="int" min="1" max="10" gui-text="Angle delta (max)">5</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Streaks And Blobs" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -9,7 +9,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Animation"/>
</submenu>
</effects-menu>
</effect>

View File

@ -165,7 +165,7 @@ Typical ruler set: 7.25, 9.5, 10, 12, 14, 15, 16, 20
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Dimensioning/Measuring"/>
<submenu name="Music"/>
</submenu>
</effects-menu>
</effect>

View File

@ -5,9 +5,9 @@
<effect implements-custom-gui="true">
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Streaks And Blobs" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -83,9 +83,9 @@ Caution: Undercut is currently not generated. E.g. a gear at pressure angle 20 d
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Gear Generators"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gears" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -1,25 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Gears2</name>
<id>fablabchemnitz.de.gears2</id>
<param name="tab" type="notebook">
<page name="Options" gui-text="Options">
<param name="teeth" type="int" min="6" max="500" gui-text="Number of teeth">24</param>
<param name="pressure_angle" type="float" min="1" max="40" gui-text="Pressure angle">20</param>
<param name="size_type" type="optiongroup" appearance="combo" gui-text="Size type">
<option value="1">Module (mm)</option>
<option value="2">Pitch diameter (inches)</option>
<option value="3">Diametral pitch (inches)</option>
</param>
<param name="size" type="float" min="0.01" max="500" gui-text="Size">5</param>
<param name="orientation" type="optiongroup" appearance="combo" gui-text="Gear orientation">
<option value="1">External</option>
<option value="2">Internal</option>
</param>
</page>
<page name="Help" gui-text="Help">
<label xml:space="preserve">
<name>Gears2</name>
<id>fablabchemnitz.de.gears2</id>
<param name="tab" type="notebook">
<page name="Options" gui-text="Options">
<param name="teeth" type="int" min="6" max="500" gui-text="Number of teeth">24</param>
<param name="pressure_angle" type="float" min="1" max="40" gui-text="Pressure angle">20</param>
<param name="size_type" type="optiongroup" appearance="combo" gui-text="Size type">
<option value="1">Module (mm)</option>
<option value="2">Pitch diameter (inches)</option>
<option value="3">Diametral pitch (inches)</option>
</param>
<param name="size" type="float" min="0.01" max="500" gui-text="Size">5</param>
<param name="orientation" type="optiongroup" appearance="combo" gui-text="Gear orientation">
<option value="1">External</option>
<option value="2">Internal</option>
</param>
</page>
<page name="Help" gui-text="Help">
<label xml:space="preserve">
Number of teeth: Exactly what it sounds like.
Pressure angle: The angle in degrees of pressure between teeth in contact. The higher this is, the wider and more triangular the teeth will be. This can make them stronger but also less tolerant of manufacturing errors and misalignment. Common values are 14.5, 20 and 25.
@ -33,17 +32,17 @@ Orientation: External or internal. (Probably external.)
This extension is based on gearUtils-03.js by Dr A.R.Collins.
Latest version: www.arc.id.au/gearDrawing.html
</label>
</page>
</param>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Gear Generators"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">gears2.py</command>
</script>
</inkscape-extension>
</page>
</param>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gears" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">gears2.py</command>
</script>
</inkscape-extension>

View File

@ -31,7 +31,9 @@
<effect needs-live-preview="false">
<object-type>all</object-type>
<effects-menu>
<submenu name="Palette" />
<submenu name="FabLab Chemnitz">
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -6,7 +6,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>

View File

@ -38,7 +38,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>

View File

@ -12,7 +12,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Dimensioning/Measuring"/></submenu>
<submenu name="Music"/></submenu>
</effects-menu>
</effect>
<script>

View File

@ -34,7 +34,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Text"/>
</submenu>
</effects-menu>
</effect>

View File

@ -16,7 +16,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -83,7 +83,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge" />/>
</submenu>
</effects-menu>
<menu-tip>Apply successive difference operations on superimposed paths. Useful for plotter addicts.</menu-tip>

View File

@ -23,7 +23,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -51,7 +51,9 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz"/>
<submenu name="FabLab Chemnitz">
<submenu name="Cutting/Plotting/Printing"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -12,7 +12,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>

View File

@ -99,7 +99,7 @@ This extension is originally based on 'Join Paths Optimized' by Shriinivas.</lab
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>

View File

@ -20,8 +20,8 @@ This extension requires that imagemagick is installed, more info and download at
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
</submenu>
<submenu name="Import/Export/Transfer"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -1,51 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Knob Scale</name>
<id>fablabchemnitz.de.knob_scale</id>
<param name="tab" type="notebook">
<page name="general_settings" gui-text="General">
<param name="x" type="float" min="-1000" max="10000" precision="3" gui-text="Center X:">0</param>
<param name="y" type="float" min="-1000" max="10000" precision="3" gui-text="Center Y:">0</param>
<param name="radius" type="float" min="0.001" max="10000" precision="3" gui-text="Knob radius:">100</param>
<param name="angle" type="float" min="90.0" max="360.0" precision="3" gui-text="Angle">300</param>
<param name="linewidth" type="float" min="0.001" max="100" precision="3" gui-text="Line width">1</param>
<param name="draw_arc" type="bool" gui-text="Draw Arc">true</param>
<param name="draw_centering_circle" type="bool" gui-text="Draw Centering Circle">false</param>
<param name="logarithmic_scale" type="bool" gui-text="Logarithmic Scale">false</param>
<param name="units" type="optiongroup" gui-text="Units" appearance="combo">
<option value="px">px</option>
<option value="mm">mm</option>
</param>
</page>
<page name="ticks_settings" gui-text="Marks">
<param name="n_ticks" type="int" min="2" max="100" gui-text="Number of tick marks:">2</param>
<param name="ticksize" type="float" min="0.001" max="1000" precision="3" gui-text="Tick size: ">10</param>
<param name="n_subticks" type="int" min="0" max="100" gui-text="Number of subticks:">1</param>
<param name="subticksize" type="float" min="0.001" max="1000" precision="3" gui-text="Subtick size: ">5</param>
<param name="style" type="optiongroup" gui-text="Scale style" appearance="combo">
<option value="marks_inwards">Marks inwards</option>
<option value="marks_outwards">Marks outwards</option>
<option value="marks_circles">Dots</option>
</param>
</page>
<page name="labels_settings" gui-text="Labels">
<param name="labels_enabled" type="bool" gui-text="Enable labels">false</param>
<param name="rounding_level" type="int" min="0" max="100" gui-text="Rounding Float to">0</param>
<param name="text_size" type="float" min="0.001" max="1000" precision="3" gui-text="Labels size">10</param>
<param name="text_offset" type="float" min="-1000" max="1000" precision="3" gui-text="Offset">20</param>
<param name="start_value" type="float" min="-10000" max="10000" precision="3" gui-text="Start Value">0</param>
<param name="stop_value" type="float" min="-10000" max="10000" precision="3" gui-text="Stop Value">10</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">knob_scale.py</command>
</script>
<name>Knob Scale</name>
<id>fablabchemnitz.de.knob_scale</id>
<param name="tab" type="notebook">
<page name="general_settings" gui-text="General">
<param name="x" type="float" min="-1000" max="10000" precision="3" gui-text="Center X:">0</param>
<param name="y" type="float" min="-1000" max="10000" precision="3" gui-text="Center Y:">0</param>
<param name="radius" type="float" min="0.001" max="10000" precision="3" gui-text="Knob radius:">100</param>
<param name="angle" type="float" min="90.0" max="360.0" precision="3" gui-text="Angle">300</param>
<param name="linewidth" type="float" min="0.001" max="100" precision="3" gui-text="Line width">1</param>
<param name="draw_arc" type="bool" gui-text="Draw Arc">true</param>
<param name="draw_centering_circle" type="bool" gui-text="Draw Centering Circle">false</param>
<param name="logarithmic_scale" type="bool" gui-text="Logarithmic Scale">false</param>
<param name="units" type="optiongroup" gui-text="Units" appearance="combo">
<option value="px">px</option>
<option value="mm">mm</option>
</param>
</page>
<page name="ticks_settings" gui-text="Marks">
<param name="n_ticks" type="int" min="2" max="100" gui-text="Number of tick marks:">2</param>
<param name="ticksize" type="float" min="0.001" max="1000" precision="3" gui-text="Tick size: ">10</param>
<param name="n_subticks" type="int" min="0" max="100" gui-text="Number of subticks:">1</param>
<param name="subticksize" type="float" min="0.001" max="1000" precision="3" gui-text="Subtick size: ">5</param>
<param name="style" type="optiongroup" gui-text="Scale style" appearance="combo">
<option value="marks_inwards">Marks inwards</option>
<option value="marks_outwards">Marks outwards</option>
<option value="marks_circles">Dots</option>
</param>
</page>
<page name="labels_settings" gui-text="Labels">
<param name="labels_enabled" type="bool" gui-text="Enable labels">false</param>
<param name="rounding_level" type="int" min="0" max="100" gui-text="Rounding Float to">0</param>
<param name="text_size" type="float" min="0.001" max="1000" precision="3" gui-text="Labels size">10</param>
<param name="text_offset" type="float" min="-1000" max="1000" precision="3" gui-text="Offset">20</param>
<param name="start_value" type="float" min="-10000" max="10000" precision="3" gui-text="Start Value">0</param>
<param name="stop_value" type="float" min="-10000" max="10000" precision="3" gui-text="Stop Value">10</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Scales" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">knob_scale.py</command>
</script>
</inkscape-extension>

View File

@ -6,7 +6,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Text"/>
</submenu>
</effects-menu>
</effect>

View File

@ -3,20 +3,9 @@
<name>Laser Check</name>
<id>fablabchemnitz.de.laser_check</id>
<param name="tab" type="notebook">
<page name="tab_settings" gui-text="Laser Check">
<label appearance="header">General</label>
<page name="tab_checks" gui-text="Checks">
<param name="show_issues_only" type="bool" gui-text="Show potential issues only" gui-description="Shortens the report a little bit">false</param>
<separator/>
<label appearance="header">Machine Settings</label>
<param name="machine_size" gui-text="Machine/Size (mm)" type="optiongroup" appearance="combo">
<option value="406x305">406 x 305 mm (Zing 16)</option>
<option value="610x305">610 x 305 mm (Zing 24 / Fusion Edge 12)</option>
<option value="812x508">812 x 508 mm (Fusion Pro 32 / Fusion M2 32)</option>
<option value="1016x711">1016 x 711 mm (Fusion M2 40)</option>
<option value="1219x914">1219 x 914 mm (Fusion Pro 48)</option>
</param>
<param name="max_cutting_speed" type="float" min="0.000" max="9999.000" gui-text="Max. cutting speed (mm/s)">100</param>
<label appearance="header">Checks</label>
<param name="checks" type="optiongroup" appearance="combo" gui-text="Select checks">
<option value="check_all">Check all</option>
<option value="check_section">Check selection</option>
@ -61,6 +50,21 @@
</vbox>
</hbox>
</page>
<page name="tab_setup" gui-text="Machine Setup">
<label appearance="header">Machine Settings</label>
<param name="machine_size" gui-text="Machine/Size (mm)" type="optiongroup" appearance="combo">
<option value="406x305">406 x 305 mm (Zing 16)</option>
<option value="610x305">610 x 305 mm (Zing 24 / Fusion Edge 12)</option>
<option value="812x508">812 x 508 mm (Fusion Pro 32 / Fusion M2 32)</option>
<option value="1016x711">1016 x 711 mm (Fusion M2 40)</option>
<option value="1219x914">1219 x 914 mm (Fusion Pro 48)</option>
</param>
<param name="max_cutting_speed" type="float" min="0.000" max="9999.000" precision="2" gui-text="Max. cutting speed (mm/s)">500</param>
<param name="max_travel_speed" type="float" min="0.000" max="9999.000" precision="2" gui-text="Max. travel speed (mm/s)">150</param>
<param name="cut_travel_factor" type="float" min="0.1" max="1.0" precision="2" gui-text="Factor between cutting/travel moves" gui-description="Usually ~60-80% are cutting time, rest is travel time">0.60</param>
<param name="price_per_minute_gross" type="float" min="0.0" max="9999.0" precision="2" gui-text="Price/minute € (gross)">2.0</param>
<param name="vector_grid_xy" type="float" min="0.0" max="9999.0" precision="2" gui-text="Vector grid (mm)">12.0</param>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Laser Check</label>
<label>A utility to check for common issue potencials in vector graphics, especially regarding to laser cutting jobs.</label>
@ -92,7 +96,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Cutting/Plotting/Printing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -5,25 +5,34 @@ from inkex.bezier import csplength, csparea
from lxml import etree
import re
import math
import datetime
class LaserCheck(inkex.EffectExtension):
'''
ToDos:
- check for old styles which should be upgraded
- self-intersecting paths
- number of parts to weed in total; number of parts which are smaller than vector grid
- add some inkex.Desc to all elements which were checked and which have some issue. use special syntax to remove old stuff each time the check is applied again
- this code is horrible ugly stuff
'''
def add_arguments(self, pars):
pars.add_argument('--tab')
pars.add_argument('--machine_size', default="812x508")
pars.add_argument('--max_cutting_speed', type=float, default=500)
pars.add_argument('--max_travel_speed', type=float, default=150)
pars.add_argument('--cut_travel_factor', type=float, default=0.60)
pars.add_argument('--price_per_minute_gross', type=float, default=2.0)
pars.add_argument('--vector_grid_xy', type=float, default=12.0) #TODO
pars.add_argument('--show_issues_only', type=inkex.Boolean, default=False)
pars.add_argument('--checks', default="check_all")
pars.add_argument('--max_cutting_speed', type=float, default=100)
pars.add_argument('--bbox', type=inkex.Boolean, default=False)
pars.add_argument('--bbox_offset', type=float, default=5.000)
pars.add_argument('--cutting_estimation', type=inkex.Boolean, default=False)
pars.add_argument('--machine_size', default="812x508")
pars.add_argument('--elements_outside_canvas', type=inkex.Boolean, default=False)
pars.add_argument('--groups_and_layers', type=inkex.Boolean, default=False)
pars.add_argument('--clones', type=inkex.Boolean, default=False)
@ -50,7 +59,10 @@ class LaserCheck(inkex.EffectExtension):
def effect(self):
so = self.options
machineWidth = self.svg.unittouu(so.machine_size.split('x')[0] + "mm")
machineHeight = self.svg.unittouu(so.machine_size.split('x')[1] + "mm")
selected = [] #total list of elements to parse
def parseChildren(element):
if element not in selected:
@ -92,7 +104,7 @@ class LaserCheck(inkex.EffectExtension):
nonShapes.append(element)
else:
shapes.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} shape elements in total".format(len(shapes)))
inkex.utils.debug("{} non-shape elements in total".format(len(nonShapes)))
for nonShape in nonShapes:
@ -144,38 +156,35 @@ class LaserCheck(inkex.EffectExtension):
bb_width = round(bbox.width, 3)
bb_height = round(bbox.height, 3)
if bb_left >= fmm:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("left border... ok")
else:
inkex.utils.debug("left border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_left, "mm")))
if bb_top >= fmm:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("top border... ok")
else:
inkex.utils.debug("top border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_top, "mm")))
if bb_right + fmm <= page_width:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("right border... ok")
else:
inkex.utils.debug("right border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_right, "mm")))
if bb_bottom + fmm <= width_height:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("bottom border... ok")
else:
inkex.utils.debug("bottom border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_bottom, "mm")))
machineWidth = self.svg.unittouu(self.options.machine_size.split('x')[0] + "mm")
if bb_width <= machineWidth:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("page width... ok")
else:
inkex.utils.debug("page width... fail: {:0.3f} mm".format(bb_width))
machineHeight = self.svg.unittouu(self.options.machine_size.split('x')[1] + "mm")
if bb_height <= machineHeight:
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("page height... ok")
else:
inkex.utils.debug("page height... fail: {:0.3f} mm".format(bb_height))
@ -192,7 +201,7 @@ class LaserCheck(inkex.EffectExtension):
for child in element:
maxDepth(child, level + 1)
maxDepth(self.document.getroot(), -1)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("Maximum group depth={}".format(md - 1))
if md - 1 > 2:
self.msg("Warning: this group depth might cause issues!")
@ -204,7 +213,7 @@ class LaserCheck(inkex.EffectExtension):
layers.append(element)
else:
groups.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} groups in total".format(len(groups)))
inkex.utils.debug("{} layers in total".format(len(layers)))
@ -227,7 +236,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected:
if element.tag == inkex.addNS('use','svg'):
uses.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} svg:use clones in total".format(len(uses)))
for use in uses:
inkex.utils.debug("id={}".format(use.get('id')))
@ -243,7 +252,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected:
if element.tag == inkex.addNS('clipPath','svg'):
clipPaths.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} svg:clipPath in total".format(len(clipPaths)))
for clipPath in clipPaths:
inkex.utils.debug("id={}".format(clipPath.get('id')))
@ -259,7 +268,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected:
if element.tag == inkex.addNS('image','svg'):
images.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} svg:image in total".format(len(images)))
for image in images:
inkex.utils.debug("image id={}".format(image.get('id')))
@ -274,7 +283,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected:
if element.tag in (inkex.addNS('line','svg'), inkex.addNS('polyline','svg'), inkex.addNS('polygon','svg')):
lowlevels.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} low level strokes in total".format(len(lowlevels)))
for lowlevel in lowlevels:
inkex.utils.debug("id={}".format(lowlevel.get('id')))
@ -291,7 +300,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected:
if element.tag == inkex.addNS('text','svg'):
texts.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} svg:text in total".format(len(texts)))
for text in texts:
inkex.utils.debug("id={}".format(text.get('id')))
@ -313,7 +322,7 @@ class LaserCheck(inkex.EffectExtension):
strokeColor = stroke[0].split("stroke:")[1].split(";")[0]
if strokeColor not in strokeColors:
strokeColors.append(strokeColor)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} different stroke colors in total".format(len(strokeColors)))
if len(strokeColors) > so.stroke_colors_max:
for strokeColor in strokeColors:
@ -335,7 +344,7 @@ class LaserCheck(inkex.EffectExtension):
strokeWidth = stroke_width[0].split("stroke-width:")[1].split(";")[0] #possibly w/o units. could contain units from css
if strokeWidth not in strokeWidths:
strokeWidths.append(strokeWidth)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} different stroke widths in total".format(len(strokeWidths)))
if len(strokeWidths) > so.stroke_widths_max:
for strokeWidth in strokeWidths:
@ -362,7 +371,7 @@ class LaserCheck(inkex.EffectExtension):
strokeDasharray = stroke_dasharray[0].split("stroke-dasharray:")[1].split(";")[0]
if strokeDasharray not in strokeDasharrays:
strokeDasharrays.append(strokeDasharray)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} different stroke dash arrays in total".format(len(strokeDasharrays)))
for strokeDasharray in strokeDasharrays:
inkex.utils.debug("stroke dash array {}".format(strokeDasharray))
@ -432,7 +441,7 @@ class LaserCheck(inkex.EffectExtension):
if (strokeVis == 0 or widthVis == 0 or strokeOpacityVis == 0) and (fillVis == 0 or fillOpacityVis == 0):
if element not in invisibles:
invisibles.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} invisible shapes in total".format(len(invisibles)))
for invisible in invisibles:
inkex.utils.debug("id={}".format(invisible.get('id')))
@ -453,7 +462,7 @@ class LaserCheck(inkex.EffectExtension):
if float(stroke_opacity[0].split("stroke-opacity:")[1].split(";")[0]) < 1.0:
if element not in transparencies:
transparencies.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} objects with stroke transparencies < 1.0 in total".format(len(transparencies)))
for transparency in transparencies:
inkex.utils.debug("id={}".format(transparency.get('id')))
@ -474,7 +483,7 @@ class LaserCheck(inkex.EffectExtension):
(len(commandsCoords) == 2 and commandsCoords[-1][0] == 'Z') or \
(len(commandsCoords) == 3 and commandsCoords[0][1] == commandsCoords[1][1] and commandsCoords[2][1] == 'Z'):
pointyPaths.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} pointy paths in total".format(len(pointyPaths)))
for pointyPath in pointyPaths:
inkex.utils.debug("id={}".format(pointyPath.get('id')))
@ -491,7 +500,7 @@ class LaserCheck(inkex.EffectExtension):
for element in shapes:
if element.get('transform') is not None:
transformations.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} transformation in total".format(len(transformations)))
for transformation in transformations:
inkex.utils.debug("transformation in id={}".format(transformation.get('id')))
@ -512,7 +521,7 @@ class LaserCheck(inkex.EffectExtension):
if stotal < self.svg.unittouu(str(so.short_paths_min) + "mm"):
shortPaths.append([element, stotal])
totalDropLength += stotal
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} short paths in total".format(len(shortPaths)))
if totalDropLength > 0:
inkex.utils.debug("{:0.2f}% of total ({:0.2f} mm /{:0.2f} mm)".format(totalDropLength / totalLength, self.svg.uutounit(str(totalDropLength), "mm"), self.svg.uutounit(str(totalLength), "mm")))
@ -525,18 +534,27 @@ class LaserCheck(inkex.EffectExtension):
'''
if so.checks == "check_all" or so.cutting_estimation is True:
inkex.utils.debug("\n---------- Cutting time estimation")
totalLength = 0
totalCuttingLength = 0
for element in shapes:
if isinstance(element, inkex.PathElement):
slengths, stotal = csplength(element.path.transform(element.composed_transform()).to_superpath())
totalLength += stotal
inkex.utils.debug("cutting length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalLength), "mm"), self.svg.uutounit(str(totalLength), "mm")))
for f in range(100, 0, -10):
v = so.max_cutting_speed * f/100.0
tsec = totalLength / v
tmin = tsec / 60
inkex.utils.debug("cutting time @{:0.0f}% (={}mm/s): {:0.2f}min (={:0.1f}s)".format(f, v, tmin, tsec))
totalCuttingLength += stotal
extraTraveLength = (machineWidth / 3 + machineHeight / 3) * 2.0 #from top-left to the ~1/3 of the bed and back again
totalTravelLength = totalCuttingLength * (1.0 - so.cut_travel_factor) + extraTraveLength
totalLength = totalCuttingLength + totalTravelLength
inkex.utils.debug("(measured) cutting length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalCuttingLength), "mm"), self.svg.uutounit(str(totalCuttingLength), "mm")))
inkex.utils.debug("(estimated) travel length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalTravelLength), "mm"), self.svg.uutounit(str(totalTravelLength), "mm")))
inkex.utils.debug("(estimated) total length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalLength), "mm"), self.svg.uutounit(str(totalLength), "mm")))
for speedFactor in [100,90,80,70,60,50,40,30,20,10,5]:
v_cut = so.max_cutting_speed * speedFactor/100.0
v_travel = so.max_travel_speed #this is always at maximum
tsec_cut = self.svg.uutounit(str(totalCuttingLength)) / v_cut
tsec_travel = self.svg.uutounit(str(totalTravelLength)) / v_travel
tsec_total = tsec_cut + tsec_travel
minutes, seconds = divmod(tsec_total, 60) # split the seconds to minutes and seconds
partial_minutes = round(seconds/60 * 2) / 2
inkex.utils.debug("@{:03.0f}% (cut={:06.2f}mm/s | travel={:06.2f}mm/s) > {:03.0f}min {:02.0f}sec | cost={:02.0f}".format(speedFactor, v_cut, v_travel, minutes, seconds, so.price_per_minute_gross * (minutes + partial_minutes)))
'''
Paths with a high amount of nodes will cause issues because each node means slowing down/speeding up the laser mechanics
@ -550,7 +568,7 @@ class LaserCheck(inkex.EffectExtension):
nodes = len(element.path)
if nodes / stotal > so.nodes_per_path_max / self.svg.unittouu(str(so.nodes_per_path_interval) + "mm"):
heavyPaths.append([element, nodes, stotal])
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} Heavy node-loaded paths in total".format(len(heavyPaths)))
for heavyPath in heavyPaths:
inkex.utils.debug("id={}, nodes={}, length={}mm, density={}nodes/mm".format(
@ -562,7 +580,7 @@ class LaserCheck(inkex.EffectExtension):
)
'''
Elements outside canvas or touching the border. These are critical because they won't be lasered
Elements outside canvas or touching the border. These are critical because they won't be lasered or not correctly lasered
'''
if so.checks == "check_all" or so.elements_outside_canvas is True:
inkex.utils.debug("\n---------- Elements outside canvas or touching the border")
@ -600,7 +618,7 @@ class LaserCheck(inkex.EffectExtension):
bottomOutside = True
if rightOutside is True or leftOutside is True or topOutside is True or bottomOutside is True:
elementsOutside.append([element, "partially outside"])
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} Elements outside canvas or touching the border in total".format(len(elementsOutside)))
for elementOutside in elementsOutside:
inkex.utils.debug("id={}, status={}".format(
@ -620,7 +638,7 @@ class LaserCheck(inkex.EffectExtension):
for element in shapes:
if not isinstance(element, inkex.PathElement) and not isinstance(element, inkex.Group):
nonPathShapes.append(element)
if self.options.show_issues_only is False:
if so.show_issues_only is False:
inkex.utils.debug("{} non-path shapes in total".format(len(nonPathShapes)))
for nonPathShape in nonPathShapes:
inkex.utils.debug("id={}".format(nonPathShape.get('id')))

View File

@ -1,53 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Lasercut Jigsaw</name>
<id>fablabchemnitz.de.lasercut_jigsaw</id>
<param name="tab" type="notebook">
<page name="Style" gui-text="Style">
<label>The Jigsaw lines color does not apply if 'Create separated pieces' option is enabled.</label>
<param name="color_border" type="color" appearance="colorbutton" gui-text="Border color">4278190335</param>
<param name="color_jigsaw" type="color" appearance="colorbutton" gui-text="Jigsaw lines color">65535</param>
</page>
<page name="Dimensions" gui-text="Dimensions">
<label>Define the Jigsaw size and grid size.</label>
<param name="sizetype" gui-text="Width/Height for ..." type="optiongroup" appearance="radio">
<option value="boxsize">box size</option>
<option value="partsize">part size</option>
</param>
<param name="width" type="float" min="0.1" max="1000.0" precision="2" gui-text="Width">100.0</param>
<param name="height" type="float" min="0.1" max="1000.0" precision="2" gui-text="Height">80.0</param>
<param name="innerradius" type="float" min="0.0" max="500.0" precision="2" gui-text="Corner radius" gui-description="0 implies square corners">5.0</param>
<param name="units" gui-text="Units" type="optiongroup" appearance="combo" gui-description="The unit of the box dimensions">
<option value="px">px</option>
<option value="pt">pt</option>
<option value="in">in</option>
<option value="cm">cm</option>
<option value="mm">mm</option>
</param>
<param name="border" type="bool" gui-text="Outer Border" gui-description="Add Outer Surround">false</param>
<param name="borderwidth" type="float" min="0.0" max="500.0" precision="2" gui-text="Border width" gui-description="Size of external surrounding border.">20.0</param>
<param name="outerradius" type="float" min="0.0" max="500.0" precision="2" gui-text="Border radius" gui-description="0 implies square corners">5.0</param>
<param name="pack" type="optiongroup" appearance="combo" gui-text="Pack Location" gui-description="Where to place backing piece on page">
<option value="Right">Right</option>
<option value="Below">Below</option>
<option value="Separate">Separate</option>
</param>
<param name="pieces_W" type="int" min="2" max="199" gui-text="How many pieces across (cols)">5</param>
<param name="pieces_H" type="int" min="2" max="199" gui-text="How many pieces down (rows)">4</param>
</page>
<page name="Notches" gui-text="Notches">
<label>The interlocking pieces can be shaped here. Also the random nature of the layout.</label>
<param name="notch_percent" type="float" min="0.0" max="1.0" precision="2" appearance="full" gui-text="Notch relative size" gui-description="Notch relative size. 0.15 to 0.50 is good">0.5</param>
<param name="rand" type="float" min="0.0" max="1.0" precision="2" appearance="full" gui-text="Grid Randomisation" gui-description="Amount to perturb the basic piece grid.">0.4</param>
<param name="smooth_edges" type="bool" gui-text="Some edges can be smooth" gui-description="Allow pieces with smooth edges.">false</param>
<param name="noknob_frequency" type="float" min="0.0" max="100.0" appearance="full" precision="2" gui-text="percentage of smooth edges">10</param>
<param name="use_seed" type="bool" gui-text="Random jigsaw" gui-description="Use the kerf value as the drawn line width">true</param>
<param name="seed" type="int" min="0" max="99999999" gui-text="or Jigsaw pattern (seed)" gui-description="Random seed for repeatability">12345</param>
<param name="pieces" type="bool" gui-text="Create separated pieces">false</param>
<param name="shift" type="float" min="0.0" max="100.0" precision="2" gui-text="Shifting for each piece (%)">0</param>
</page>
<page name="Usage" gui-text="Usage">
<label xml:space="preserve">Jigsaw lines are single for minimal laser cutting.
<name>Lasercut Jigsaw</name>
<id>fablabchemnitz.de.lasercut_jigsaw</id>
<param name="tab" type="notebook">
<page name="Style" gui-text="Style">
<label>The Jigsaw lines color does not apply if 'Create separated pieces' option is enabled.</label>
<param name="color_border" type="color" appearance="colorbutton" gui-text="Border color">4278190335</param>
<param name="color_jigsaw" type="color" appearance="colorbutton" gui-text="Jigsaw lines color">65535</param>
</page>
<page name="Dimensions" gui-text="Dimensions">
<label>Define the Jigsaw size and grid size.</label>
<param name="sizetype" gui-text="Width/Height for ..." type="optiongroup" appearance="radio">
<option value="boxsize">box size</option>
<option value="partsize">part size</option>
</param>
<param name="width" type="float" min="0.1" max="1000.0" precision="2" gui-text="Width">100.0</param>
<param name="height" type="float" min="0.1" max="1000.0" precision="2" gui-text="Height">80.0</param>
<param name="innerradius" type="float" min="0.0" max="500.0" precision="2" gui-text="Corner radius" gui-description="0 implies square corners">5.0</param>
<param name="units" gui-text="Units" type="optiongroup" appearance="combo" gui-description="The unit of the box dimensions">
<option value="px">px</option>
<option value="pt">pt</option>
<option value="in">in</option>
<option value="cm">cm</option>
<option value="mm">mm</option>
</param>
<param name="border" type="bool" gui-text="Outer Border" gui-description="Add Outer Surround">false</param>
<param name="borderwidth" type="float" min="0.0" max="500.0" precision="2" gui-text="Border width" gui-description="Size of external surrounding border.">20.0</param>
<param name="outerradius" type="float" min="0.0" max="500.0" precision="2" gui-text="Border radius" gui-description="0 implies square corners">5.0</param>
<param name="pack" type="optiongroup" appearance="combo" gui-text="Pack Location" gui-description="Where to place backing piece on page">
<option value="Right">Right</option>
<option value="Below">Below</option>
<option value="Separate">Separate</option>
</param>
<param name="pieces_W" type="int" min="2" max="199" gui-text="How many pieces across (cols)">5</param>
<param name="pieces_H" type="int" min="2" max="199" gui-text="How many pieces down (rows)">4</param>
</page>
<page name="Notches" gui-text="Notches">
<label>The interlocking pieces can be shaped here. Also the random nature of the layout.</label>
<param name="notch_percent" type="float" min="0.0" max="1.0" precision="2" appearance="full" gui-text="Notch relative size" gui-description="Notch relative size. 0.15 to 0.50 is good">0.5</param>
<param name="rand" type="float" min="0.0" max="1.0" precision="2" appearance="full" gui-text="Grid Randomisation" gui-description="Amount to perturb the basic piece grid.">0.4</param>
<param name="smooth_edges" type="bool" gui-text="Some edges can be smooth" gui-description="Allow pieces with smooth edges.">false</param>
<param name="noknob_frequency" type="float" min="0.0" max="100.0" appearance="full" precision="2" gui-text="percentage of smooth edges">10</param>
<param name="use_seed" type="bool" gui-text="Random jigsaw" gui-description="Use the kerf value as the drawn line width">true</param>
<param name="seed" type="int" min="0" max="99999999" gui-text="or Jigsaw pattern (seed)" gui-description="Random seed for repeatability">12345</param>
<param name="pieces" type="bool" gui-text="Create separated pieces">false</param>
<param name="shift" type="float" min="0.0" max="100.0" precision="2" gui-text="Shifting for each piece (%)">0</param>
</page>
<page name="Usage" gui-text="Usage">
<label xml:space="preserve">Jigsaw lines are single for minimal laser cutting.
(The pieces are not discrete shapes.)
The outer edge can be a rectangle or have rounded corners.
@ -62,18 +62,18 @@ Adjust Notch size and Randomization to avoid overlapping lines:
on small notches.
- Highly unbalanced grids (E.g. 9x2 with 0.5 notches) will
create overlapping lines.
</label>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">lasercut_jigsaw.py</command>
</script>
</label>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">lasercut_jigsaw.py</command>
</script>
</inkscape-extension>

View File

@ -20,8 +20,8 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Boxes/Papercraft">
<submenu name="Finger-jointed/Tabbed Boxes"/>
</submenu>
</effects-menu>
</effect>

View File

@ -37,7 +37,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Animation"/>
</submenu>
</effects-menu>
</effect>

View File

@ -33,7 +33,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Longest Continuous Path</name>
<id>fablabchemnitz.de.optimize_path</id>
<param name="tolerance" type="float" min="0.0" max="100.0" gui-text="Merge Tolerance:">0.10</param>
<param name="overwriteRule" type="optiongroup" appearance="radio" gui-text="Traceback:">
<option value="0">Allow</option>
<option value="1">Allow some</option>
<option value="2">Allow none</option>
</param>
<param name="enableLog" type="bool" gui-text="Show debug log">false</param>
<param name="keepSelected" type="bool" gui-text="Keep selected elements">false</param>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">longest_continuous_path.py</command>
</script>
<name>Longest Continuous Path</name>
<id>fablabchemnitz.de.optimize_path</id>
<param name="tolerance" type="float" min="0.0" max="100.0" gui-text="Merge Tolerance:">0.10</param>
<param name="overwriteRule" type="optiongroup" appearance="radio" gui-text="Traceback:">
<option value="0">Allow</option>
<option value="1">Allow some</option>
<option value="2">Allow none</option>
</param>
<param name="enableLog" type="bool" gui-text="Show debug log">false</param>
<param name="keepSelected" type="bool" gui-text="Keep selected elements">false</param>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">longest_continuous_path.py</command>
</script>
</inkscape-extension>

View File

@ -23,8 +23,8 @@
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests" />
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -4,28 +4,28 @@
<id>fablabchemnitz.de.move_path_node</id>
<param name="tab" type="notebook">
<page name="tab_settings" gui-text="Modify Path Start Node">
<param name="closed_only" type="bool" gui-text="Handle closed paths only" gui-description="If disabled we also apply on open (sub)paths. Warning: This REMOVES segments!">true</param>
<param name="closed_only" type="bool" gui-text="Handle closed paths only" gui-description="If disabled we also apply on open (sub)paths. Warning: This REMOVES segments!">true</param>
<param name="movenode" appearance="full" type="int" min="-9999" max="9999" gui-text="Move node n nodes further">0</param>
<param name="visualize_result" type="bool" gui-text="Visualize first two nodes" gui-description="If enabled first two nodes get a number and a dot">false</param>
<param name="fontsize" type="string" gui-text="Font size:">10px</param>
<param name="dotsize" type="string" gui-text="Dot size:">10px</param>
<param name="debug" type="bool" gui-text="Debug Output">false</param>
<label appearance="header">Notes</label>
<label>Use "Path > Reverse" to change path direction</label>
<label appearance="header">Notes</label>
<label>Use "Path &gt; Reverse" to change path direction</label>
<label>Use extension "Chain Paths" to make closed paths out of segments.</label>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Move Path Node</label>
<label>Extension to change starting / end node of a path and visualize it by dots and numbers. You can also use this extension as a trimmer for open paths.</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<spacer />
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/movepathnode</label>
<spacer/>
<spacer />
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<spacer />
<label appearance="header">MightyScape Extension Collection</label>
<label>This piece of software is part of the MightyScape for Inkscape Extension Collection and is licensed under GNU GPL v3</label>
<label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label>
@ -33,21 +33,21 @@
<page name="tab_donate" gui-text="Donate">
<label appearance="header">Coffee + Pizza</label>
<label>We are the Stadtfabrikanten, running the FabLab Chemnitz since 2016. A FabLab is an open workshop that gives people access to machines and digital tools like 3D printers, laser cutters and CNC milling machines.</label>
<spacer/>
<spacer />
<label>You like our work and want to support us? You can donate to our non-profit organization by different ways:</label>
<label appearance="url">https://y.stadtfabrikanten.org/donate</label>
<spacer/>
<spacer />
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
</submenu>
</effects-menu>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">move_path_node.py</command>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Join/Order"/>
</submenu>
</effects-menu>
</effect>

View File

@ -2,24 +2,24 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Optimize Sequence: Travel Distances</name>
<id>fablabchemnitz.de.optimize_sequence_travel_distance</id>
<label appearance="header">AxiDraw Plot Optimization Tool</label>
<label>This utility will re-order objects within each layer of your document, to reduce pen-up travel distance and time.</label>
<param name="reordering" gui-text="Group Handling" type="optiongroup" appearance="radio">
<option value="2">Reorder within groups</option>
<option value="1">Preserve groups</option>
<option value="3">Break apart groups</option>
</param>
<param name="preview_rendering" type="bool" gui-text="Preview rendering">false</param>
<label>v 2.6. Copyright 2020, Evil Mad Scientist</label>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">optimize_sequence_travel_distance.py</command>
</script>
<label appearance="header">AxiDraw Plot Optimization Tool</label>
<label>This utility will re-order objects within each layer of your document, to reduce pen-up travel distance and time.</label>
<param name="reordering" gui-text="Group Handling" type="optiongroup" appearance="radio">
<option value="2">Reorder within groups</option>
<option value="1">Preserve groups</option>
<option value="3">Break apart groups</option>
</param>
<param name="preview_rendering" type="bool" gui-text="Preview rendering">false</param>
<label>v 2.6. Copyright 2020, Evil Mad Scientist</label>
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">optimize_sequence_travel_distance.py</command>
</script>
</inkscape-extension>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -79,7 +79,7 @@ Alignment groups shall contain an object to mark its 'rotation center'. The exte
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -8,7 +8,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -36,7 +36,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="Music"/>
</submenu>
</effects-menu>
</effect>

View File

@ -34,7 +34,7 @@ http://florian-berger.de/en/software/pixel2svg
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection" />
<submenu name="Tracing/Images/Edge Detection" />
</submenu>
</effects-menu>
</effect>

View File

@ -30,7 +30,7 @@ or deterministically.</label>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -62,7 +62,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -36,7 +36,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Cutting/Plotting/Printing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -27,15 +27,14 @@ To join paths, make sure that the paths to consider are already combined (subpat
To combine paths, select them and press Ctrl+K.
For more information:
https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatenodes
</label>
https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatenodes</label>
</page>
</param>
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization" />
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -44,9 +44,9 @@
<effect>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Gear Generators"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gears" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Ray Tracing - Insert Lens Optics</name>
<name>Insert Lens Optics</name>
<id>fablabchemnitz.de.raytracing_insert_lens_optics</id>
<param name="focal_length" type="float" gui-text="Focal length:" min="-10000." max="10000." precision="3">100.</param>
<param name="focal_length_unit" type="optiongroup" appearance="combo" gui-text=" ">
@ -29,7 +29,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Ray Tracing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -1,6 +1,6 @@
[
{
"name": "Ray Tracing - <various>",
"name": "<various>",
"id": "fablabchemnitz.de.raytracing.<various>",
"path": "raytracing",
"dependent_extensions": null,

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Ray Tracing - Render</name>
<name>Render</name>
<id>fablabchemnitz.de.raytracing.render</id>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Ray Tracing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Ray Tracing - Set Lens Material</name>
<name>Set Lens Material</name>
<id>fablabchemnitz.de.raytracing.set_lens_material</id>
<param name="optical_material" type="optiongroup" appearance="combo" gui-text="Select material:">
<option value="none">None</option>
@ -15,7 +15,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Various"/>
<submenu name="Ray Tracing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Remove Duplicate Guides</name>
<id>fablabchemnitz.remove_duplicate_guides</id>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Grids/Guides"/>
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">remove_duplicate_guides.py</command>
</script>
<name>Remove Duplicate Guides</name>
<id>fablabchemnitz.remove_duplicate_guides</id>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Grids/Guides" />
</submenu>
</effects-menu>
</effect>
<script>
<command location="inx" interpreter="python">remove_duplicate_guides.py</command>
</script>
</inkscape-extension>

View File

@ -17,15 +17,14 @@
Remove duplicate line segments (with exact same coordinates) will always be performed.
For more information:
https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatelines
</label>
https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatelines</label>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Groups and Layers"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
</effect>

View File

@ -11,7 +11,8 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/></submenu>
<submenu name="Cutting/Plotting/Printing"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -7,9 +7,9 @@
<effect needs-document="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
</submenu>
<submenu name="FabLab Chemnitz">
<submenu name="Colors/Gradients/Filters"/>
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -5,10 +5,10 @@
<label>Reverse order of subpaths (combined paths) without reversing the node order nor the order of the paths.</label>
<effect>
<object-type>path</object-type>
<effects-menu>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
</submenu>
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization" />
<submenu name="Transformations" />
</submenu>
</effects-menu>
</effect>

View File

@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization" />
<submenu name="Transformations" />
</submenu>
</effects-menu>
</effect>

View File

@ -7,7 +7,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization" />
<submenu name="Transformations" />
</submenu>
</effects-menu>
</effect>

View File

@ -25,7 +25,7 @@ Version: 1.4
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Modify existing Path(s)"/>
</submenu>
</effects-menu>
</effect>

View File

@ -27,7 +27,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -79,7 +79,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -20,7 +20,7 @@
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -6,7 +6,7 @@
<object-type>rect</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Transformations"/>
</submenu>
</effects-menu>
</effect>

View File

@ -42,7 +42,7 @@ lenght. Recognizes rectangles, circle and ellipses.</label>
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Tracing/Edge Detection"/>
<submenu name="Tracing/Images/Edge Detection"/>
</submenu>
</effects-menu>
</effect>

View File

@ -21,9 +21,9 @@ If Cut diameter=0 then cone will not be truncated.</label>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
</submenu>
<submenu name="FabLab Chemnitz Boxes/Papercraft">
<submenu name="Paper/Cardboard Boxes" />
</submenu>
</effects-menu>
</effect>
<script>

View File

@ -67,7 +67,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/>
<submenu name="Cutting/Plotting/Printing"/>
</submenu>
</effects-menu>
</effect>

View File

@ -7,8 +7,8 @@
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Streaks And Blobs" />
</submenu>
</effects-menu>
</effect>

View File

@ -54,7 +54,7 @@ Applies independently for each sub path in selection. Use 'Path > Reverse' to ch
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -25,7 +25,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/>
<submenu name="Paths - Cut/Intersect/Purge"/>
</submenu>
</effects-menu>
</effect>

View File

@ -21,9 +21,9 @@
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Gear Generators"/>
</submenu>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gears" />
</submenu>
</effects-menu>
</effect>
<script>

Some files were not shown because too many files have changed in this diff Show More