From 037b9657ff8f1cf281acd17f91efcbc1005f0fe2 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 24 Jan 2019 01:34:12 +0200 Subject: [PATCH] - trying to fix painting single when the actual painted object it's a MultiPolygon --- FlatCAMApp.py | 4 ++-- README.md | 4 ++++ flatcamTools/ToolPaint.py | 24 ++++++++++++++++-------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/FlatCAMApp.py b/FlatCAMApp.py index a0f05bed..308d32a5 100644 --- a/FlatCAMApp.py +++ b/FlatCAMApp.py @@ -90,8 +90,8 @@ class App(QtCore.QObject): log.addHandler(handler) # Version - version = 8.903 - version_date = "2019/01/23" + version = 8.904 + version_date = "2019/01/24" beta = True # URL for update checks and statistics diff --git a/README.md b/README.md index fd729c03..4db51f1a 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ CAD program, and create G-Code for Isolation routing. ================================================= +24.01.2019 + +- trying to fix painting single when the actual painted object it's a MultiPolygon + 23.01.2019 - added a new postprocessor file named 'line_xyz' which have x, y, z values on the same GCode line diff --git a/flatcamTools/ToolPaint.py b/flatcamTools/ToolPaint.py index e2b93880..17996116 100644 --- a/flatcamTools/ToolPaint.py +++ b/flatcamTools/ToolPaint.py @@ -750,14 +750,12 @@ class ToolPaint(FlatCAMTool, Gerber): def gen_paintarea(geo_obj, app_obj): assert isinstance(geo_obj, FlatCAMGeometry), \ "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) - #assert isinstance(app_obj, App) + # assert isinstance(app_obj, App) - geo_obj.solid_geometry = [] - try: - poly_buf = poly.buffer(-paint_margin) + def paint_p(polyg): if paint_method == "seed": # Type(cp) == FlatCAMRTreeStorage | None - cp = self.clear_polygon2(poly_buf, + cp = self.clear_polygon2(polyg, tooldia=tooldia, steps_per_circle=self.app.defaults["geometry_circle_steps"], overlap=overlap, @@ -766,7 +764,7 @@ class ToolPaint(FlatCAMTool, Gerber): elif paint_method == "lines": # Type(cp) == FlatCAMRTreeStorage | None - cp = self.clear_polygon3(poly_buf, + cp = self.clear_polygon3(polyg, tooldia=tooldia, steps_per_circle=self.app.defaults["geometry_circle_steps"], overlap=overlap, @@ -775,7 +773,7 @@ class ToolPaint(FlatCAMTool, Gerber): else: # Type(cp) == FlatCAMRTreeStorage | None - cp = self.clear_polygon(poly_buf, + cp = self.clear_polygon(polyg, tooldia=tooldia, steps_per_circle=self.app.defaults["geometry_circle_steps"], overlap=overlap, @@ -784,9 +782,19 @@ class ToolPaint(FlatCAMTool, Gerber): if cp is not None: geo_obj.solid_geometry += list(cp.get_objects()) + return cp else: self.app.inform.emit('[error_notcl] Geometry could not be painted completely') - return + return None + + geo_obj.solid_geometry = [] + try: + poly_buf = poly.buffer(-paint_margin) + if isinstance(poly_buf, MultiPolygon): + for pp in poly_buf: + cp = paint_p(pp) + else: + cp = paint_p(poly_buf) except Exception as e: log.debug("Could not Paint the polygons. %s" % str(e)) self.app.inform.emit(