From f92255b8f9a0c120f5a2e479fe63d88445593b0c Mon Sep 17 00:00:00 2001 From: jpcaram Date: Fri, 30 Jan 2015 15:17:57 -0500 Subject: [PATCH] Fixed bug introduced to clear_poly() in previous commit. --- FlatCAMObj.py | 5 ++++- camlib.py | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/FlatCAMObj.py b/FlatCAMObj.py index 0064a1d5..64892be4 100644 --- a/FlatCAMObj.py +++ b/FlatCAMObj.py @@ -987,9 +987,12 @@ class FlatCAMGeometry(FlatCAMObj, Geometry): assert isinstance(geo_obj, FlatCAMGeometry) #assert isinstance(app_obj, App) - cp = self.clear_polygon(poly.buffer(-self.options["paintmargin"]), tooldia, overlap=overlap) if self.options["paintmethod"] == "seed": cp = self.clear_polygon2(poly.buffer(-self.options["paintmargin"]), tooldia, overlap=overlap) + + else: + cp = self.clear_polygon(poly.buffer(-self.options["paintmargin"]), tooldia, overlap=overlap) + geo_obj.solid_geometry = list(cp.get_objects()) geo_obj.options["cnctooldia"] = tooldia self.app.inform.emit("Done.") diff --git a/camlib.py b/camlib.py index a51b2b80..31cee105 100644 --- a/camlib.py +++ b/camlib.py @@ -331,6 +331,8 @@ class Geometry(object): :return: """ + assert type(polygon) == Polygon + ## The toolpaths # Index first and last points in paths def get_pts(o): @@ -347,9 +349,19 @@ class Geometry(object): while True: current = current.buffer(-tooldia * (1 - overlap)) if current.area > 0: - geoms.insert(current.exterior) - for i in current.interiors: - geoms.insert(i) + + # current can be a MultiPolygon + try: + for p in current: + geoms.insert(p.exterior) + for i in p.interiors: + geoms.insert(i) + + # Not a Multipolygon. + except TypeError: + geoms.insert(current.exterior) + for i in current.interiors: + geoms.insert(i) else: break return geoms