From ef7d056173cc6d7782d6120c031dae9276725a3d Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Thu, 26 Dec 2024 16:19:35 +0100 Subject: End points (#3370) * end at nearest point to next element (if requested and possible) --- lib/elements/stroke.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib/elements/stroke.py') diff --git a/lib/elements/stroke.py b/lib/elements/stroke.py index ff9718c5..5c6a0b08 100644 --- a/lib/elements/stroke.py +++ b/lib/elements/stroke.py @@ -13,11 +13,13 @@ from ..i18n import _ from ..marker import get_marker_elements from ..stitch_plan import StitchGroup from ..stitches.ripple_stitch import ripple_stitch -from ..stitches.running_stitch import (bean_stitch, running_stitch, zigzag_stitch) +from ..stitches.running_stitch import (bean_stitch, running_stitch, + zigzag_stitch) from ..svg import get_node_transform, parse_length_with_units from ..svg.clip import get_clip_path from ..threads import ThreadColor from ..utils import Point, cache +from ..utils.geometry import ensure_multi_line_string from ..utils.param import ParamOption from .element import EmbroideryElement, param from .validation import ValidationWarning @@ -41,6 +43,7 @@ class TooFewSubpathsWarning(ValidationWarning): class Stroke(EmbroideryElement): + name = "Stroke" element_name = _("Stroke") @property @@ -483,13 +486,17 @@ class Stroke(EmbroideryElement): @property @cache def shape(self): - return self.as_multi_line_string().convex_hull + return ensure_multi_line_string(self.as_multi_line_string().convex_hull) @cache def as_multi_line_string(self): line_strings = [shgeo.LineString(path) for path in self.paths] return shgeo.MultiLineString(line_strings) + @property + def first_stitch(self): + return shgeo.Point(self.as_multi_line_string().geoms[0].coords[0]) + def _get_clipped_path(self, paths): clip_path = get_clip_path(self.node) if clip_path is None: @@ -583,7 +590,7 @@ class Stroke(EmbroideryElement): def do_bean_repeats(self, stitches): return bean_stitch(stitches, self.bean_stitch_repeats) - def to_stitch_groups(self, last_stitch_group): # noqa: C901 + def to_stitch_groups(self, last_stitch_group, next_element=None): # noqa: C901 stitch_groups = [] # ripple stitch -- cgit v1.2.3