From 1112959da18dad9a1a7790905cd57e4ed5903a8b Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sat, 23 Mar 2024 09:00:40 +0100 Subject: use offset curve for convert satin extension (#2775) filter invalid rungs when merging satin sections --- lib/elements/satin_column.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib/elements/satin_column.py') diff --git a/lib/elements/satin_column.py b/lib/elements/satin_column.py index 75d7e259..10de9f82 100644 --- a/lib/elements/satin_column.py +++ b/lib/elements/satin_column.py @@ -941,8 +941,20 @@ class SatinColumn(EmbroideryElement): # add on the other satin's rungs rungs.extend(other_rungs) + rungs = self._get_filtered_rungs(rails, rungs) + return self._csp_to_satin(point_lists_to_csp(rails + rungs)) + def _get_filtered_rungs(self, rails, rungs): + # returns a filtered list of rungs which do intersect the rails exactly twice + rails = shgeo.MultiLineString(rails) + filtered_rungs = [] + for rung in shgeo.MultiLineString(rungs).geoms: + intersection = rung.intersection(rails) + if intersection.geom_type == "MultiPoint" and len(intersection.geoms) == 2: + filtered_rungs.append(list(rung.coords)) + return filtered_rungs + @property @cache def center_line(self): -- cgit v1.2.3