summaryrefslogtreecommitdiff
path: root/lib/elements
diff options
context:
space:
mode:
Diffstat (limited to 'lib/elements')
-rw-r--r--lib/elements/satin_column.py12
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):