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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -6,7 +6,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Cut/Intersect/Purge" />
</submenu>
</effects-menu>
<menu-tip>"Destructively" clip selected paths using the topmost as clipping path</menu-tip>

View File

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

View File

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

View File

@ -11,8 +11,8 @@
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests" />
</submenu>
</effects-menu>
</effect>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -17,7 +17,6 @@
<option value="2">Internal</option>
</param>
</page>
<page name="Help" gui-text="Help">
<label xml:space="preserve">
Number of teeth: Exactly what it sounds like.
@ -38,8 +37,8 @@ Latest version: www.arc.id.au/gearDrawing.html
<effect needs-live-preview="true">
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Gear Generators"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Gears" />
</submenu>
</effects-menu>
</effect>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -68,8 +68,8 @@ Adjust Notch size and Randomization to avoid overlapping lines:
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Shape/Pattern from Generator"/>
<submenu name="FabLab Chemnitz Shape Generators">
<submenu name="Puzzles/Mazes/Nests" />
</submenu>
</effects-menu>
</effect>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,21 +11,21 @@
<param name="dotsize" type="string" gui-text="Dot size:">10px</param>
<param name="debug" type="bool" gui-text="Debug Output">false</param>
<label appearance="header">Notes</label>
<label>Use "Path > Reverse" to change path direction</label>
<label>Use "Path &gt; Reverse" to change path direction</label>
<label>Use extension "Chain Paths" to make closed paths out of segments.</label>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Move Path Node</label>
<label>Extension to change starting / end node of a path and visualize it by dots and numbers. You can also use this extension as a trimmer for open paths.</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<spacer />
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/movepathnode</label>
<spacer/>
<spacer />
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/FabLab_Chemnitz/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<spacer />
<label appearance="header">MightyScape Extension Collection</label>
<label>This piece of software is part of the MightyScape for Inkscape Extension Collection and is licensed under GNU GPL v3</label>
<label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label>
@ -33,10 +33,10 @@
<page name="tab_donate" gui-text="Donate">
<label appearance="header">Coffee + Pizza</label>
<label>We are the Stadtfabrikanten, running the FabLab Chemnitz since 2016. A FabLab is an open workshop that gives people access to machines and digital tools like 3D printers, laser cutters and CNC milling machines.</label>
<spacer/>
<spacer />
<label>You like our work and want to support us? You can donate to our non-profit organization by different ways:</label>
<label appearance="url">https://y.stadtfabrikanten.org/donate</label>
<spacer/>
<spacer />
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page>
@ -45,7 +45,7 @@
<object-type>path</object-type>
<effects-menu>
<submenu name="FabLab Chemnitz">
<submenu name="Modify existing Path(s)"/>
<submenu name="Paths - Join/Order" />
</submenu>
</effects-menu>
</effect>

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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