- 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)
# 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

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
- 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):
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(