lot of inx refactorings - changed menu logic
This commit is contained in:
parent
2ea449bfb6
commit
c28164f0fd
@ -13,8 +13,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="Puzzles/Mazes/Nests"/>
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -23,8 +23,8 @@ 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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -17,8 +17,8 @@ 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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
<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>
|
||||||
|
@ -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>
|
||||||
|
@ -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 - Join/Order" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
<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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -16,8 +16,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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
<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>
|
||||||
|
@ -83,8 +83,8 @@ 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>
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
<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.
|
||||||
@ -38,8 +37,8 @@ Latest version: www.arc.id.au/gearDrawing.html
|
|||||||
<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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -20,7 +20,7 @@ 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>
|
||||||
|
@ -40,8 +40,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="Scales" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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,8 +59,11 @@ 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:
|
||||||
selected.append(element)
|
selected.append(element)
|
||||||
@ -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,17 +534,26 @@ 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)))
|
||||||
|
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -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')))
|
||||||
|
@ -68,8 +68,8 @@ Adjust Notch size and Randomization to avoid overlapping lines:
|
|||||||
<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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -14,7 +14,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 - Join/Order" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<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 > 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">
|
||||||
@ -45,7 +45,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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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="Nesting/Cut Optimization"/>
|
<submenu name="Paths - Join/Order" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
BIN
extensions/fablabchemnitz/output_pro/result-imp.jpeg
Normal file
BIN
extensions/fablabchemnitz/output_pro/result-imp.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -44,8 +44,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="Gear Generators"/>
|
<submenu name="Gears" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -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>
|
||||||
|
@ -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,
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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="Legacy Tools"/>
|
<submenu name="Colors/Gradients/Filters"/>
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
@ -7,7 +7,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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -21,8 +21,8 @@ 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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
<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>
|
||||||
|
@ -13,8 +13,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>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user