diff options
Diffstat (limited to 'lib/elements')
| -rw-r--r-- | lib/elements/satin_column.py | 12 |
1 files changed, 12 insertions, 0 deletions
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): |
