kopia lustrzana https://github.com/inkstitch/inkstitch
use tags to decide which stitches to keep
rodzic
3b7994c01a
commit
b411305c67
|
@ -3,10 +3,12 @@
|
|||
# Copyright (c) 2010 Authors
|
||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||
|
||||
import inkex
|
||||
from shapely import geometry as shgeo
|
||||
import math
|
||||
|
||||
import inkex
|
||||
from shapely import geometry as shgeo
|
||||
|
||||
from .stitch_plan import Stitch
|
||||
from .svg.tags import EMBROIDERABLE_TAGS
|
||||
from .utils import Point
|
||||
|
||||
|
@ -34,7 +36,7 @@ def _apply_stroke_patterns(patterns, patches):
|
|||
continue
|
||||
intersection_points = _get_pattern_points(stitch, patch.stitches[i+1], pattern)
|
||||
for point in intersection_points:
|
||||
patch_points.append(point)
|
||||
patch_points.append(Stitch(point, tags=('pattern_point',)))
|
||||
patch.stitches = patch_points
|
||||
|
||||
|
||||
|
@ -43,16 +45,14 @@ def _apply_fill_patterns(patterns, patches):
|
|||
for patch in patches:
|
||||
patch_points = []
|
||||
for i, stitch in enumerate(patch.stitches):
|
||||
# keep points outside the fill patter
|
||||
if not shgeo.Point(stitch).within(pattern):
|
||||
# keep points outside the fill patter
|
||||
patch_points.append(stitch)
|
||||
# keep start and end points
|
||||
elif i - 1 < 0 or i >= len(patch.stitches) - 1:
|
||||
# keep start and end points
|
||||
patch_points.append(stitch)
|
||||
# keep points if they have an angle
|
||||
# the necessary angle can be variable with certain stitch types (later on)
|
||||
# but they don't need to use filled patterns for those
|
||||
elif not 179 < get_angle(patch.stitches[i-1], stitch, patch.stitches[i+1]) < 181:
|
||||
elif stitch.has_tag('fill_row_start') or stitch.has_tag('fill_row_end'):
|
||||
# keep points if they are the start or end of a fill stitch row
|
||||
patch_points.append(stitch)
|
||||
patch.stitches = patch_points
|
||||
|
||||
|
|
|
@ -67,15 +67,12 @@ def stitch_row(stitches, beg, end, angle, row_spacing, max_stitch_length, stagge
|
|||
# abutting fill regions from pull_runs().
|
||||
|
||||
beg = Stitch(*beg, tags=('fill_row_start',))
|
||||
end = Stitch(*end, tags=('fill_row_end'))
|
||||
end = Stitch(*end, tags=('fill_row_end',))
|
||||
|
||||
row_direction = (end - beg).unit()
|
||||
segment_length = (end - beg).length()
|
||||
|
||||
# only stitch the first point if it's a reasonable distance away from the
|
||||
# last stitch
|
||||
if not stitches or (beg - stitches[-1]).length() > 0.5 * PIXELS_PER_MM:
|
||||
stitches.append(beg)
|
||||
stitches.append(beg)
|
||||
|
||||
first_stitch = adjust_stagger(beg, angle, row_spacing, max_stitch_length, staggers)
|
||||
|
||||
|
@ -91,8 +88,6 @@ def stitch_row(stitches, beg, end, angle, row_spacing, max_stitch_length, stagge
|
|||
|
||||
if (end - stitches[-1]).length() > 0.1 * PIXELS_PER_MM and not skip_last:
|
||||
stitches.append(end)
|
||||
else:
|
||||
stitches[-1].add_tag('fill_row_end')
|
||||
|
||||
|
||||
def intersect_region_with_grating(shape, angle, row_spacing, end_row_spacing=None, flip=False):
|
||||
|
|
Ładowanie…
Reference in New Issue