updated some inx files

This commit is contained in:
Mario Voigt 2021-04-19 20:54:38 +02:00
parent 5fdcfb1bde
commit adfacd8b2a
34 changed files with 934 additions and 477 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
*.pyc *.pyc
/.project /.project
/.pydevproject

5
.pydevproject Normal file
View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python interpreter</pydev_property>
</pydev_project>

View File

@ -2,25 +2,44 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>The Spiral Of Archimedes</name> <name>The Spiral Of Archimedes</name>
<id>fablabchemnitz.de.archimedesspiral</id> <id>fablabchemnitz.de.archimedesspiral</id>
<param name="tab" type="notebook">
<page name="tab_settings" gui-text="Settings">
<param name="name" appearance="header" type="description">R = r + aθ</param> <param name="name" appearance="header" type="description">R = r + aθ</param>
<param name="r" type="int" min="0" max="1000000" gui-text="r (mm)">50</param> <param name="r" type="int" min="0" max="1000000" gui-text="r (mm)">50</param>
<param name="a" type="float" min="0" max="1000000" gui-text="a">3</param> <param name="a" type="float" min="0" max="1000000" gui-text="a">3</param>
<param name="step" type="int" min="1" max="300" gui-text="Step">50</param> <param name="step" type="int" min="1" max="300" gui-text="Step" gui-description="The higher the value the better the accuracy. If you set the step value really low the resulting length will not be precise and the curve is maybe not drawn at all">50</param>
<param name="trl" type="optiongroup" appearance="combo" gui-text="Turn direction"> <param name="trl" type="optiongroup" appearance="combo" gui-text="Turn direction">
<option value="0">Left</option> <option value="0">Left</option>
<option value="1">Right</option> <option value="1">Right</option>
</param> </param>
<param name="length" type="float" min="0" max="1000000" gui-text="Length (mm)">0</param> <param name="length" type="float" min="0" max="1000000" gui-text="Length (mm)">0</param>
<param name="turns" type="int" min="1" max="1000000" gui-text="Turns">5</param> <param name="turns" type="int" min="1" max="1000000" gui-text="Turns" gui-description="Works only if you set 'length (mm)' to 0.0">5</param>
<param name="desc" appearance="header" type="description">Notes</param> </page>
<param name="desc_text" type="description"> <page name="tab_about" gui-text="About">
The option "turns" only works if you set "length (mm)" to 0.0. <label appearance="header">The Spiral Of Archimedes</label>
Otherwise the length value will be used to calculate the <label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
spiral for given length. The higher the "step" value is <spacer/>
set the better the accuracy is. If you set the step value <label appearance="header">Online Documentation</label>
really low the resulting length will not be precise and <label appearance="url">https://y.stadtfabrikanten.org/archimedesspiral</label>
the curve is maybe not drawn at all. You can validate the <spacer/>
length by using the extension "Visualize Path> Measure Path" <label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page>
</param> </param>
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>

View File

@ -20,6 +20,7 @@ from math import cos, sin, pi, log, sqrt
class Archimedes(inkex.EffectExtension): class Archimedes(inkex.EffectExtension):
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument('--tab')
pars.add_argument('--r', type = int, default = '50') pars.add_argument('--r', type = int, default = '50')
pars.add_argument('--a', type = float, default = '3') pars.add_argument('--a', type = float, default = '3')
pars.add_argument('--step', type = int, default = '50') pars.add_argument('--step', type = int, default = '50')

View File

@ -1,9 +1,9 @@
<?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>Cleanup Styles</name> <name>Cleanup Styles</name>
<id>fablabchemnitz.de.cleanup</id> <id>fablabchemnitz.de.cleanup_styles</id>
<param name="main_tabs" type="notebook"> <param name="tab" type="notebook">
<page name="tab_active" gui-text="Cleanup Styles"> <page name="tab_settings" gui-text="Settings">
<param name="dedicated_style_attributes" gui-text="Handling of dedicated style attributes" gui-description="We delete dedicated attributes like 'fill' or 'stroke'. Please choose an option what should happen with those properties." type="optiongroup" appearance="combo"> <param name="dedicated_style_attributes" gui-text="Handling of dedicated style attributes" gui-description="We delete dedicated attributes like 'fill' or 'stroke'. Please choose an option what should happen with those properties." type="optiongroup" appearance="combo">
<option value="prefer_composed">Catch dedicated, but prefer composed (master) style</option> <option value="prefer_composed">Catch dedicated, but prefer composed (master) style</option>
<option value="prefer_dedicated">Catch dedicated and prefer over composed (master) style</option> <option value="prefer_dedicated">Catch dedicated and prefer over composed (master) style</option>
@ -28,15 +28,30 @@
<label>This extension works on current selection or for complete document</label> <label>This extension works on current selection or for complete document</label>
</page> </page>
<page name="tab_about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">About</label> <label appearance="header">Cleanup Styles</label>
<separator /> <label>This extension is useful for adjusting the stroke width and opacity of large groups. Usually for good laser cutting the line width has to match a maximum width to be recognized as a hairline. Additionally often opacity issues cause that lines are missed by laser cutter.</label>
<label>Cleanup Styles by Mario Voigt / Stadtfabrikanten e.V. (2021)</label> <label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<label>This piece of software is part of the MightyScape for InkScape 1.0/1.1dev Extension Collection.</label> <spacer/>
<label>You found a bug or got some fresh code? Just report to mario.voigt@stadtfabrikanten.org. Thanks!</label> <label appearance="header">Online Documentation</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">https://y.stadtfabrikanten.org/cleanupstyles</label>
<label>License: GNU GPL v3</label> <spacer/>
<separator /> <label appearance="header">Contributing</label>
<label>This extension generates inventory stickers for thermo printers (we use Brother QL-720NW) from our Teedy instance. Teedy is an open source software document management system (DMS). You can find the complete documentation at the Wiki space of https://fablabchemnitz.de</label> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
@ -48,6 +63,6 @@
</effects-menu> </effects-menu>
</effect> </effect>
<script> <script>
<command location="inx" interpreter="python">cleanup.py</command> <command location="inx" interpreter="python">cleanup_styles.py</command>
</script> </script>
</inkscape-extension> </inkscape-extension>

View File

@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Based on Based on
- coloreffect.py by Jos Hirth and Aaron C. Spike - coloreffect.py by Jos Hirth and Aaron C. Spike
- cleanup.py https://github.com/attoparsec/inkscape-extensions by attoparsec - cleanup.py (https://github.com/attoparsec/inkscape-extensions) by attoparsec
Author: Mario Voigt / FabLab Chemnitz Author: Mario Voigt / FabLab Chemnitz
Mail: mario.voigt@stadtfabrikanten.org Mail: mario.voigt@stadtfabrikanten.org
@ -37,7 +37,7 @@ class Cleanup(inkex.EffectExtension):
groups = [] groups = []
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--main_tabs") pars.add_argument("--tab")
pars.add_argument("--mode", default="Lines", help="Join paths with lines or polygons") pars.add_argument("--mode", default="Lines", help="Join paths with lines or polygons")
pars.add_argument("--dedicated_style_attributes", default="ignore", help="Handling of dedicated style attributes") pars.add_argument("--dedicated_style_attributes", default="ignore", help="Handling of dedicated style attributes")
pars.add_argument("--stroke_width_override", type=inkex.Boolean, default=False, help="Override stroke width") pars.add_argument("--stroke_width_override", type=inkex.Boolean, default=False, help="Override stroke width")

View File

@ -3,10 +3,10 @@
<name>Contour Scanner</name> <name>Contour Scanner</name>
<id>fablabchemnitz.de.contour_scanner</id> <id>fablabchemnitz.de.contour_scanner</id>
<param name="main_tabs" type="notebook"> <param name="main_tabs" type="notebook">
<page name="tab_active" gui-text="Active"> <page name="tab_settings" gui-text="Contour Scanner">
<hbox> <hbox>
<vbox> <vbox>
<label appearance="header">Highlight paths</label> <label appearance="header">Highlight Paths</label>
<param name="highlight_opened" type="bool" gui-text="Highlight opened contours">true</param> <param name="highlight_opened" type="bool" gui-text="Highlight opened contours">true</param>
<param name="color_opened" type="color" appearance="colorbutton" gui-text="Color opened contours">4012452351</param> <param name="color_opened" type="color" appearance="colorbutton" gui-text="Color opened contours">4012452351</param>
<param name="highlight_closed" type="bool" gui-text="Highlight closed contours">true</param> <param name="highlight_closed" type="bool" gui-text="Highlight closed contours">true</param>
@ -21,7 +21,7 @@
</vbox> </vbox>
<separator/> <separator/>
<vbox> <vbox>
<label appearance="header">Remove paths</label> <label appearance="header">Remove Paths</label>
<param name="remove_opened" type="bool" gui-text="Remove opened contours">false</param> <param name="remove_opened" type="bool" gui-text="Remove opened contours">false</param>
<param name="remove_closed" type="bool" gui-text="Remove closed contours">false</param> <param name="remove_closed" type="bool" gui-text="Remove closed contours">false</param>
<param name="remove_selfintersecting" type="bool" gui-text="Remove self-intersecting contours">false</param> <param name="remove_selfintersecting" type="bool" gui-text="Remove self-intersecting contours">false</param>
@ -35,16 +35,35 @@
</vbox> </vbox>
</hbox> </hbox>
</page> </page>
<page name="tab_info" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">About</label> <label appearance="header">Contour Scanner</label>
<separator/> <label>This tool helps you to find nasty contours which might bug you and prevent your work from being ready for production. Ideally you should convert your paths to polylines because the algorithm used by Contour Scanner is not able to distinguish between curves and polylines. It will handle curves like polylines but that creates visual and measurable errors. Either use "Split Bezier (Subdivide Path)" or "Add Nodes" extension to split into smaller segments which makes more precise. You can also run "Flatten Bezier" to make smooth polylines. For roughest approximation use "Convert to Polylines" extension to create real polylines.</label>
<label>Contour Scanner by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<label>This piece of software is part of the MightyScape for InkScape 1.0/1.1dev Extension Collection</label> <spacer/>
<label>you found a bug or got some fresh code? Just report to mario.voigt@stadtfabrikanten.org. Thanks!</label> <label appearance="header">Online Documentation</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">https://y.stadtfabrikanten.org/contourscanner</label>
<label>License: GNU GPL v3</label> <spacer/>
<separator/> <label appearance="header">Contributing</label>
<label>This tool helps you to find nasty contours which might bug you and prevent your work from being ready for production. Ideally you should convert your paths to polylines because the algorithm used by Contour Scanner is not able to distinguish between curves and polylines. It will handle curves like polylines but that creates visual and measurable errors. Either use "Split Bezier (Subdivide Path)" or "Add Nodes" extension to split into smaller segments which makes more precise. You can also run "Flatten Bezier" to make smooth polylines. For roughest approximation use "Convert to Polylines" extension to create real polylines. You can find the complete documentation at the Wiki space of https://fablabchemnitz.de</label> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/ideasman42/isect_segments-bentley_ottmann</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect> <effect>

