diff options
Diffstat (limited to 'lib/extensions/input.py')
| -rw-r--r-- | lib/extensions/input.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/extensions/input.py b/lib/extensions/input.py index 975ba838..a82cdfca 100644 --- a/lib/extensions/input.py +++ b/lib/extensions/input.py @@ -1,27 +1,36 @@ import os +import pyembroidery + from inkex import etree import inkex -import pyembroidery +from ..stitch_plan import StitchPlan from ..svg import PIXELS_PER_MM, render_stitch_plan from ..svg.tags import INKSCAPE_LABEL -from ..stitch_plan import StitchPlan class Input(object): def affect(self, args): embroidery_file = args[0] pattern = pyembroidery.read(embroidery_file) + pattern = pattern.get_pattern_interpolate_trim(3) stitch_plan = StitchPlan() color_block = None for raw_stitches, thread in pattern.get_as_colorblocks(): color_block = stitch_plan.new_color_block(thread) + trim_after = False for x, y, command in raw_stitches: - color_block.add_stitch(x * PIXELS_PER_MM / 10.0, y * PIXELS_PER_MM / 10.0, - jump=(command == pyembroidery.JUMP), - trim=(command == pyembroidery.TRIM)) + if command == pyembroidery.STITCH: + if trim_after: + color_block.add_stitch(trim=True) + trim_after = False + color_block.add_stitch(x * PIXELS_PER_MM / 10.0, y * PIXELS_PER_MM / 10.0) + if len(color_block) > 0 and command == pyembroidery.TRIM: + trim_after = True + + stitch_plan.delete_empty_color_blocks() extents = stitch_plan.extents svg = etree.Element("svg", nsmap=inkex.NSS, attrib={ @@ -33,7 +42,7 @@ class Input(object): # rename the Stitch Plan layer so that it doesn't get overwritten by Embroider layer = svg.find(".//*[@id='__inkstitch_stitch_plan__']") - layer.set(INKSCAPE_LABEL, os.path.basename(embroidery_file)) + layer.set(INKSCAPE_LABEL, os.path.basename(embroidery_file.decode("UTF-8"))) layer.attrib.pop('id') # Shift the design so that its origin is at the center of the canvas |
