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()