diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2024-05-16 06:43:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-16 06:43:01 +0200 |
| commit | 705dabaa5670b9d5ec6c583e76d8441c6051334a (patch) | |
| tree | 3b3f002a703d90f93fbf65b09ce7b3d29dfeb201 | |
| parent | 5730297e2ca574092933d2d808c1710c94832ba5 (diff) | |
fix gap after auto-route satin (#2907)
| -rw-r--r-- | lib/elements/satin_column.py | 7 | ||||
| -rw-r--r-- | lib/stitches/auto_satin.py | 12 |
2 files changed, 13 insertions, 6 deletions
diff --git a/lib/elements/satin_column.py b/lib/elements/satin_column.py index 593eac01..063a95b8 100644 --- a/lib/elements/satin_column.py +++ b/lib/elements/satin_column.py @@ -795,7 +795,7 @@ class SatinColumn(EmbroideryElement): return self._csp_to_satin(self.csp) - def split(self, split_point): + def split(self, split_point, cut_points=None): """Split a satin into two satins at the specified point split_point is a point on or near one of the rails, not at one of the @@ -813,13 +813,14 @@ class SatinColumn(EmbroideryElement): their transforms applied. """ - cut_points = self._find_cut_points(split_point) + if cut_points is None: + cut_points = self.find_cut_points(split_point) path_lists = self._cut_rails(cut_points) self._assign_rungs_to_split_rails(path_lists) self._add_rungs_if_necessary(path_lists) return [self._path_list_to_satins(path_list) for path_list in path_lists] - def _find_cut_points(self, split_point): + def find_cut_points(self, split_point): """Find the points on each satin corresponding to the split point. split_point is a point that is near but not necessarily touching one diff --git a/lib/stitches/auto_satin.py b/lib/stitches/auto_satin.py index 09f331bf..e681a4f7 100644 --- a/lib/stitches/auto_satin.py +++ b/lib/stitches/auto_satin.py @@ -70,12 +70,18 @@ class SatinSegment(object): def to_satin(self): satin = self.satin + # get cut points before actually cutting the satin to avoid + # rounding errors which may produce gaps in between the satins if self.start > 0.0: - before, satin = satin.split(self.start) + start = satin.find_cut_points(self.start) + if self.end < 1.0: + end = satin.find_cut_points(self.end) + # cut satin + if self.start > 0.0: + before, satin = satin.split(None, cut_points=start) if self.end < 1.0: - satin, after = satin.split( - (self.end - self.start) / (1.0 - self.start)) + satin, after = satin.split(None, cut_points=end) if self.reverse: satin = satin.reverse() |