View File

@ -2,8 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Create Links (Breakaway Connectors)</name> <name>Create Links (Breakaway Connectors)</name>
<id>fablabchemnitz.de.create_links</id> <id>fablabchemnitz.de.create_links</id>
<param name="main_tabs" type="notebook"> <param name="tab" type="notebook">
<page name="settings" gui-text="Settings"> <page name="tab_settings" gui-text="Settings">
<hbox> <hbox>
<vbox> <vbox>
<param name="path_types" type="optiongroup" appearance="combo" gui-text="Apply for"> <param name="path_types" type="optiongroup" appearance="combo" gui-text="Apply for">
@ -58,14 +58,31 @@
</vbox> </vbox>
</hbox> </hbox>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">Create Links</label> <label appearance="header">Create Links</label>
<label>by Mario Voigt / Stadtfabrikanten e.V. (2021)</label> <label>A utility to create links, also known as tabs, breakaway connectors or bridges. Intended to use with laser cutters.</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/> <spacer/>
<label>This piece of software is part of the MightyScape for InkScape 1.0/1.1dev Extension Collection.</label> <label appearance="header">Online Documentation</label>
<label>You found a bug or got some fresh code? Just report to mario.voigt@stadtfabrikanten.org. Thanks!</label> <label appearance="url">https://y.stadtfabrikanten.org/createlinks</label>
<label appearance="url">https://fablabchemnitz.de</label> <spacer/>
<label>License: GNU GPL v3</label> <label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect> <effect>

View File

@ -43,7 +43,7 @@ from inkex.bezier import csplength
class LinksCreator(inkex.EffectExtension): class LinksCreator(inkex.EffectExtension):
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--main_tabs") pars.add_argument("--tab")
pars.add_argument("--path_types", default="closed_paths", help="Apply for closed paths, open paths or both") pars.add_argument("--path_types", default="closed_paths", help="Apply for closed paths, open paths or both")
pars.add_argument("--creationunit", default="mm", help="Creation Units") pars.add_argument("--creationunit", default="mm", help="Creation Units")
pars.add_argument("--creationtype", default="entered_values", help="Creation") pars.add_argument("--creationtype", default="entered_values", help="Creation")
@ -95,10 +95,9 @@ class LinksCreator(inkex.EffectExtension):
nodeParent = node.getparent() nodeParent = node.getparent()
pathIsClosed = False pathIsClosed = False
path = node.path.to_superpath() path = node.path.to_arrays() #to_arrays() is deprecated. How to make more modern?
if path[-1][0] == 'Z' or path[0] == path[-1]: #if first is last point the path is also closed. The "Z" command is not required if path[-1][0] == 'Z' or path[0][1] == path[-1][1]: #if first is last point the path is also closed. The "Z" command is not required
pathIsClosed = True pathIsClosed = True
if self.options.path_types == 'open_paths' and pathIsClosed is True: if self.options.path_types == 'open_paths' and pathIsClosed is True:
return #skip this loop iteration return #skip this loop iteration
elif self.options.path_types == 'closed_paths' and pathIsClosed is False: elif self.options.path_types == 'closed_paths' and pathIsClosed is False:
@ -119,7 +118,7 @@ class LinksCreator(inkex.EffectExtension):
if self.options.length_filter is True: if self.options.length_filter is True:
if stotal < self.svg.unittouu(str(self.options.length_filter_value) + self.options.length_filter_unit): if stotal < self.svg.unittouu(str(self.options.length_filter_value) + self.options.length_filter_unit):
if self.options.show_info is True: inkex.errormsg("node " + node.get('id') + " is shorter than minimum allowed length of {:1.3f} {}. Path length is {:1.3f} {}".format(self.options.length_filter_value, self.options.length_filter_unit, stotal, self.options.creationunit)) if self.options.show_info is True: self.msg("node " + node.get('id') + " is shorter than minimum allowed length of {:1.3f} {}. Path length is {:1.3f} {}".format(self.options.length_filter_value, self.options.length_filter_unit, stotal, self.options.creationunit))
return #skip this loop iteration return #skip this loop iteration
if self.options.creationunit == "percent": if self.options.creationunit == "percent":
@ -142,7 +141,7 @@ class LinksCreator(inkex.EffectExtension):
#validate dashes. May not be negative. Otherwise Inkscape will freeze forever. Reason: rendering issue #validate dashes. May not be negative. Otherwise Inkscape will freeze forever. Reason: rendering issue
if any(dash <= 0.0 for dash in dashes) == True: if any(dash <= 0.0 for dash in dashes) == True:
if self.options.show_info is True: inkex.errormsg("node " + node.get('id') + ": Error! Dash array may not contain negative numbers: " + ' '.join(format(dash, "1.3f") for dash in dashes) + ". Path skipped. Maybe it's too short. Adjust your link count, multiplicator and length accordingly, or set to unit '%'") if self.options.show_info is True: self.msg("node " + node.get('id') + ": Error! Dash array may not contain negative numbers: " + ' '.join(format(dash, "1.3f") for dash in dashes) + ". Path skipped. Maybe it's too short. Adjust your link count, multiplicator and length accordingly, or set to unit '%'")
return False if self.options.skip_errors is True else exit(1) return False if self.options.skip_errors is True else exit(1)
if self.options.creationunit == "percent": if self.options.creationunit == "percent":
@ -155,7 +154,7 @@ class LinksCreator(inkex.EffectExtension):
if self.options.creationtype == "use_existing": if self.options.creationtype == "use_existing":
if self.options.no_convert is True: if self.options.no_convert is True:
if self.options.show_info is True: inkex.errormsg("node " + node.get('id') + ": Nothing to do. Please select another creation method or disable cosmetic style output paths.") if self.options.show_info is True: self.msg("node " + node.get('id') + ": Nothing to do. Please select another creation method or disable cosmetic style output paths.")
return False if self.options.skip_errors is True else exit(1) return False if self.options.skip_errors is True else exit(1)
stroke_dashoffset = 0 stroke_dashoffset = 0
style = node.style style = node.style
@ -168,7 +167,7 @@ class LinksCreator(inkex.EffectExtension):
else: else:
raise ValueError raise ValueError
except: except:
if self.options.show_info is True: inkex.errormsg("node " + node.get('id') + ": No dash style to continue with.") if self.options.show_info is True: self.msg("node " + node.get('id') + ": No dash style to continue with.")
return False if self.options.skip_errors is True else exit(1) return False if self.options.skip_errors is True else exit(1)
if self.options.creationtype == "custom_dashpattern": if self.options.creationtype == "custom_dashpattern":
@ -180,7 +179,7 @@ class LinksCreator(inkex.EffectExtension):
else: else:
raise ValueError raise ValueError
except: except:
if self.options.show_info is True: inkex.errormsg("node " + node.get('id') + ": Error in custom dasharray string (might be empty or does not contain any numbers).") if self.options.show_info is True: self.msg("node " + node.get('id') + ": Error in custom dasharray string (might be empty or does not contain any numbers).")
return False if self.options.skip_errors is True else exit(1) return False if self.options.skip_errors is True else exit(1)
#assign stroke dasharray from entered values, existing style or custom dashpattern #assign stroke dasharray from entered values, existing style or custom dashpattern
@ -234,20 +233,20 @@ class LinksCreator(inkex.EffectExtension):
# Print some info about values # Print some info about values
if self.options.show_info is True: if self.options.show_info is True:
inkex.errormsg("node " + node.get('id') + ":") self.msg("node " + node.get('id') + ":")
if self.options.creationunit == "percent": if self.options.creationunit == "percent":
inkex.errormsg(" * total path length = {:1.3f} {}".format(stotal, self.svg.unit)) #show length, converted in selected unit self.msg(" * total path length = {:1.3f} {}".format(stotal, self.svg.unit)) #show length, converted in selected unit
inkex.errormsg(" * (calculated) offset: {:1.3f} %".format(stroke_dashoffset)) self.msg(" * (calculated) offset: {:1.3f} %".format(stroke_dashoffset))
if self.options.creationtype == "entered_values": if self.options.creationtype == "entered_values":
inkex.errormsg(" * (calculated) gap length: {:1.3f} %".format(length_link)) self.msg(" * (calculated) gap length: {:1.3f} %".format(length_link))
else: else:
inkex.errormsg(" * total path length = {:1.3f} {} ({:1.3f} {})".format(self.svg.uutounit(stotal, self.options.creationunit), self.options.creationunit, stotal, self.svg.unit)) #show length, converted in selected unit self.msg(" * total path length = {:1.3f} {} ({:1.3f} {})".format(self.svg.uutounit(stotal, self.options.creationunit), self.options.creationunit, stotal, self.svg.unit)) #show length, converted in selected unit
inkex.errormsg(" * (calculated) offset: {:1.3f} {}".format(self.svg.uutounit(stroke_dashoffset, self.options.creationunit), self.options.creationunit)) self.msg(" * (calculated) offset: {:1.3f} {}".format(self.svg.uutounit(stroke_dashoffset, self.options.creationunit), self.options.creationunit))
if self.options.creationtype == "entered_values": if self.options.creationtype == "entered_values":
inkex.errormsg(" * (calculated) gap length: {:1.3f} {}".format(length_link, self.options.creationunit)) self.msg(" * (calculated) gap length: {:1.3f} {}".format(length_link, self.options.creationunit))
if self.options.creationtype == "entered_values": if self.options.creationtype == "entered_values":
inkex.errormsg(" * total gaps = {}".format(self.options.link_count)) self.msg(" * total gaps = {}".format(self.options.link_count))
inkex.errormsg(" * (calculated) dash/gap pattern: {} ({})".format(stroke_dasharray, self.svg.unit)) self.msg(" * (calculated) dash/gap pattern: {} ({})".format(stroke_dasharray, self.svg.unit))
# Conversion step (split cosmetic path into real segments) # Conversion step (split cosmetic path into real segments)
if self.options.no_convert is False: if self.options.no_convert is False:
@ -293,7 +292,7 @@ class LinksCreator(inkex.EffectExtension):
breakApartGroup = nodeParent.add(inkex.Group()) breakApartGroup = nodeParent.add(inkex.Group())
for breakOutputNode in breakOutputNodes: for breakOutputNode in breakOutputNodes:
breakApartGroup.append(breakOutputNode) breakApartGroup.append(breakOutputNode)
#inkex.errormsg(replacedNode.get('id')) #self.msg(replacedNode.get('id'))
#self.svg.selection.set(replacedNode.get('id')) #update selection to split paths segments (does not work, so commented out) #self.svg.selection.set(replacedNode.get('id')) #update selection to split paths segments (does not work, so commented out)
if len(self.svg.selected) > 0: if len(self.svg.selected) > 0:
@ -303,7 +302,7 @@ class LinksCreator(inkex.EffectExtension):
for breakInputNode in breakInputNodes: for breakInputNode in breakInputNodes:
createLinks(breakInputNode) createLinks(breakInputNode)
else: else:
inkex.errormsg('Please select some paths first.') self.msg('Please select some paths first.')
return return
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -53,9 +53,8 @@
<label appearance="url">http://kabeja.sourceforge.net</label> <label appearance="url">http://kabeja.sourceforge.net</label>
<spacer/> <spacer/>
<label appearance="header">MightyScape Extension Collection</label> <label appearance="header">MightyScape Extension Collection</label>
<label>This piece of software is part of the MightyScape for InkScape Extension Collection and is licensed under GNU GPL v3</label> <label>This piece of software is part of the MightyScape for Inkscape Extension Collection and is licensed under GNU GPL v3</label>
<label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label> <label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label>
</page> </page>
<page name="tab_donate" gui-text="Donate"> <page name="tab_donate" gui-text="Donate">
<label appearance="header">Coffee + Pizza</label> <label appearance="header">Coffee + Pizza</label>

