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> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Shape/Pattern from Generator"/> <submenu name="Puzzles/Mazes/Nests"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -53,7 +53,7 @@
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Various"/> <submenu name="Transformations" />
</submenu> </submenu>
</effects-menu> </effects-menu>
<menu-tip>Widen the document to send all lines properly to Epilog Dashboard</menu-tip> <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> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)" /> <submenu name="Transformations" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

View File

@ -4,21 +4,21 @@
<id>fablabchemnitz.de.flash_burst</id> <id>fablabchemnitz.de.flash_burst</id>
<param name="r1" type="int" min="1" max="20" gui-text="Radius - inner (min)">10</param> <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> <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="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> <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="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> <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="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> <param name="ad2" type="int" min="1" max="10" gui-text="Angle delta (max)">5</param>
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Shape/Pattern from Generator"/> <submenu name="Streaks And Blobs" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>

View File

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

View File

@ -9,7 +9,7 @@
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Various"/> <submenu name="Animation"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </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> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Dimensioning/Measuring"/> <submenu name="Music"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

View File

@ -1,25 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Gears2</name> <name>Gears2</name>
<id>fablabchemnitz.de.gears2</id> <id>fablabchemnitz.de.gears2</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="Options" gui-text="Options"> <page name="Options" gui-text="Options">
<param name="teeth" type="int" min="6" max="500" gui-text="Number of teeth">24</param> <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="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"> <param name="size_type" type="optiongroup" appearance="combo" gui-text="Size type">
<option value="1">Module (mm)</option> <option value="1">Module (mm)</option>
<option value="2">Pitch diameter (inches)</option> <option value="2">Pitch diameter (inches)</option>
<option value="3">Diametral pitch (inches)</option> <option value="3">Diametral pitch (inches)</option>
</param> </param>
<param name="size" type="float" min="0.01" max="500" gui-text="Size">5</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"> <param name="orientation" type="optiongroup" appearance="combo" gui-text="Gear orientation">
<option value="1">External</option> <option value="1">External</option>
<option value="2">Internal</option> <option value="2">Internal</option>
</param> </param>
</page> </page>
<page name="Help" gui-text="Help">
<page name="Help" gui-text="Help"> <label xml:space="preserve">
<label xml:space="preserve">
Number of teeth: Exactly what it sounds like. 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. 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. This extension is based on gearUtils-03.js by Dr A.R.Collins.
Latest version: www.arc.id.au/gearDrawing.html Latest version: www.arc.id.au/gearDrawing.html
</label> </label>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gear Generators"/> <submenu name="Gears" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">gears2.py</command> <command location="inx" interpreter="python">gears2.py</command>
</script> </script>
</inkscape-extension> </inkscape-extension>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,51 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Knob Scale</name> <name>Knob Scale</name>
<id>fablabchemnitz.de.knob_scale</id> <id>fablabchemnitz.de.knob_scale</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="general_settings" gui-text="General"> <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="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="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="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="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="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_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="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="logarithmic_scale" type="bool" gui-text="Logarithmic Scale">false</param>
<param name="units" type="optiongroup" gui-text="Units" appearance="combo"> <param name="units" type="optiongroup" gui-text="Units" appearance="combo">
<option value="px">px</option> <option value="px">px</option>
<option value="mm">mm</option> <option value="mm">mm</option>
</param> </param>
</page> </page>
<page name="ticks_settings" gui-text="Marks"> <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="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="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="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="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"> <param name="style" type="optiongroup" gui-text="Scale style" appearance="combo">
<option value="marks_inwards">Marks inwards</option> <option value="marks_inwards">Marks inwards</option>
<option value="marks_outwards">Marks outwards</option> <option value="marks_outwards">Marks outwards</option>
<option value="marks_circles">Dots</option> <option value="marks_circles">Dots</option>
</param> </param>
</page> </page>
<page name="labels_settings" gui-text="Labels"> <page name="labels_settings" gui-text="Labels">
<param name="labels_enabled" type="bool" gui-text="Enable labels">false</param> <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="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_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="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="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> <param name="stop_value" type="float" min="-10000" max="10000" precision="3" gui-text="Stop Value">10</param>
</page> </page>
</param> </param>
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Shape/Pattern from Generator"/> <submenu name="Scales" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">knob_scale.py</command> <command location="inx" interpreter="python">knob_scale.py</command>
</script> </script>
</inkscape-extension> </inkscape-extension>

