- trying to fix painting single when the actual painted object it's a MultiPolygon

This commit is contained in:
Marius Stanciu 2019-01-24 01:34:12 +02:00 committed by Marius S
parent d71958262a
commit 037b9657ff
3 changed files with 22 additions and 10 deletions

View File

@ -90,8 +90,8 @@ class App(QtCore.QObject):
log.addHandler(handler) log.addHandler(handler)
# Version # Version
version = 8.903 version = 8.904
version_date = "2019/01/23" version_date = "2019/01/24"
beta = True beta = True
# URL for update checks and statistics # URL for update checks and statistics

View File

@ -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 23.01.2019
- added a new postprocessor file named 'line_xyz' which have x, y, z values on the same GCode line - added a new postprocessor file named 'line_xyz' which have x, y, z values on the same GCode line

View File

@ -750,14 +750,12 @@ class ToolPaint(FlatCAMTool, Gerber):
def gen_paintarea(geo_obj, app_obj): def gen_paintarea(geo_obj, app_obj):
assert isinstance(geo_obj, FlatCAMGeometry), \ assert isinstance(geo_obj, FlatCAMGeometry), \
"Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj) "Initializer expected a FlatCAMGeometry, got %s" % type(geo_obj)
#assert isinstance(app_obj, App) # assert isinstance(app_obj, App)
geo_obj.solid_geometry = [] def paint_p(polyg):
try:
poly_buf = poly.buffer(-paint_margin)
if paint_method == "seed": if paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon2(poly_buf, cp = self.clear_polygon2(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
@ -766,7 +764,7 @@ class ToolPaint(FlatCAMTool, Gerber):
elif paint_method == "lines": elif paint_method == "lines":
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon3(poly_buf, cp = self.clear_polygon3(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
@ -775,7 +773,7 @@ class ToolPaint(FlatCAMTool, Gerber):
else: else:
# Type(cp) == FlatCAMRTreeStorage | None # Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon(poly_buf, cp = self.clear_polygon(polyg,
tooldia=tooldia, tooldia=tooldia,
steps_per_circle=self.app.defaults["geometry_circle_steps"], steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=overlap, overlap=overlap,
@ -784,9 +782,19 @@ class ToolPaint(FlatCAMTool, Gerber):
if cp is not None: if cp is not None:
geo_obj.solid_geometry += list(cp.get_objects()) geo_obj.solid_geometry += list(cp.get_objects())
return cp
else: else:
self.app.inform.emit('[error_notcl] Geometry could not be painted completely') 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: except Exception as e:
log.debug("Could not Paint the polygons. %s" % str(e)) log.debug("Could not Paint the polygons. %s" % str(e))
self.app.inform.emit( self.app.inform.emit(