View File

@ -1,10 +1,9 @@
<?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>DXF/DWG Importer</name> <name>DXF/DWG Importer</name>
<id>fablabchemnitz.de.dxfdwgimporter_configure</id> <id>fablabchemnitz.de.dxfdwgimporter</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="general" gui-text="Input / General"> <page name="tab_general" gui-text="Input / General">
<label>The parser is the heart of your input-output chain because depending on the selection your result will greatly vary. You might receive no or bad results (e.g. wrong scalings, aborted imports, missing lines, duplicated lines, wrong rotations and other issues. Serious tip: ask the person who gave the input file to you about some measurement which you can compare with the processed file to ensure correct sizes)</label> <label>The parser is the heart of your input-output chain because depending on the selection your result will greatly vary. You might receive no or bad results (e.g. wrong scalings, aborted imports, missing lines, duplicated lines, wrong rotations and other issues. Serious tip: ask the person who gave the input file to you about some measurement which you can compare with the processed file to ensure correct sizes)</label>
<param name="dxf_to_svg_parser" gui-text="DXF to SVG parser" type="optiongroup" appearance="combo"> <param name="dxf_to_svg_parser" gui-text="DXF to SVG parser" type="optiongroup" appearance="combo">
<option value="bjnortier">bjnortier DXF (good quality, some polygon artifacts)</option> <option value="bjnortier">bjnortier DXF (good quality, some polygon artifacts)</option>
@ -25,15 +24,8 @@
</param> </param>
<param name="inputfile" type="path" gui-text="Import File (*.dxf, .dwg)" gui-description="Full path to your file, e.g. 'C:\Users\Username\Documents\myimage.jpg'" filetypes="dxf,dwg" mode="file">C:\Users\</param> <param name="inputfile" type="path" gui-text="Import File (*.dxf, .dwg)" gui-description="Full path to your file, e.g. 'C:\Users\Username\Documents\myimage.jpg'" filetypes="dxf,dwg" mode="file">C:\Users\</param>
<param name="opendironerror" type="bool" gui-text="Open containing output directory on conversion errors">true</param> <param name="opendironerror" type="bool" gui-text="Open containing output directory on conversion errors">true</param>
<spacer/>
<label appearance="header">About</label>
<separator/>
<label>DXF/DWG File Importer by Mario Voigt / Stadtfabrikanten e.V. (2020)</label>
<label>A strange looking ODA File Converter/sk1 UniConverter/ezdxf tool chain. But it works! The most versatile tool to import much hated AutoCAD data for InkScape yet.</label>
<label appearance="url">https://fablabchemnitz.de</label>
<label>License: GNU GPL v3</label>
</page> </page>
<page name="dwg_dxf" gui-text="DWG to DXF / DXF to DXF"> <page name="tab_dwg_dxf" gui-text="DWG to DXF / DXF to DXF">
<label appearance="header">Open Design Alliance (ODA) File Converter</label> <label appearance="header">Open Design Alliance (ODA) File Converter</label>
<param name="oda_fileconverter" type="path" gui-text="ODAFileConverter executable" gui-description="Full path to 'ODAFileConverter' executable. On Linux this usually should be '/usr/bin/ODAFileConverter' and on Windows it's 'C:\Program Files\ODA\OdaFileConverter_title XX.Y.Z\ODAFileConverter.exe'" filetypes="" mode="file">C:\Program Files\ODA\ODAFileConverter_title 21.6.0\ODAFileConverter.exe</param> <param name="oda_fileconverter" type="path" gui-text="ODAFileConverter executable" gui-description="Full path to 'ODAFileConverter' executable. On Linux this usually should be '/usr/bin/ODAFileConverter' and on Windows it's 'C:\Program Files\ODA\OdaFileConverter_title XX.Y.Z\ODAFileConverter.exe'" filetypes="" mode="file">C:\Program Files\ODA\ODAFileConverter_title 21.6.0\ODAFileConverter.exe</param>
<param name="oda_keepconverted_dxf" type="bool" gui-text="Keep ODA converted DXF file" gui-description="Will put a copy of the converted DXF into the directory where your input file is located.">true</param> <param name="oda_keepconverted_dxf" type="bool" gui-text="Keep ODA converted DXF file" gui-description="Will put a copy of the converted DXF into the directory where your input file is located.">true</param>
@ -75,7 +67,7 @@
<param name="oda_skip_dxf_to_dxf" type="bool" gui-text="Skip conversion from DXF to DXF (keep input as is)" gui-description="This will skip ODA File Converter execution if input is already DXF file. If your input is DWG this option will not apply. Might save some seconds of time and maybe prevents errors.">false</param> <param name="oda_skip_dxf_to_dxf" type="bool" gui-text="Skip conversion from DXF to DXF (keep input as is)" gui-description="This will skip ODA File Converter execution if input is already DXF file. If your input is DWG this option will not apply. Might save some seconds of time and maybe prevents errors.">false</param>
<param name="oda_audit_repair" type="bool" gui-text="Perform audit (auto-repair)">true</param> <param name="oda_audit_repair" type="bool" gui-text="Perform audit (auto-repair)">true</param>
</page> </page>
<page name="dxf_svg" gui-text="DXF to SVG"> <page name="tab_dxf_svg" gui-text="DXF to SVG">
<label appearance="header">ezdxf DXF to DXF Pre-Processing (Filter)</label> <label appearance="header">ezdxf DXF to DXF Pre-Processing (Filter)</label>
<separator/> <separator/>
<param name="ezdxf_preprocessing" type="bool" gui-text="Filter entities with ezdxf (recommended if you use sk1 UniConverter)">true</param> <param name="ezdxf_preprocessing" type="bool" gui-text="Filter entities with ezdxf (recommended if you use sk1 UniConverter)">true</param>
@ -155,7 +147,40 @@
<param name="vpype_quantization" type="float" min="0.001" max="99999.000" precision="3" gui-text="Quantization" gui-description="Maximum length of segments approximating curved elements (default 0.1mm)">0.100</param> <param name="vpype_quantization" type="float" min="0.001" max="99999.000" precision="3" gui-text="Quantization" gui-description="Maximum length of segments approximating curved elements (default 0.1mm)">0.100</param>
<param name="vpype_simplify" type="bool" gui-text="Simplify curved elements" gui-description="Apply simplification algorithm to curved elements">false</param> <param name="vpype_simplify" type="bool" gui-text="Simplify curved elements" gui-description="Apply simplification algorithm to curved elements">false</param>
<param name="vpype_parallel" type="bool" gui-text="Multiprocessing curve conversion" gui-description="Enable multiprocessing for curve conversion.">false</param> <param name="vpype_parallel" type="bool" gui-text="Multiprocessing curve conversion" gui-description="Enable multiprocessing for curve conversion.">false</param>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">DXF/DWG Importer</label>
<label>A strange looking ODA File Converter/sk1 UniConverter/ezdxf tool chain. But it works! The most versatile tool to import much hated AutoCAD data for InkScape yet.</label>
<label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/dxfdwgimporter</label>
<spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/mozman/ezdxf</label>
<label appearance="url">http://kabeja.sourceforge.net</label>
<label appearance="url">https://github.com/bjnortier/dxf</label>
<label appearance="url">https://github.com/sk1project/uniconvertor</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<label appearance="url">https://github.com/tatarize/vpype-dxf</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -2,6 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Imagetracer.js</name> <name>Imagetracer.js</name>
<id>fablabchemnitz.de.imagetracerjs</id> <id>fablabchemnitz.de.imagetracerjs</id>
<param name="tab" type="notebook">
<page name="tab_general" gui-text="Imagetracer.js">
<hbox> <hbox>
<vbox> <vbox>
<label appearance="header">Tracing</label> <label appearance="header">Tracing</label>
@ -46,13 +48,37 @@
<param name="blurdelta" type="float" min="0.0" max="9999" gui-text="RGBA delta treshold for selective Gaussian blur preprocessing">20.0</param> <param name="blurdelta" type="float" min="0.0" max="9999" gui-text="RGBA delta treshold for selective Gaussian blur preprocessing">20.0</param>
</vbox> </vbox>
</hbox> </hbox>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Imagetracer.js</label>
<label>imagetracerjs - Simple raster image tracer and vectorizer written in JavaScript, ported to Inkscape. It will vectorize your beautiful image into a more beautiful SVG trace with separated infills(break apart into single surfaces like a puzzle).</label>
<label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/> <spacer/>
<label appearance="header">About</label> <label appearance="header">Online Documentation</label>
<separator/> <label appearance="url">https://y.stadtfabrikanten.org/imagetracerjs</label>
<label>imagetracerjs - Simple raster image tracer and vectorizer written in JavaScript. Ported to InkScape 1.X by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <spacer/>
<label>It will vectorize your beautiful image into a more beautiful SVG trace with separated infills(break apart into single surfaces like a puzzle)</label> <label appearance="header">Contributing</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label>License: GNU GPL v3</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/jankovicsandras/imagetracerjs</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>image</object-type> <object-type>image</object-type>
<effects-menu> <effects-menu>