View File

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

View File

@ -3,20 +3,9 @@
<name>Laser Check</name> <name>Laser Check</name>
<id>fablabchemnitz.de.laser_check</id> <id>fablabchemnitz.de.laser_check</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="tab_settings" gui-text="Laser Check"> <page name="tab_checks" gui-text="Checks">
<label appearance="header">General</label>
<param name="show_issues_only" type="bool" gui-text="Show potential issues only" gui-description="Shortens the report a little bit">false</param> <param name="show_issues_only" type="bool" gui-text="Show potential issues only" gui-description="Shortens the report a little bit">false</param>
<separator/> <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"> <param name="checks" type="optiongroup" appearance="combo" gui-text="Select checks">
<option value="check_all">Check all</option> <option value="check_all">Check all</option>
<option value="check_section">Check selection</option> <option value="check_section">Check selection</option>
@ -61,6 +50,21 @@
</vbox> </vbox>
</hbox> </hbox>
</page> </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"> <page name="tab_about" gui-text="About">
<label appearance="header">Laser Check</label> <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> <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> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/> <submenu name="Cutting/Plotting/Printing"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

@ -5,25 +5,34 @@ from inkex.bezier import csplength, csparea
from lxml import etree from lxml import etree
import re import re
import math import math
import datetime
class LaserCheck(inkex.EffectExtension): class LaserCheck(inkex.EffectExtension):
''' '''
ToDos: ToDos:
- check for old styles which should be upgraded - 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 - 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 - this code is horrible ugly stuff
''' '''
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument('--tab') 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('--show_issues_only', type=inkex.Boolean, default=False)
pars.add_argument('--checks', default="check_all") 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', type=inkex.Boolean, default=False)
pars.add_argument('--bbox_offset', type=float, default=5.000) pars.add_argument('--bbox_offset', type=float, default=5.000)
pars.add_argument('--cutting_estimation', type=inkex.Boolean, default=False) 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('--elements_outside_canvas', type=inkex.Boolean, default=False)
pars.add_argument('--groups_and_layers', 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) pars.add_argument('--clones', type=inkex.Boolean, default=False)
@ -50,7 +59,10 @@ class LaserCheck(inkex.EffectExtension):
def effect(self): def effect(self):
so = self.options 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 selected = [] #total list of elements to parse
def parseChildren(element): def parseChildren(element):
if element not in selected: if element not in selected:
@ -92,7 +104,7 @@ class LaserCheck(inkex.EffectExtension):
nonShapes.append(element) nonShapes.append(element)
else: else:
shapes.append(element) 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("{} shape elements in total".format(len(shapes)))
inkex.utils.debug("{} non-shape elements in total".format(len(nonShapes))) inkex.utils.debug("{} non-shape elements in total".format(len(nonShapes)))
for nonShape in nonShapes: for nonShape in nonShapes:
@ -144,38 +156,35 @@ class LaserCheck(inkex.EffectExtension):
bb_width = round(bbox.width, 3) bb_width = round(bbox.width, 3)
bb_height = round(bbox.height, 3) bb_height = round(bbox.height, 3)
if bb_left >= fmm: 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") inkex.utils.debug("left border... ok")
else: else:
inkex.utils.debug("left border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_left, "mm"))) inkex.utils.debug("left border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_left, "mm")))
if bb_top >= fmm: 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") inkex.utils.debug("top border... ok")
else: else:
inkex.utils.debug("top border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_top, "mm"))) inkex.utils.debug("top border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_top, "mm")))
if bb_right + fmm <= page_width: 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") inkex.utils.debug("right border... ok")
else: else:
inkex.utils.debug("right border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_right, "mm"))) inkex.utils.debug("right border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_right, "mm")))
if bb_bottom + fmm <= width_height: 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") inkex.utils.debug("bottom border... ok")
else: else:
inkex.utils.debug("bottom border... fail: {:0.3f} mm".format(self.svg.uutounit(bb_bottom, "mm"))) 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 bb_width <= machineWidth:
if self.options.show_issues_only is False: if so.show_issues_only is False:
inkex.utils.debug("page width... ok") inkex.utils.debug("page width... ok")
else: else:
inkex.utils.debug("page width... fail: {:0.3f} mm".format(bb_width)) 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 bb_height <= machineHeight:
if self.options.show_issues_only is False: if so.show_issues_only is False:
inkex.utils.debug("page height... ok") inkex.utils.debug("page height... ok")
else: else:
inkex.utils.debug("page height... fail: {:0.3f} mm".format(bb_height)) inkex.utils.debug("page height... fail: {:0.3f} mm".format(bb_height))
@ -192,7 +201,7 @@ class LaserCheck(inkex.EffectExtension):
for child in element: for child in element:
maxDepth(child, level + 1) maxDepth(child, level + 1)
maxDepth(self.document.getroot(), -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)) inkex.utils.debug("Maximum group depth={}".format(md - 1))
if md - 1 > 2: if md - 1 > 2:
self.msg("Warning: this group depth might cause issues!") self.msg("Warning: this group depth might cause issues!")
@ -204,7 +213,7 @@ class LaserCheck(inkex.EffectExtension):
layers.append(element) layers.append(element)
else: else:
groups.append(element) 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("{} groups in total".format(len(groups)))
inkex.utils.debug("{} layers in total".format(len(layers))) inkex.utils.debug("{} layers in total".format(len(layers)))
@ -227,7 +236,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected: for element in selected:
if element.tag == inkex.addNS('use','svg'): if element.tag == inkex.addNS('use','svg'):
uses.append(element) 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))) inkex.utils.debug("{} svg:use clones in total".format(len(uses)))
for use in uses: for use in uses:
inkex.utils.debug("id={}".format(use.get('id'))) inkex.utils.debug("id={}".format(use.get('id')))
@ -243,7 +252,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected: for element in selected:
if element.tag == inkex.addNS('clipPath','svg'): if element.tag == inkex.addNS('clipPath','svg'):
clipPaths.append(element) 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))) inkex.utils.debug("{} svg:clipPath in total".format(len(clipPaths)))
for clipPath in clipPaths: for clipPath in clipPaths:
inkex.utils.debug("id={}".format(clipPath.get('id'))) inkex.utils.debug("id={}".format(clipPath.get('id')))
@ -259,7 +268,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected: for element in selected:
if element.tag == inkex.addNS('image','svg'): if element.tag == inkex.addNS('image','svg'):
images.append(element) 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))) inkex.utils.debug("{} svg:image in total".format(len(images)))
for image in images: for image in images:
inkex.utils.debug("image id={}".format(image.get('id'))) inkex.utils.debug("image id={}".format(image.get('id')))
@ -274,7 +283,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected: for element in selected:
if element.tag in (inkex.addNS('line','svg'), inkex.addNS('polyline','svg'), inkex.addNS('polygon','svg')): if element.tag in (inkex.addNS('line','svg'), inkex.addNS('polyline','svg'), inkex.addNS('polygon','svg')):
lowlevels.append(element) 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))) inkex.utils.debug("{} low level strokes in total".format(len(lowlevels)))
for lowlevel in lowlevels: for lowlevel in lowlevels:
inkex.utils.debug("id={}".format(lowlevel.get('id'))) inkex.utils.debug("id={}".format(lowlevel.get('id')))
@ -291,7 +300,7 @@ class LaserCheck(inkex.EffectExtension):
for element in selected: for element in selected:
if element.tag == inkex.addNS('text','svg'): if element.tag == inkex.addNS('text','svg'):
texts.append(element) 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))) inkex.utils.debug("{} svg:text in total".format(len(texts)))
for text in texts: for text in texts:
inkex.utils.debug("id={}".format(text.get('id'))) inkex.utils.debug("id={}".format(text.get('id')))
@ -313,7 +322,7 @@ class LaserCheck(inkex.EffectExtension):
strokeColor = stroke[0].split("stroke:")[1].split(";")[0] strokeColor = stroke[0].split("stroke:")[1].split(";")[0]
if strokeColor not in strokeColors: if strokeColor not in strokeColors:
strokeColors.append(strokeColor) 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))) inkex.utils.debug("{} different stroke colors in total".format(len(strokeColors)))
if len(strokeColors) > so.stroke_colors_max: if len(strokeColors) > so.stroke_colors_max:
for strokeColor in strokeColors: 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 strokeWidth = stroke_width[0].split("stroke-width:")[1].split(";")[0] #possibly w/o units. could contain units from css
if strokeWidth not in strokeWidths: if strokeWidth not in strokeWidths:
strokeWidths.append(strokeWidth) 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))) inkex.utils.debug("{} different stroke widths in total".format(len(strokeWidths)))
if len(strokeWidths) > so.stroke_widths_max: if len(strokeWidths) > so.stroke_widths_max:
for strokeWidth in strokeWidths: for strokeWidth in strokeWidths:
@ -362,7 +371,7 @@ class LaserCheck(inkex.EffectExtension):
strokeDasharray = stroke_dasharray[0].split("stroke-dasharray:")[1].split(";")[0] strokeDasharray = stroke_dasharray[0].split("stroke-dasharray:")[1].split(";")[0]
if strokeDasharray not in strokeDasharrays: if strokeDasharray not in strokeDasharrays:
strokeDasharrays.append(strokeDasharray) 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))) inkex.utils.debug("{} different stroke dash arrays in total".format(len(strokeDasharrays)))
for strokeDasharray in strokeDasharrays: for strokeDasharray in strokeDasharrays:
inkex.utils.debug("stroke dash array {}".format(strokeDasharray)) 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 (strokeVis == 0 or widthVis == 0 or strokeOpacityVis == 0) and (fillVis == 0 or fillOpacityVis == 0):
if element not in invisibles: if element not in invisibles:
invisibles.append(element) 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))) inkex.utils.debug("{} invisible shapes in total".format(len(invisibles)))
for invisible in invisibles: for invisible in invisibles:
inkex.utils.debug("id={}".format(invisible.get('id'))) 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 float(stroke_opacity[0].split("stroke-opacity:")[1].split(";")[0]) < 1.0:
if element not in transparencies: if element not in transparencies:
transparencies.append(element) 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))) inkex.utils.debug("{} objects with stroke transparencies < 1.0 in total".format(len(transparencies)))
for transparency in transparencies: for transparency in transparencies:
inkex.utils.debug("id={}".format(transparency.get('id'))) 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) == 2 and commandsCoords[-1][0] == 'Z') or \
(len(commandsCoords) == 3 and commandsCoords[0][1] == commandsCoords[1][1] and commandsCoords[2][1] == 'Z'): (len(commandsCoords) == 3 and commandsCoords[0][1] == commandsCoords[1][1] and commandsCoords[2][1] == 'Z'):
pointyPaths.append(element) 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))) inkex.utils.debug("{} pointy paths in total".format(len(pointyPaths)))
for pointyPath in pointyPaths: for pointyPath in pointyPaths:
inkex.utils.debug("id={}".format(pointyPath.get('id'))) inkex.utils.debug("id={}".format(pointyPath.get('id')))
@ -491,7 +500,7 @@ class LaserCheck(inkex.EffectExtension):
for element in shapes: for element in shapes:
if element.get('transform') is not None: if element.get('transform') is not None:
transformations.append(element) 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))) inkex.utils.debug("{} transformation in total".format(len(transformations)))
for transformation in transformations: for transformation in transformations:
inkex.utils.debug("transformation in id={}".format(transformation.get('id'))) 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"): if stotal < self.svg.unittouu(str(so.short_paths_min) + "mm"):
shortPaths.append([element, stotal]) shortPaths.append([element, stotal])
totalDropLength += 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))) inkex.utils.debug("{} short paths in total".format(len(shortPaths)))
if totalDropLength > 0: 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"))) 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: if so.checks == "check_all" or so.cutting_estimation is True:
inkex.utils.debug("\n---------- Cutting time estimation") inkex.utils.debug("\n---------- Cutting time estimation")
totalLength = 0 totalCuttingLength = 0
for element in shapes: for element in shapes:
if isinstance(element, inkex.PathElement): if isinstance(element, inkex.PathElement):
slengths, stotal = csplength(element.path.transform(element.composed_transform()).to_superpath()) slengths, stotal = csplength(element.path.transform(element.composed_transform()).to_superpath())
totalLength += stotal totalCuttingLength += stotal
inkex.utils.debug("cutting length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalLength), "mm"), self.svg.uutounit(str(totalLength), "mm"))) extraTraveLength = (machineWidth / 3 + machineHeight / 3) * 2.0 #from top-left to the ~1/3 of the bed and back again
for f in range(100, 0, -10): totalTravelLength = totalCuttingLength * (1.0 - so.cut_travel_factor) + extraTraveLength
v = so.max_cutting_speed * f/100.0 totalLength = totalCuttingLength + totalTravelLength
tsec = totalLength / v inkex.utils.debug("(measured) cutting length (mm) = {:0.2f} mm".format(self.svg.uutounit(str(totalCuttingLength), "mm"), self.svg.uutounit(str(totalCuttingLength), "mm")))
tmin = tsec / 60 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("cutting time @{:0.0f}% (={}mm/s): {:0.2f}min (={:0.1f}s)".format(f, v, tmin, tsec)) 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 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) nodes = len(element.path)
if nodes / stotal > so.nodes_per_path_max / self.svg.unittouu(str(so.nodes_per_path_interval) + "mm"): if nodes / stotal > so.nodes_per_path_max / self.svg.unittouu(str(so.nodes_per_path_interval) + "mm"):
heavyPaths.append([element, nodes, stotal]) 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))) inkex.utils.debug("{} Heavy node-loaded paths in total".format(len(heavyPaths)))
for heavyPath in heavyPaths: for heavyPath in heavyPaths:
inkex.utils.debug("id={}, nodes={}, length={}mm, density={}nodes/mm".format( 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: if so.checks == "check_all" or so.elements_outside_canvas is True:
inkex.utils.debug("\n---------- Elements outside canvas or touching the border") inkex.utils.debug("\n---------- Elements outside canvas or touching the border")
@ -600,7 +618,7 @@ class LaserCheck(inkex.EffectExtension):
bottomOutside = True bottomOutside = True
if rightOutside is True or leftOutside is True or topOutside is True or bottomOutside is True: if rightOutside is True or leftOutside is True or topOutside is True or bottomOutside is True:
elementsOutside.append([element, "partially outside"]) 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))) inkex.utils.debug("{} Elements outside canvas or touching the border in total".format(len(elementsOutside)))
for elementOutside in elementsOutside: for elementOutside in elementsOutside:
inkex.utils.debug("id={}, status={}".format( inkex.utils.debug("id={}, status={}".format(
@ -620,7 +638,7 @@ class LaserCheck(inkex.EffectExtension):
for element in shapes: for element in shapes:
if not isinstance(element, inkex.PathElement) and not isinstance(element, inkex.Group): if not isinstance(element, inkex.PathElement) and not isinstance(element, inkex.Group):
nonPathShapes.append(element) 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))) inkex.utils.debug("{} non-path shapes in total".format(len(nonPathShapes)))
for nonPathShape in nonPathShapes: for nonPathShape in nonPathShapes:
inkex.utils.debug("id={}".format(nonPathShape.get('id'))) inkex.utils.debug("id={}".format(nonPathShape.get('id')))

View File

@ -1,53 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Lasercut Jigsaw</name> <name>Lasercut Jigsaw</name>
<id>fablabchemnitz.de.lasercut_jigsaw</id> <id>fablabchemnitz.de.lasercut_jigsaw</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="Style" gui-text="Style"> <page name="Style" gui-text="Style">
<label>The Jigsaw lines color does not apply if 'Create separated pieces' option is enabled.</label> <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_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> <param name="color_jigsaw" type="color" appearance="colorbutton" gui-text="Jigsaw lines color">65535</param>
</page> </page>
<page name="Dimensions" gui-text="Dimensions"> <page name="Dimensions" gui-text="Dimensions">
<label>Define the Jigsaw size and grid size.</label> <label>Define the Jigsaw size and grid size.</label>
<param name="sizetype" gui-text="Width/Height for ..." type="optiongroup" appearance="radio"> <param name="sizetype" gui-text="Width/Height for ..." type="optiongroup" appearance="radio">
<option value="boxsize">box size</option> <option value="boxsize">box size</option>
<option value="partsize">part size</option> <option value="partsize">part size</option>
</param> </param>
<param name="width" type="float" min="0.1" max="1000.0" precision="2" gui-text="Width">100.0</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="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="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"> <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="px">px</option>
<option value="pt">pt</option> <option value="pt">pt</option>
<option value="in">in</option> <option value="in">in</option>
<option value="cm">cm</option> <option value="cm">cm</option>
<option value="mm">mm</option> <option value="mm">mm</option>
</param> </param>
<param name="border" type="bool" gui-text="Outer Border" gui-description="Add Outer Surround">false</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="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="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"> <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="Right">Right</option>
<option value="Below">Below</option> <option value="Below">Below</option>
<option value="Separate">Separate</option> <option value="Separate">Separate</option>
</param> </param>
<param name="pieces_W" type="int" min="2" max="199" gui-text="How many pieces across (cols)">5</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> <param name="pieces_H" type="int" min="2" max="199" gui-text="How many pieces down (rows)">4</param>
</page> </page>
<page name="Notches" gui-text="Notches"> <page name="Notches" gui-text="Notches">
<label>The interlocking pieces can be shaped here. Also the random nature of the layout.</label> <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="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="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="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="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="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="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="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> <param name="shift" type="float" min="0.0" max="100.0" precision="2" gui-text="Shifting for each piece (%)">0</param>
</page> </page>
<page name="Usage" gui-text="Usage"> <page name="Usage" gui-text="Usage">
<label xml:space="preserve">Jigsaw lines are single for minimal laser cutting. <label xml:space="preserve">Jigsaw lines are single for minimal laser cutting.
(The pieces are not discrete shapes.) (The pieces are not discrete shapes.)
The outer edge can be a rectangle or have rounded corners. 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. on small notches.
- Highly unbalanced grids (E.g. 9x2 with 0.5 notches) will - Highly unbalanced grids (E.g. 9x2 with 0.5 notches) will
create overlapping lines. create overlapping lines.
</label> </label>
</page> </page>
</param> </param>
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Shape/Pattern from Generator"/> <submenu name="Puzzles/Mazes/Nests" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">lasercut_jigsaw.py</command> <command location="inx" interpreter="python">lasercut_jigsaw.py</command>
</script> </script>
</inkscape-extension> </inkscape-extension>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,28 +4,28 @@
<id>fablabchemnitz.de.move_path_node</id> <id>fablabchemnitz.de.move_path_node</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="tab_settings" gui-text="Modify Path Start Node"> <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="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="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="fontsize" type="string" gui-text="Font size:">10px</param>
<param name="dotsize" type="string" gui-text="Dot 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> <param name="debug" type="bool" gui-text="Debug Output">false</param>
<label appearance="header">Notes</label> <label appearance="header">Notes</label>
<label>Use "Path > Reverse" to change path direction</label> <label>Use "Path &gt; Reverse" to change path direction</label>
<label>Use extension "Chain Paths" to make closed paths out of segments.</label> <label>Use extension "Chain Paths" to make closed paths out of segments.</label>
</page> </page>
<page name="tab_about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">Move Path Node</label> <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>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> <label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/> <spacer />
<label appearance="header">Online Documentation</label> <label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/movepathnode</label> <label appearance="url">https://y.stadtfabrikanten.org/movepathnode</label>
<spacer/> <spacer />
<label appearance="header">Contributing</label> <label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label> <label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/> <spacer />
<label appearance="header">MightyScape Extension Collection</label> <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>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> <label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label>
@ -33,21 +33,21 @@
<page name="tab_donate" gui-text="Donate"> <page name="tab_donate" gui-text="Donate">
<label appearance="header">Coffee + Pizza</label> <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> <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>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> <label appearance="url">https://y.stadtfabrikanten.org/donate</label>
<spacer/> <spacer />
<label>Thanks for using our extension and helping us!</label> <label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image> <image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect> <effect>
<object-type>path</object-type> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/> <submenu name="Paths - Join/Order" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">move_path_node.py</command> <command location="inx" interpreter="python">move_path_node.py</command>

View File

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

View File

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

View File

@ -2,24 +2,24 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Optimize Sequence: Travel Distances</name> <name>Optimize Sequence: Travel Distances</name>
<id>fablabchemnitz.de.optimize_sequence_travel_distance</id> <id>fablabchemnitz.de.optimize_sequence_travel_distance</id>
<label appearance="header">AxiDraw Plot Optimization Tool</label> <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> <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"> <param name="reordering" gui-text="Group Handling" type="optiongroup" appearance="radio">
<option value="2">Reorder within groups</option> <option value="2">Reorder within groups</option>
<option value="1">Preserve groups</option> <option value="1">Preserve groups</option>
<option value="3">Break apart groups</option> <option value="3">Break apart groups</option>
</param> </param>
<param name="preview_rendering" type="bool" gui-text="Preview rendering">false</param> <param name="preview_rendering" type="bool" gui-text="Preview rendering">false</param>
<label>v 2.6. Copyright 2020, Evil Mad Scientist</label> <label>v 2.6. Copyright 2020, Evil Mad Scientist</label>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization"/> <submenu name="Paths - Join/Order" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">optimize_sequence_travel_distance.py</command> <command location="inx" interpreter="python">optimize_sequence_travel_distance.py</command>
</script> </script>
</inkscape-extension> </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> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/> <submenu name="Transformations"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -36,7 +36,7 @@
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/> <submenu name="Cutting/Plotting/Printing"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </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. To combine paths, select them and press Ctrl+K.
For more information: For more information:
https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatenodes https://gitlab.com/EllenWasbo/inkscape-extension-removeduplicatenodes</label>
</label>
</page> </page>
</param> </param>
<effect> <effect>
<object-type>path</object-type> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Nesting/Cut Optimization" /> <submenu name="Paths - Cut/Intersect/Purge" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <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> <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" 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=" "> <param name="focal_length_unit" type="optiongroup" appearance="combo" gui-text=" ">
@ -29,7 +29,7 @@
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Various"/> <submenu name="Ray Tracing"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,9 +7,9 @@
<effect needs-document="true"> <effect needs-document="true">
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Legacy Tools"/> <submenu name="Colors/Gradients/Filters"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <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> <label>Reverse order of subpaths (combined paths) without reversing the node order nor the order of the paths.</label>
<effect> <effect>
<object-type>path</object-type> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/> <submenu name="Paths - Join/Order" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,8 +7,8 @@
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Shape/Pattern from Generator"/> <submenu name="Streaks And Blobs" />
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </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> <object-type>path</object-type>
<effects-menu> <effects-menu>
<submenu name="FabLab Chemnitz"> <submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/> <submenu name="Paths - Cut/Intersect/Purge"/>
</submenu> </submenu>
</effects-menu> </effects-menu>
</effect> </effect>

View File

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

View File

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

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