diff --git a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx
index 7e3f2f05..d3cd23ea 100644
--- a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx
+++ b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.inx
@@ -7,7 +7,7 @@
false
false
- false
+ false
true
0.100
3
@@ -48,7 +48,7 @@
false
- true
+ true
true
false
true
diff --git a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py
index a812d8ea..4914c17b 100644
--- a/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py
+++ b/extensions/fablabchemnitz/contour_scanner_and_trimmer/contour_scanner_and_trimmer.py
@@ -75,31 +75,34 @@ intersectedVerb = "-intersected-"
class ContourScannerAndTrimmer(inkex.EffectExtension):
def breakContours(self, element, breakelements = None):
- ''' this does the same as "CTRL + SHIFT + K" '''
+ '''
+ this does the same as "CTRL + SHIFT + K"
+ This functions honors the fact of absolute or relative paths!
+ '''
if breakelements == None:
breakelements = []
if element.tag == inkex.addNS('path','svg'):
parent = element.getparent()
idx = parent.index(element)
- idSuffix = 0
- raw = element.path.to_arrays()
+ idSuffix = 0
+ raw = str(element.path).split()
subPaths, prev = [], 0
for i in range(len(raw)): # Breaks compound paths into simple paths
- if raw[i][0] == 'M' and i != 0:
+ if raw[i][0].upper() == 'M' and i != 0:
subPaths.append(raw[prev:i])
prev = i
subPaths.append(raw[prev:])
for subpath in subPaths:
replacedelement = copy.copy(element)
oldId = replacedelement.get('id')
- csp = CubicSuperPath(subpath)
+ csp = CubicSuperPath(Path(" ".join(subpath)))
if len(subpath) > 1 and csp[0][0] != csp[0][1]: #avoids pointy paths like M "31.4794 57.6024 Z"
- replacedelement.set('d', csp)
+ replacedelement.set('d', " ".join(subpath))
replacedelement.set('id', oldId + str(idSuffix))
parent.insert(idx, replacedelement)
idSuffix += 1
breakelements.append(replacedelement)
- parent.remove(element)
+ element.delete()
for child in element.getchildren():
self.breakContours(child, breakelements)
return breakelements
diff --git a/extensions/fablabchemnitz/vpypetools/vpypetools.py b/extensions/fablabchemnitz/vpypetools/vpypetools.py
index 022a8e04..2123201a 100644
--- a/extensions/fablabchemnitz/vpypetools/vpypetools.py
+++ b/extensions/fablabchemnitz/vpypetools/vpypetools.py
@@ -30,7 +30,7 @@ Extension for InkScape 1.X
Author: Mario Voigt / FabLab Chemnitz
Mail: mario.voigt@stadtfabrikanten.org
Date: 02.04.2021
-Last patch: 24.04.2021
+Last patch: 05.06.2021
License: GNU GPL v3
This piece of spaghetti-code, called "vpypetools", is a wrapper to pass (pipe) line elements from InkScape selection (or complete canvas) to vpype.
@@ -410,7 +410,7 @@ class vpypetools (inkex.EffectExtension):
if self.options.strokes_to_paths is True:
for line in element.iter("{http://www.w3.org/2000/svg}line"):
newLine = PathElement()
- newLine.path = Path("M {},{}L {},{}".format(line.attrib['x1'], line.attrib['y1'], line.attrib['x2'], line.attrib['y2']))
+ newLine.path = Path("M {},{} L {},{}".format(line.attrib['x1'], line.attrib['y1'], line.attrib['x2'], line.attrib['y2']))
element.append(newLine)
line.delete()