View File

@ -49,7 +49,7 @@ class Imagetracerjs (inkex.EffectExtension):
return path return path
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--tabs") pars.add_argument("--tab")
pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas") pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas")
pars.add_argument("--ltres", type=float, default=1.0, help="Error treshold straight lines") pars.add_argument("--ltres", type=float, default=1.0, help="Error treshold straight lines")
pars.add_argument("--qtres", type=float, default=1.0, help="Error treshold quadratic splines") pars.add_argument("--qtres", type=float, default=1.0, help="Error treshold quadratic splines")

View File

@ -2,8 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Inventory Sticker</name> <name>Inventory Sticker</name>
<id>fablabchemnitz.de.inventory_sticker</id> <id>fablabchemnitz.de.inventory_sticker</id>
<param name="main_tabs" type="notebook"> <param name="tab" type="notebook">
<page name="tab_active" gui-text="Active"> <page name="tab_settings" gui-text="Settings">
<label appearance="header">Inventory Download</label> <label appearance="header">Inventory Download</label>
<param name="server_address" type="string" gui-text="inventory.csv URL">https://the.domain.de/items.csv</param> <param name="server_address" type="string" gui-text="inventory.csv URL">https://the.domain.de/items.csv</param>
<param name="htuser" type="string" gui-text="Basic Auth User">User</param> <param name="htuser" type="string" gui-text="Basic Auth User">User</param>
@ -21,16 +21,31 @@
<param name="print_device" type="string" gui-text="Printer interface (USB)" gui-description="[VendorID:ProductID], Example: 04f9:2044">04f9:2044</param> <param name="print_device" type="string" gui-text="Printer interface (USB)" gui-description="[VendorID:ProductID], Example: 04f9:2044">04f9:2044</param>
<param name="preview" type="bool" gui-text="Generate preview only" gui-description="If enabled stickers will not be exported. Just generate sticker for the first given Id">false</param> <param name="preview" type="bool" gui-text="Generate preview only" gui-description="If enabled stickers will not be exported. Just generate sticker for the first given Id">false</param>
</page> </page>
<page name="tab_info" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">About</label> <label appearance="header">Inventory Sticker</label>
<separator /> <label>This extension generates inventory stickers for thermo printers (we use a Brother QL-720NW) from our Teedy instance. Teedy is an open source software document management system (DMS).</label>
<label>Inventory Stickers by Mario Voigt / Stadtfabrikanten e.V. (2021)</label> <label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<label>This piece of software is part of the MightyScape for InkScape 1.0/1.1dev Extension Collection.</label> <spacer/>
<label>you found a bug or got some fresh code? Just report to mario.voigt@stadtfabrikanten.org. Thanks!</label> <label appearance="header">Online Documentation</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">https://y.stadtfabrikanten.org/inventorysticker</label>
<label>License: GNU GPL v3</label> <spacer/>
<separator /> <label appearance="header">Contributing</label>
<label>This extension generates inventory stickers for thermo printers (we use Brother QL-720NW) from our Teedy instance. Teedy is an open source software document management system (DMS). You can find the complete documentation at the Wiki space of https://fablabchemnitz.de</label> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect> <effect>

View File

@ -358,7 +358,7 @@ def splitAt(string, length):
class InventorySticker(inkex.Effect): class InventorySticker(inkex.Effect):
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--main_tabs") pars.add_argument("--tab")
pars.add_argument("--server_address", default="https://the.domain.de/items.csv") pars.add_argument("--server_address", default="https://the.domain.de/items.csv")
pars.add_argument("--htuser", default="user") pars.add_argument("--htuser", default="user")
pars.add_argument("--htpassword", default="password") pars.add_argument("--htpassword", default="password")

View File

@ -2,9 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Ungrouper And Element Migrator/Filter</name> <name>Ungrouper And Element Migrator/Filter</name>
<id>fablabchemnitz.de.migrategroups</id> <id>fablabchemnitz.de.migrategroups</id>
<label>Running this extension works for current selection or if nothing is selected for whole document. It allows to flatten elements into one group and to drop elements while processing.</label> <param name="tab" type="notebook">
<label>Unchecked elements will be dropped, if you selected a filter mode. Groups with transformations might puzzle anywhere. Please run "apply transformations" extension before to avoid this.</label> <page name="tab_settings" gui-text="Settings">
<separator/>
<label appearance="header">Custom Element Types To Keep</label> <label appearance="header">Custom Element Types To Keep</label>
<hbox> <hbox>
<vbox> <vbox>
@ -70,11 +69,37 @@
<param name="parsechildren" type="bool" gui-text="Perform operations on children of selection">true</param> <param name="parsechildren" type="bool" gui-text="Perform operations on children of selection">true</param>
<param name="showdroplist" type="bool" gui-text="Show list of dropped items">false</param> <param name="showdroplist" type="bool" gui-text="Show list of dropped items">false</param>
<param name="shownewgroupname" type="bool" gui-text="Show name of new group formation" gui-description="This helps to better identify the generated output.">false</param> <param name="shownewgroupname" type="bool" gui-text="Show name of new group formation" gui-description="This helps to better identify the generated output.">false</param>
<param name="apply_transformations" type="bool" gui-text="Apply transformations (requires separate extension)" gui-description="This will call the extension 'Apply Transformations'. Helps avoiding geometry shifting">false</param>
<param name="cleanup" gui-text="Cleanup all unused groups (requires separate extension)" type="boolean" gui-description="This will call the extension 'Remove Empty Groups' if available">true</param> <param name="cleanup" gui-text="Cleanup all unused groups (requires separate extension)" type="boolean" gui-description="This will call the extension 'Remove Empty Groups' if available">true</param>
<separator/> </page>
<label>Written by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <page name="tab_about" gui-text="About">
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="header">Ungrouper And Element Migrator/Filter</label>
<label>License: GNU GPL v3</label> <label>Running this extension works for current selection or if nothing is selected for whole document. It allows to flatten elements into one group and to drop elements while processing.</label>
<label>Unchecked elements will be dropped, if you selected a filter mode. Groups with transformations might puzzle anywhere. Please run "apply transformations" extension before to avoid this.</label>
<label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/migrategroups</label>
<spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>path</object-type> <object-type>path</object-type>
<effects-menu> <effects-menu>

View File

@ -16,52 +16,53 @@ import inkex
import os import os
from lxml import etree from lxml import etree
class MigrateGroups(inkex.Effect): class MigrateGroups(inkex.EffectExtension):
allElements = [] #list of all (sub)elements to process within selection allElements = [] #list of all (sub)elements to process within selection
allGroups = [] #list of all groups (svg:g and svg:svg items) to delete for cleanup (for ungrouping) allGroups = [] #list of all groups (svg:g and svg:svg items) to delete for cleanup (for ungrouping)
allDrops = [] #list of all other elements except svg:g and svg:svg to drop while migrating (for filtering) allDrops = [] #list of all other elements except svg:g and svg:svg to drop while migrating (for filtering)
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument("--tab")
self.arg_parser.add_argument("--ignorecustomselection", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--operationmode", default=False)
self.arg_parser.add_argument("--parsechildren", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--cleanup", type=inkex.Boolean, default = True, help = "Decimal tolerance")
self.arg_parser.add_argument("--showdroplist", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--shownewgroupname", type=inkex.Boolean, default=False)
#self.arg_parser.add_argument("--sodipodi", type=inkex.Boolean, default=True) pars.add_argument("--operationmode", default=False, help="Operation mode")
#self.arg_parser.add_argument("--svg", type=inkex.Boolean, default=True) pars.add_argument("--parsechildren", type=inkex.Boolean, default=True, help="Perform operations on children of selection")
self.arg_parser.add_argument("--circle", type=inkex.Boolean, default=True) pars.add_argument("--showdroplist", type=inkex.Boolean, default=False, help="Show list of dropped items")
self.arg_parser.add_argument("--clipPath", type=inkex.Boolean, default=True) pars.add_argument("--shownewgroupname", type=inkex.Boolean, default=False, help="This helps to better identify the generated output.")
self.arg_parser.add_argument("--defs", type=inkex.Boolean, default=True) pars.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting")
self.arg_parser.add_argument("--ellipse", type=inkex.Boolean, default=True) pars.add_argument("--cleanup", type=inkex.Boolean, default = True, help = "This will call the extension 'Remove Empty Groups' if available")
self.arg_parser.add_argument("--image", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--line", type=inkex.Boolean, default=True) #pars.add_argument("--sodipodi", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--path", type=inkex.Boolean, default=True) #pars.add_argument("--svg", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--polyline", type=inkex.Boolean, default=True) pars.add_argument("--circle", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--polygon", type=inkex.Boolean, default=True) pars.add_argument("--clipPath", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--rect", type=inkex.Boolean, default=True) pars.add_argument("--defs", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--text", type=inkex.Boolean, default=True) pars.add_argument("--ellipse", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--tspan", type=inkex.Boolean, default=True) pars.add_argument("--image", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--linearGradient", type=inkex.Boolean, default=True) pars.add_argument("--line", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--radialGradient", type=inkex.Boolean, default=True) pars.add_argument("--path", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--mask", type=inkex.Boolean, default=True) pars.add_argument("--polyline", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--meshGradient", type=inkex.Boolean, default=True) pars.add_argument("--polygon", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--meshRow", type=inkex.Boolean, default=True) pars.add_argument("--rect", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--meshPatch", type=inkex.Boolean, default=True) pars.add_argument("--text", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--metadata", type=inkex.Boolean, default=True) pars.add_argument("--tspan", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--script", type=inkex.Boolean, default=True) pars.add_argument("--linearGradient", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--symbol", type=inkex.Boolean, default=True) pars.add_argument("--radialGradient", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--stop", type=inkex.Boolean, default=True) pars.add_argument("--mask", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--switch", type=inkex.Boolean, default=True) pars.add_argument("--meshGradient", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--use", type=inkex.Boolean, default=True) pars.add_argument("--meshRow", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--flowRoot", type=inkex.Boolean, default=True) pars.add_argument("--meshPatch", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--flowRegion", type=inkex.Boolean, default=True) pars.add_argument("--metadata", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--flowPara", type=inkex.Boolean, default=True) pars.add_argument("--script", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--marker", type=inkex.Boolean, default=True) pars.add_argument("--symbol", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--pattern", type=inkex.Boolean, default=True) pars.add_argument("--stop", type=inkex.Boolean, default=True)
pars.add_argument("--switch", type=inkex.Boolean, default=True)
pars.add_argument("--use", type=inkex.Boolean, default=True)
pars.add_argument("--flowRoot", type=inkex.Boolean, default=True)
pars.add_argument("--flowRegion", type=inkex.Boolean, default=True)
pars.add_argument("--flowPara", type=inkex.Boolean, default=True)
pars.add_argument("--marker", type=inkex.Boolean, default=True)
pars.add_argument("--pattern", type=inkex.Boolean, default=True)
def effect(self): def effect(self):
@ -97,7 +98,7 @@ class MigrateGroups(inkex.Effect):
namespace.append("{http://www.w3.org/2000/svg}flowPara") if self.options.flowPara else "" namespace.append("{http://www.w3.org/2000/svg}flowPara") if self.options.flowPara else ""
namespace.append("{http://www.w3.org/2000/svg}marker") if self.options.marker else "" namespace.append("{http://www.w3.org/2000/svg}marker") if self.options.marker else ""
namespace.append("{http://www.w3.org/2000/svg}pattern") if self.options.pattern else "" namespace.append("{http://www.w3.org/2000/svg}pattern") if self.options.pattern else ""
#inkex.utils.debug(namespace) #self.msg(namespace)
#in case the user made a manual selection instead of whole document parsing, we need to collect all required elements first #in case the user made a manual selection instead of whole document parsing, we need to collect all required elements first
def parseChildren(element): def parseChildren(element):
@ -120,12 +121,12 @@ class MigrateGroups(inkex.Effect):
self.allElements.append(element) self.allElements.append(element)
#if we dont want to ungroup but filter out elements, or ungroup and filter, we need to divide the elements with respect to the namespace (user selection) #if we dont want to ungroup but filter out elements, or ungroup and filter, we need to divide the elements with respect to the namespace (user selection)
elif self.options.operationmode == "filter_only" or self.options.operationmode == "ungroup_and_filter": elif self.options.operationmode == "filter_only" or self.options.operationmode == "ungroup_and_filter":
#inkex.utils.debug(element.tag) #self.msg(element.tag)
if element.tag in namespace: #if the element is in namespace and no group type we will regroup the item. so we will not remove it if element.tag in namespace: #if the element is in namespace and no group type we will regroup the item. so we will not remove it
if element not in self.allElements: if element not in self.allElements:
self.allElements.append(element) self.allElements.append(element)
else: #we add all remaining items (except svg:g and svg:svg) into the list for deletion else: #we add all remaining items (except svg:g and svg:svg) into the list for deletion
#inkex.utils.debug(element.tag) #self.msg(element.tag)
if element.tag != inkex.addNS('g','svg') and element.tag != inkex.addNS('svg','svg') and element.tag != inkex.addNS('namedview','sodipodi'): if element.tag != inkex.addNS('g','svg') and element.tag != inkex.addNS('svg','svg') and element.tag != inkex.addNS('namedview','sodipodi'):
if element not in self.allDrops: if element not in self.allDrops:
self.allDrops.append(element) self.allDrops.append(element)
@ -135,14 +136,26 @@ class MigrateGroups(inkex.Effect):
if element not in self.allGroups: if element not in self.allGroups:
self.allGroups.append(element) self.allGroups.append(element)
applyTransformAvailable = False # at first we apply external extension
try:
import applytransform
applyTransformAvailable = True
except Exception as e:
# self.msg(e)
self.msg("Calling 'Apply Transformations' extension failed. Maybe the extension is not installed. You can download it from official InkScape Gallery. Skipping ...")
if self.options.apply_transformations is True and applyTransformAvailable is True:
applytransform.ApplyTransform().recursiveFuseTransform(self.document.getroot())
#check if we have selected elements or if we should parse the whole document instead #check if we have selected elements or if we should parse the whole document instead
selected = [] #total list of elements to parse selected = [] #total list of elements to parse
if len(self.svg.selected) == 0: if len(self.svg.selected) == 0:
for element in self.document.getroot().iter(tag=etree.Element): for element in self.document.getroot().iter(tag=etree.Element):
if element != self.document.getroot(): if element != self.document.getroot():
selected.append(element) selected.append(element)
else: else:
for id, element in self.svg.selected.items(): for element in self.svg.selected.values():
parseChildren(element) parseChildren(element)
#get all elements from the selection. #get all elements from the selection.
@ -151,17 +164,17 @@ class MigrateGroups(inkex.Effect):
#some debugging block #some debugging block
#check output #check output
#inkex.utils.debug("--- Selected items (with or without children) ---") #self.msg("--- Selected items (with or without children) ---")
#inkex.utils.debug(selected) #self.msg(selected)
#inkex.utils.debug("--- All elements (except groups)---") #self.msg("--- All elements (except groups)---")
#inkex.utils.debug(len(self.allElements)) #self.msg(len(self.allElements))
#inkex.utils.debug(self.allElements) #self.msg(self.allElements)
#inkex.utils.debug("--- All groups ---") #self.msg("--- All groups ---")
#inkex.utils.debug(len(self.allGroups)) #self.msg(len(self.allGroups))
#inkex.utils.debug(self.allGroups) #self.msg(self.allGroups)
#inkex.utils.debug("--- All dropouts ---") #self.msg("--- All dropouts ---")
#inkex.utils.debug(len(self.allDrops)) #self.msg(len(self.allDrops))
#inkex.utils.debug(self.allDrops) #self.msg(self.allDrops)
migrate_log = "migrategroups.log" migrate_log = "migrategroups.log"
@ -171,12 +184,12 @@ class MigrateGroups(inkex.Effect):
try: try:
os.remove(migrate_log) os.remove(migrate_log)
except OSError as e: except OSError as e:
inkex.utils.debug("Error while deleting previously generated log file " + migrate_log) self.msg("Error while deleting previously generated log file " + migrate_log)
# show a list with items to delete. For ungroup mode it does not apply because we are not going to remove anything # show a list with items to delete. For ungroup mode it does not apply because we are not going to remove anything
if self.options.operationmode == "filter_only" or self.options.operationmode == "ungroup_and_filter": if self.options.operationmode == "filter_only" or self.options.operationmode == "ungroup_and_filter":
if self.options.showdroplist: if self.options.showdroplist:
inkex.utils.debug(str(len(self.allDrops)) + " elements were removed during nodes while migration:") self.msg(str(len(self.allDrops)) + " elements were removed during nodes while migration.")
if len(self.allDrops) > 100: #if we print too much to the output stream we will freeze InkScape forever wihtout any visual error message. So we write to file instead if len(self.allDrops) > 100: #if we print too much to the output stream we will freeze InkScape forever wihtout any visual error message. So we write to file instead
migrate_log_file = open('migrategroups.log', 'w') migrate_log_file = open('migrategroups.log', 'w')
else: else:
@ -185,12 +198,12 @@ class MigrateGroups(inkex.Effect):
if i.get('id') is not None: if i.get('id') is not None:
migrateString = i.tag.replace("{http://www.w3.org/2000/svg}","svg:") + " id:" + i.get('id') migrateString = i.tag.replace("{http://www.w3.org/2000/svg}","svg:") + " id:" + i.get('id')
if migrate_log_file is None: if migrate_log_file is None:
inkex.utils.debug(migrateString) self.msg(migrateString)
else: else:
migrate_log_file.write(migrateString + "\n") migrate_log_file.write(migrateString + "\n")
if migrate_log_file is not None: if migrate_log_file is not None:
migrate_log_file.close() migrate_log_file.close()
inkex.utils.debug("Detailed output was dumped into file " + os.path.join(os.getcwd(), migrate_log)) self.msg("Detailed output was dumped into file " + os.path.join(os.getcwd(), migrate_log))
# remove all groups from the selection and form a new single group of it by copying with old IDs. # remove all groups from the selection and form a new single group of it by copying with old IDs.
if self.options.operationmode == "ungroup_only" or self.options.operationmode == "ungroup_and_filter": if self.options.operationmode == "ungroup_only" or self.options.operationmode == "ungroup_and_filter":
@ -198,7 +211,7 @@ class MigrateGroups(inkex.Effect):
newGroup = self.document.getroot().add(inkex.Group()) #make a new group at root level newGroup = self.document.getroot().add(inkex.Group()) #make a new group at root level
newGroup.set('id', self.svg.get_unique_id('migrate-')) #generate some known ID with the prefix 'migrate-' newGroup.set('id', self.svg.get_unique_id('migrate-')) #generate some known ID with the prefix 'migrate-'
if self.options.shownewgroupname == True: if self.options.shownewgroupname == True:
inkex.utils.debug("The migrated elements are now in group with ID " + str(newGroup.get('id'))) self.msg("The migrated elements are now in group with ID " + str(newGroup.get('id')))
index = 0 index = 0
for element in self.allElements: #we have a list of elements which does not cotain any other elements like svg:g or svg:svg for element in self.allElements: #we have a list of elements which does not cotain any other elements like svg:g or svg:svg
newGroup.insert(index, element) #we do not copy any elements. we just rearrange them by moving to another place (group index) newGroup.insert(index, element) #we do not copy any elements. we just rearrange them by moving to another place (group index)
@ -224,7 +237,7 @@ class MigrateGroups(inkex.Effect):
import cleangroups import cleangroups
cleangroups.CleanGroups.effect(self) cleangroups.CleanGroups.effect(self)
except: except:
inkex.utils.debug("Calling 'Remove Empty Groups' extension failed. Maybe the extension is not installed. You can download it from official InkScape Gallery.") self.msg("Calling 'Remove Empty Groups' extension failed. Maybe the extension is not installed. You can download it from official InkScape Gallery.")
if __name__ == '__main__': if __name__ == '__main__':
MigrateGroups().run() MigrateGroups().run()

View File

@ -3,9 +3,8 @@
<name>Papercraft Unfold</name> <name>Papercraft Unfold</name>
<id>fablabchemnitz.de.papercraft_unfold</id> <id>fablabchemnitz.de.papercraft_unfold</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="general" gui-text="Input / General"> <page name="tab_general" gui-text="Input / General">
<param name="inputfile" type="path" gui-text="Input File" gui-description="The model to unfold" filetypes="obj,off,ply,stl" <param name="inputfile" type="path" gui-text="Input File" gui-description="The model to unfold" filetypes="obj,off,ply,stl" mode="file">/your/beautiful/3dmodel/file</param>
mode="file">/your/beautiful/3dmodel/file</param>
<param name="generatelabels" type="bool" gui-text="Generate labels for edges">true</param> <param name="generatelabels" type="bool" gui-text="Generate labels for edges">true</param>
<param name="resizetoimport" type="bool" gui-text="Resize the canvas to the imported drawing's bounding box">true</param> <param name="resizetoimport" type="bool" gui-text="Resize the canvas to the imported drawing's bounding box">true</param>
<param name="extraborder" type="float" precision="3" gui-text="Add extra border around fitted canvas">0.0</param> <param name="extraborder" type="float" precision="3" gui-text="Add extra border around fitted canvas">0.0</param>
@ -18,7 +17,7 @@
</param> </param>
<param name="show_fstl" type="bool" gui-text="Show converted (and fixed) STL in fstl Viewer">true</param> <param name="show_fstl" type="bool" gui-text="Show converted (and fixed) STL in fstl Viewer">true</param>
</page> </page>
<page name="meshfixing" gui-text="Mesh Fixing / Adjusting (ADMesh)"> <page name="tab_meshfixing" gui-text="Mesh Fixing / Adjusting (ADMesh)">
<param name="exact" type="bool" gui-text="Only check for perfectly matched edges">true</param> <param name="exact" type="bool" gui-text="Only check for perfectly matched edges">true</param>
<param name="nearby" type="bool" gui-text="Find and connect nearby facets. Correct bad facets">true</param> <param name="nearby" type="bool" gui-text="Find and connect nearby facets. Correct bad facets">true</param>
<param name="tolerance" type="float" min="0.0" max="10000.0" precision="4" gui-text="Initial tolerance to use for nearby check">0.0</param> <param name="tolerance" type="float" min="0.0" max="10000.0" precision="4" gui-text="Initial tolerance to use for nearby check">0.0</param>
@ -35,11 +34,36 @@
<param name="xz_mirror" type="bool" gui-text="XZ-Mirror">false</param> <param name="xz_mirror" type="bool" gui-text="XZ-Mirror">false</param>
<param name="scale" type="float" min="0.0001" max="10000.0" precision="4" gui-text="Scale">1.0</param> <param name="scale" type="float" min="0.0001" max="10000.0" precision="4" gui-text="Scale">1.0</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label>Papercraft Unfold - by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <label appearance="header">Papercraft Unfold</label>
<label appearance="url">https://fablabchemnitz.de</label> <label>This project is a (fragile) toolchain to allow importing different models to create triangle mesh based flattenings. This extension also uses ADMesh to repair STL and to generate a binary STL file. The fstl Viewer is used to have a checky view on the file. osresearch/papercraft finally flattens the binary STL file and creates the desired output.</label>
<label>License: GNU GPL v3</label> <label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<label>This project is a (fragile) toolchain to allow importing different models to create triangle mesh based flattenings. This extension also uses ADMesh to repair STL and to generate binary STL file. The fstl Viewer is used to have a checky view on the file. osresearch/papercraft finally flattens the file and creates the desired output.</label> <spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/papercraftunfold</label>
<spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/osresearch/papercraft</label>
<label appearance="url">https://github.com/fstl-app/fstl</label>
<label appearance="url">https://github.com/admesh/admesh</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -72,9 +72,8 @@ admesh is sensible for moving from one dir to another
################################################################# #################################################################
Module licenses Module licenses
- papercraft - 26307b8 (https://github.com/osresearch/papercraft) - GPL v2 License - papercraft - 26307b8 (https://github.com/osresearch/papercraft) - GPL v2 License
- model-converter - commit a8d809a (https://github.com/tforgione/model-converter-python) - MIT License
- admesh - 0.98.3 (https://github.com/admesh/admesh) - GPL License - admesh - 0.98.3 (https://github.com/admesh/admesh) - GPL License
- fstl - (https://github.com/fstl-app/fstl) - MIT License
""" """
class Unfold(inkex.EffectExtension): class Unfold(inkex.EffectExtension):

View File

@ -2,6 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Paperfold</name> <name>Paperfold</name>
<id>fablabchemnitz.de.paperfold</id> <id>fablabchemnitz.de.paperfold</id>
<param name="tab" type="notebook">
<page name="tab_settings" gui-text="Paperfold for Inkscape">
<param name="inputfile" type="path" gui-text="Input File" filetypes="obj,off,ply,stl" gui-description="The model to unfold" mode="file">/your/beautiful/3dmodel/file</param> <param name="inputfile" type="path" gui-text="Input File" filetypes="obj,off,ply,stl" gui-description="The model to unfold" mode="file">/your/beautiful/3dmodel/file</param>
<param name="printNumbers" type="bool" gui-text="Print numbers on the cut edges">true</param> <param name="printNumbers" type="bool" gui-text="Print numbers on the cut edges">true</param>
<param name="scalefactor" type="float" precision="3" min="0.0001" max="10000.0" gui-text="Manual scale factor" gui-description="default is 1.0">1.0</param> <param name="scalefactor" type="float" precision="3" min="0.0001" max="10000.0" gui-text="Manual scale factor" gui-description="default is 1.0">1.0</param>
@ -18,12 +20,37 @@
<param name="color_mountain_cut" type="color" appearance="colorbutton" gui-text="Color for mountain cuts">1968208895</param> <param name="color_mountain_cut" type="color" appearance="colorbutton" gui-text="Color for mountain cuts">1968208895</param>
<param name="color_valley_perforate" type="color" appearance="colorbutton" gui-text="Color for valley perforations">3422552319</param> <param name="color_valley_perforate" type="color" appearance="colorbutton" gui-text="Color for valley perforations">3422552319</param>
<param name="color_mountain_perforate" type="color" appearance="colorbutton" gui-text="Color for mountain perforations">879076607</param> <param name="color_mountain_perforate" type="color" appearance="colorbutton" gui-text="Color for mountain perforations">879076607</param>
<separator/> </page>
<label>paperfold for InkScape - by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <page name="tab_about" gui-text="About">
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="header">Paperfold for Inkscape</label>
<label>License: GNU GPL v3</label> <label>Paperfold is another flattener for triangle mesh files, heavily based on paperfoldmodels by Felix Scholz aka felixfeliz. Possible input files are STL, Wavefront OBJ, PLY and OFF.</label>
<label>This project is strongly based on:</label> <label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/paperfold</label>
<spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/felixfeliz/paperfoldmodels</label> <label appearance="url">https://github.com/felixfeliz/paperfoldmodels</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>

View File

@ -519,6 +519,7 @@ def writeSVG(self, unfolding, size, printNumbers):
class Unfold(inkex.EffectExtension): class Unfold(inkex.EffectExtension):
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--tab")
pars.add_argument("--inputfile") pars.add_argument("--inputfile")
pars.add_argument("--printNumbers", type=inkex.Boolean, default=False, help="Print numbers on the cut edges") pars.add_argument("--printNumbers", type=inkex.Boolean, default=False, help="Print numbers on the cut edges")
pars.add_argument("--scalefactor", type=float, default=1.0, help="Manual scale factor") pars.add_argument("--scalefactor", type=float, default=1.0, help="Manual scale factor")

View File

@ -2,6 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Primitive (Michael Fogleman)</name> <name>Primitive (Michael Fogleman)</name>
<id>fablabchemnitz.de.primitive</id> <id>fablabchemnitz.de.primitive</id>
<param name="tab" type="notebook">
<page name="tab_general" gui-text="Primitive">
<label appearance="header">Settings</label> <label appearance="header">Settings</label>
<separator/> <separator/>
<param name="keeporiginal" type="bool" gui-text="Keep original image on canvas">false</param> <param name="keeporiginal" type="bool" gui-text="Keep original image on canvas">false</param>
@ -25,13 +27,37 @@
<param name="bg_enabled" type="bool" gui-text="Use average starting background color">true</param> <param name="bg_enabled" type="bool" gui-text="Use average starting background color">true</param>
<param name="bg" type="color" appearance="colorbutton" min="0" max="255" gui-text="Starting background color" gui-description="You need to disable average starting background to use this option">255</param> <param name="bg" type="color" appearance="colorbutton" min="0" max="255" gui-text="Starting background color" gui-description="You need to disable average starting background to use this option">255</param>
<param name="j" type="int" min="0" max="32" gui-text="Number of parallel workers" gui-description="Default (0) uses all cores">0</param> <param name="j" type="int" min="0" max="32" gui-text="Number of parallel workers" gui-description="Default (0) uses all cores">0</param>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Primitive (Michael Fogleman)</label>
<label>Primitive - Reproducing images with geometric primitives written in Go. Wrapped for Inkscape.</label>
<label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/> <spacer/>
<label appearance="header">About</label> <label appearance="header">Online Documentation</label>
<separator/> <label appearance="url">https://y.stadtfabrikanten.org/primitive</label>
<label>Primitive - Reproducing images with geometric primitives written in Go. Wrapped for InkScape 1.X by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/fogleman/primitive</label> <label appearance="url">https://github.com/fogleman/primitive</label>
<label appearance="url">https://fablabchemnitz.de</label> <spacer/>
<label>License: GNU GPL v3 for the wrapper, MIT for primitive</label> <label appearance="header">MightyScape Extension Collection</label>
<label>This piece of software is part of the MightyScape for Inkscape Extension Collection and is licensed under GNU GPL v3</label>
<label appearance="url">https://y.stadtfabrikanten.org/mightyscape-overview</label>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">
<object-type>image</object-type> <object-type>image</object-type>
<effects-menu> <effects-menu>

View File

@ -56,6 +56,7 @@ class Primitive (inkex.EffectExtension):
return path return path
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--tab")
pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas") pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas")
pars.add_argument("--cliprect", type=inkex.Boolean, default=True, help="Draw clipping rectangle") pars.add_argument("--cliprect", type=inkex.Boolean, default=True, help="Draw clipping rectangle")
pars.add_argument("--n", type=int, default=100, help="Number of shapes") pars.add_argument("--n", type=int, default=100, help="Number of shapes")

View File

@ -2,6 +2,8 @@
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension"> <inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<name>Styles To Layers</name> <name>Styles To Layers</name>
<id>fablabchemnitz.de.styles_to_layers</id> <id>fablabchemnitz.de.styles_to_layers</id>
<param name="tab" type="notebook">
<page name="tab_settings" gui-text="Settings">
<param name="separateby" gui-text="Separate by" type="optiongroup" appearance="combo"> <param name="separateby" gui-text="Separate by" type="optiongroup" appearance="combo">
<option value="stroke">Stroke color</option> <option value="stroke">Stroke color</option>
<option value="stroke_width">Stroke width</option> <option value="stroke_width">Stroke width</option>
@ -22,11 +24,34 @@
<param name="cleanup" type="bool" gui-text="Cleanup all unused groups/layers (requires separate extension)" gui-description="This will call the extension 'Remove Empty Groups' if available">true</param> <param name="cleanup" type="bool" gui-text="Cleanup all unused groups/layers (requires separate extension)" gui-description="This will call the extension 'Remove Empty Groups' if available">true</param>
<param name="put_unfiltered" type="bool" gui-text="Put unfiltered elements to a separate layer">false</param> <param name="put_unfiltered" type="bool" gui-text="Put unfiltered elements to a separate layer">false</param>
<param name="show_info" type="bool" gui-text="Show elements which have no style attributes to filter">false</param> <param name="show_info" type="bool" gui-text="Show elements which have no style attributes to filter">false</param>
</page>
<page name="tab_about" gui-text="About">
<label appearance="header">Styles To Layers</label>
<label>This extension will re-layer your selected items or the whole document according to their style values (stroke or fill). The filtering applies only to style attribute of the elements. It does not filter for stroke or fill if they are set separately. You can use the separate 'Cleanup Styles' extension to migrate these separated attributes into style attribute.</label>
<label>2020 - 2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/> <spacer/>
<label>This extension will re-layer your selected items or the whole document according to their style values (stroke or fill).</label> <label appearance="header">Online Documentation</label>
<label>The filtering applies only to style attribute of the elements. It does not filter for stroke or fill if they are set separately. You can use the separate 'Cleanup Styles' extension to migrate these separated attributes into style attribute.</label> <label appearance="url">https://y.stadtfabrikanten.org/stylestolayers</label>
<label>Tinkered by Mario Voigt / Stadtfabrikanten e.V. (2020)</label> <spacer/>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>000_about_fablabchemnitz.svg</image>
</page>
</param>
<effect> <effect>
<object-type>all</object-type> <object-type>all</object-type>
<effects-menu> <effects-menu>

View File

@ -40,6 +40,7 @@ class StylesToLayers(inkex.EffectExtension):
return layer return layer
def add_arguments(self, pars): def add_arguments(self, pars):
pars.add_argument("--tab")
pars.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting") pars.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting")
pars.add_argument("--separateby", default = "stroke", help = "Separate by") pars.add_argument("--separateby", default = "stroke", help = "Separate by")
pars.add_argument("--parsecolors",default = "hexval", help = "Sort colors by") pars.add_argument("--parsecolors",default = "hexval", help = "Sort colors by")

View File

@ -3,7 +3,7 @@
<name>Filter</name> <name>Filter</name>
<id>fablabchemnitz.de.vpype_filter</id> <id>fablabchemnitz.de.vpype_filter</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Filter"> <page name="tab_settings_filter" gui-text="vpypetools Filter">
<label>Filter paths according to specified criterion. When an option is provided the corresponding criterion is applied and paths which do not respect the criterion are rejected.</label> <label>Filter paths according to specified criterion. When an option is provided the corresponding criterion is applied and paths which do not respect the criterion are rejected.</label>
<param name="filter" type="bool" gui-hidden="true">true</param> <param name="filter" type="bool" gui-hidden="true">true</param>
<param name="filter_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Tolerance used to determined if a line is closed or not (default 0.050 mm)">0.050</param> <param name="filter_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Tolerance used to determined if a line is closed or not (default 0.050 mm)">0.050</param>
@ -14,7 +14,7 @@
<param name="filter_max_length_enabled" type="bool" gui-text="filter by max length">false</param> <param name="filter_max_length_enabled" type="bool" gui-text="filter by max length">false</param>
<param name="filter_max_length" type="float" min="0.000" max="99999.000" precision="3" gui-text="maximum length (mm)" gui-description="Keep lines whose length isn't greater than value">0.000</param> <param name="filter_max_length" type="float" min="0.000" max="99999.000" precision="3" gui-text="maximum length (mm)" gui-description="Keep lines whose length isn't greater than value">0.000</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_general_settings" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -42,14 +42,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Filter</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,7 +3,7 @@
<name>vpype Free Mode</name> <name>vpype Free Mode</name>
<id>fablabchemnitz.de.vpype_free_mode</id> <id>fablabchemnitz.de.vpype_free_mode</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Free Mode Entries"> <page name="tab_settings_freemode" gui-text="vpypetools Free Mode Entries">
<label>Enter your desired command pipes and enable/disable as much fields as you like.</label> <label>Enter your desired command pipes and enable/disable as much fields as you like.</label>
<param name="freemode" type="bool" gui-hidden="true">true</param> <param name="freemode" type="bool" gui-hidden="true">true</param>
<param name="freemode_cmd1" type="string" appearance="multiline" gui-text="Command Set 1">layout 1024x768 translate 150px 50px</param> <param name="freemode_cmd1" type="string" appearance="multiline" gui-text="Command Set 1">layout 1024x768 translate 150px 50px</param>
@ -19,7 +19,7 @@
<separator/> <separator/>
<param name="freemode_show_cmd" type="bool" gui-text="Show command" gui-description="Print the full command chain. Helpful for debugging.">false</param> <param name="freemode_show_cmd" type="bool" gui-text="Show command" gui-description="Print the full command chain. Helpful for debugging.">false</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -47,17 +47,15 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_reference" gui-text="CLI Reference">
<label appearance="header">vpypetools documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <label appearance="header">CLI reference (command list)</label>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label>
<separator/> <separator/>
<label appearance="header">General:</label> <label appearance="header">General:</label>
<label xml:space="preserve"> lmove, lcopy, ldelete, show, stat</label> <label xml:space="preserve"> lmove, lcopy, ldelete, show, stat</label>
<label appearance="header">Input/Output (*):</label> <label appearance="header">Input/Output (*):</label>
<label xml:space="preserve">* works but not recommended to use inside InkScape</label> <label xml:space="preserve">* works but not recommended to use inside Inkscape</label>
<label xml:space="preserve"> read, write</label> <label xml:space="preserve"> read, write (we use Inkscape's current canvas for this)</label>
<label appearance="header">Layout and transforms:</label> <label appearance="header">Layout and transforms:</label>
<label xml:space="preserve"> layout, scale, translate, skew, rotate, scaleto, snap, crop, trim, pagesize</label> <label xml:space="preserve"> layout, scale, translate, skew, rotate, scaleto, snap, crop, trim, pagesize</label>
<label appearance="header">Plotting optimization:</label> <label appearance="header">Plotting optimization:</label>
@ -68,15 +66,39 @@
<label xml:space="preserve"> begin, end, line, rect, circle, ellipse, arc, text, grid, frame, random</label> <label xml:space="preserve"> begin, end, line, rect, circle, ellipse, arc, text, grid, frame, random</label>
<label appearance="header">External:</label> <label appearance="header">External:</label>
<label xml:space="preserve"> vpype-text, hatched, occult, script, ...</label> <label xml:space="preserve"> vpype-text, hatched, occult, script, ...</label>
<spacer/> <separator/>
<label appearance="header">Supported basis units:</label> <label appearance="header">Supported basis units:</label>
<label xml:space="preserve"> cm, mm, in, pt, pc, px | not supported: %, m, em, ex, ft</label> <label xml:space="preserve"> cm, mm, in, pt, pc, px | not supported: %, m, em, ex, ft</label>
<label appearance="header">Supported angle units:</label> <label appearance="header">Supported angle units:</label>
<label xml:space="preserve"> deg, grad, rad, turn</label> <label xml:space="preserve"> deg, grad, rad, turn</label>
<separator/> </page>
<label appearance="header">vpypetools for vpype 1.6 (2021-03-10) - by Mario Voigt / Stadtfabrikanten e.V. (2021)</label> <page name="tab_about" gui-text="About">
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="header">vpypetools Free Mode</label>
<label>License: GNU GPL v3</label> <label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<spacer/>
<label appearance="header">Contributing</label>
<label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,13 +3,13 @@
<name>Line Merging (Combine Paths)</name> <name>Line Merging (Combine Paths)</name>
<id>fablabchemnitz.de.vpype_linemerging</id> <id>fablabchemnitz.de.vpype_linemerging</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Line Merging (Combine Paths)"> <page name="tab_settings_linemerge" gui-text="vpypetools Line Merging (Combine Paths)">
<label>Merge lines whose endings and starts overlap or are very close.</label> <label>Merge lines whose endings and starts overlap or are very close.</label>
<param name="linemerge" type="bool" gui-hidden="true">true</param> <param name="linemerge" type="bool" gui-hidden="true">true</param>
<param name="linemerge_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Maximum distance between two line endings that should be merged (default 0.500 mm)">0.500</param> <param name="linemerge_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Maximum distance between two line endings that should be merged (default 0.500 mm)">0.500</param>
<param name="linemerge_no_flip" type="bool" gui-text="no flip" gui-description="Disable reversing stroke direction for merging">false</param> <param name="linemerge_no_flip" type="bool" gui-text="no flip" gui-description="Disable reversing stroke direction for merging">false</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -37,14 +37,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Line Merging (Combine Paths)</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,12 +3,12 @@
<name>Line Sorting</name> <name>Line Sorting</name>
<id>fablabchemnitz.de.vpype_linesorting</id> <id>fablabchemnitz.de.vpype_linesorting</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Line Sorting"> <page name="tab_settings_linesort" gui-text="vpypetools Line Sorting">
<label>Sort lines to minimize travel distances.</label> <label>Sort lines to minimize travel distances.</label>
<param name="linesort" type="bool" gui-hidden="true">true</param> <param name="linesort" type="bool" gui-hidden="true">true</param>
<param name="linesort_no_flip" type="bool" gui-text="Disable flipping" gui-description="Disable reversing stroke direction for optimization '--no-flip'">false</param> <param name="linesort_no_flip" type="bool" gui-text="Disable flipping" gui-description="Disable reversing stroke direction for optimization '--no-flip'">false</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -36,14 +36,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Line Sorting</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,12 +3,12 @@
<name>Multipass</name> <name>Multipass</name>
<id>fablabchemnitz.de.vpype_multipass</id> <id>fablabchemnitz.de.vpype_multipass</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Multipass"> <page name="tab_settings_multipass" gui-text="vpypetools Multipass">
<label>Add multiple passes to each line. Each line is extended with a mirrored copy of itself, optionally multiple times. This is useful for pens that need several passes to ensure a good quality.</label> <label>Add multiple passes to each line. Each line is extended with a mirrored copy of itself, optionally multiple times. This is useful for pens that need several passes to ensure a good quality.</label>
<param name="multipass" type="bool" gui-hidden="true">true</param> <param name="multipass" type="bool" gui-hidden="true">true</param>
<param name="multipass_count" type="int" min="2" max="9999" gui-text="count" gui-description="How many passes for each line (default 2)">2</param> <param name="multipass_count" type="int" min="2" max="9999" gui-text="count" gui-description="How many passes for each line (default 2)">2</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -36,14 +36,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Multipass</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,13 +3,13 @@
<name>Occult Plugin (HLR)</name> <name>Occult Plugin (HLR)</name>
<id>fablabchemnitz.de.vpype_plugin_occult</id> <id>fablabchemnitz.de.vpype_plugin_occult</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Occult Plugin (HLR)"> <page name="tab_settings_occult" gui-text="vpypetools Occult Plugin (HLR)">
<label>This plugin command removes lines hidden by polygons. It acts like a trimmer to receive a clean set of visible paths only. It does not remove common lines between opened paths, but for closed polygons. You need to install occult plugin for vpype. See vpypetools documentation.</label> <label>This plugin command removes lines hidden by polygons. It acts like a trimmer to receive a clean set of visible paths only. It does not remove common lines between opened paths, but for closed polygons. You need to install occult plugin for vpype. See vpypetools documentation.</label>
<param name="plugin_occult" type="bool" gui-hidden="true">true</param> <param name="plugin_occult" type="bool" gui-hidden="true">true</param>
<param name="plugin_occult_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Max distance between start and end point to consider a path closed (default 0.01 mm)">0.01</param> <param name="plugin_occult_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Max distance between start and end point to consider a path closed (default 0.01 mm)">0.01</param>
<param name="plugin_occult_keepseparatelayer" gui-text="Put occulted lines to separate layer" type="bool">false</param> <param name="plugin_occult_keepseparatelayer" gui-text="Put occulted lines to separate layer" type="bool">false</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -37,14 +37,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Occult Plugin (HLR)</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,12 +3,12 @@
<name>Relooping</name> <name>Relooping</name>
<id>fablabchemnitz.de.vpype_relooping</id> <id>fablabchemnitz.de.vpype_relooping</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Relooping"> <page name="tab_settings_relooping" gui-text="vpypetools Relooping">
<label>Randomize the seam location of closed paths.</label> <label>Randomize the seam location of closed paths.</label>
<param name="reloop" type="bool" gui-hidden="true">true</param> <param name="reloop" type="bool" gui-hidden="true">true</param>
<param name="reloop_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Controls how close the path beginning and end must be to consider it closed (default 0.500 mm)">0.500</param> <param name="reloop_tolerance" type="float" min="0.000" max="99999.000" precision="3" gui-text="tolerance (mm)" gui-description="Controls how close the path beginning and end must be to consider it closed (default 0.500 mm)">0.500</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -36,14 +36,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Relooping</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,11 +3,11 @@
<name>Split All (Break Paths)</name> <name>Split All (Break Paths)</name>
<id>fablabchemnitz.de.vpype_splitall</id> <id>fablabchemnitz.de.vpype_splitall</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Split All (Break Paths)"> <page name="tab_settings_splitall" gui-text="vpypetools Split All (Break Paths)">
<label>Split all paths into their constituent segments. This command may be used together with linemerge for cases such as densely-connected meshes where the latter cannot optimize well enough by itself. This command will filter out segments with identical end-points. Note that since some paths (especially curved ones) can be made of a large number of segments, this command may significantly increase the processing time of the pipeline.</label> <label>Split all paths into their constituent segments. This command may be used together with linemerge for cases such as densely-connected meshes where the latter cannot optimize well enough by itself. This command will filter out segments with identical end-points. Note that since some paths (especially curved ones) can be made of a large number of segments, this command may significantly increase the processing time of the pipeline.</label>
<param name="splitall" type="bool" gui-hidden="true">true</param> <param name="splitall" type="bool" gui-hidden="true">true</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -35,14 +35,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Split All (Break Paths)</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">

View File

@ -3,13 +3,13 @@
<name>Trimming</name> <name>Trimming</name>
<id>fablabchemnitz.de.vpype_trimming</id> <id>fablabchemnitz.de.vpype_trimming</id>
<param name="tab" type="notebook"> <param name="tab" type="notebook">
<page name="freemode" gui-text="Trimming"> <page name="tab_settings_trimming" gui-text="vpypetools Trimming">
<label>This command trims the geometries by the provided X and Y margins with respect to the current bounding box.</label> <label>This command trims the geometries by the provided X and Y margins with respect to the current bounding box.</label>
<param name="trim" type="bool" gui-hidden="true">true</param> <param name="trim" type="bool" gui-hidden="true">true</param>
<param name="trim_x_margin" type="float" min="0.000" max="99999.000" precision="3" gui-text="Trim margin - x direction (mm)">0.000</param> <param name="trim_x_margin" type="float" min="0.000" max="99999.000" precision="3" gui-text="Trim margin - x direction (mm)">0.000</param>
<param name="trim_y_margin" type="float" min="0.000" max="99999.000" precision="3" gui-text="Trim margin - y direction (mm)">0.000</param> <param name="trim_y_margin" type="float" min="0.000" max="99999.000" precision="3" gui-text="Trim margin - y direction (mm)">0.000</param>
</page> </page>
<page name="general_settings" gui-text="General Settings"> <page name="tab_settings_general" gui-text="General Settings">
<label appearance="header">Preprocessing</label> <label appearance="header">Preprocessing</label>
<param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param> <param name="apply_transformations" type="bool" gui-text="Use 'Apply Transformations' extension" gui-description="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting. Disabled for 'Multilayer/document'">false</param>
<spacer/> <spacer/>
@ -37,14 +37,33 @@
<param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param> <param name="lines_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of tooling lines (px)" gui-description="Gets overwritten if 'Use style of first selected element' is enabled">1.000</param>
<param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param> <param name="trajectories_stroke_width" type="float" min="0.001" max="99999.000" precision="3" gui-text="Stroke width of trajectory lines (px)">1.000</param>
</page> </page>
<page name="about" gui-text="About"> <page name="tab_about" gui-text="About">
<label appearance="header">vpypetools documentation</label> <label appearance="header">vpypetools Trimming</label>
<label>2021 / written by Mario Voigt (Stadtfabrikanten e.V. / FabLab Chemnitz)</label>
<spacer/>
<label appearance="header">Online Documentation</label>
<label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label> <label appearance="url">https://y.stadtfabrikanten.org/vpypetools</label>
<label appearance="header">CLI reference (command list)</label> <spacer/>
<label appearance="url">https://vpype.readthedocs.io/en/stable/reference.html</label> <label appearance="header">Contributing</label>
<separator/> <label appearance="url">https://gitea.fablabchemnitz.de/MarioVoigt/mightyscape-1.X</label>
<label appearance="url">https://fablabchemnitz.de</label> <label appearance="url">mailto:mario.voigt@stadtfabrikanten.org</label>
<label>License: GNU GPL v3</label> <spacer/>
<label appearance="header">Third Party Modules</label>
<label appearance="url">https://github.com/abey79/vpype</label>
<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>
</page>
<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/>
<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/>
<label>Thanks for using our extension and helping us!</label>
<image>../000_about_fablabchemnitz.svg</image>
</page> </page>
</param> </param>
<effect needs-live-preview="true"> <effect needs-live-preview="true">