- fixed issue when loading unbuffered a Gerber file that has negative regions

- fixed Panelize Tool to save the aperture geometries into the panel apertures. Also made the tool faster by removing the buffering at the end of the job
- modified FlatCAMEditor's files to the new string format that will allow easier translations
- updated POT file and the Romanian translation
This commit is contained in:
Marius Stanciu
2019-09-10 03:20:14 +03:00
committed by Marius
parent 14fe5080ec
commit 59704a6e01
19 changed files with 13227 additions and 10471 deletions

View File

@@ -2564,7 +2564,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
the given boundary polygon. If not specified, it defaults to
the rectangular bounding box of target geometry.
"""
geo_len = len(target)
if isinstance(target, Polygon):
geo_len = 1
else:
geo_len = len(target)
pol_nr = 0
old_disp_number = 0

View File

@@ -350,6 +350,8 @@ class ToolPaint(FlatCAMTool, Gerber):
self.obj_name = ""
self.paint_obj = None
self.bound_obj_name = ""
self.bound_obj = None
self.units = ''
self.paint_tools = {}
@@ -680,8 +682,8 @@ class ToolPaint(FlatCAMTool, Gerber):
try:
self.tools_table.itemChanged.disconnect()
except Exception as e:
log.debug("ToolPaint.on_tool_add() --> %s" % str(e))
except TypeError:
pass
if dia:
tool_dia = dia
@@ -751,8 +753,8 @@ class ToolPaint(FlatCAMTool, Gerber):
try:
self.tools_table.itemChanged.disconnect()
except Exception as e:
log.debug("ToolPaint.on_tool_edit() --> %s" % str(e))
except TypeError:
pass
tool_dias = []
for k, v in self.paint_tools.items():
@@ -850,8 +852,7 @@ class ToolPaint(FlatCAMTool, Gerber):
def on_tool_delete(self, rows_to_delete=None, all=None):
try:
self.tools_table.itemChanged.disconnect()
except Exception as e:
log.debug("ToolPaint.on_tool_delete() --> %s" % str(e))
except TypeError:
pass
deleted_tools_list = []
@@ -1277,13 +1278,13 @@ class ToolPaint(FlatCAMTool, Gerber):
else:
pass
def paint_p(polyg, tooldia):
def paint_p(polyg, tooldiameter):
cpoly = None
try:
if paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon2(polyg,
tooldia=tooldia,
tooldia=tooldiameter,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over,
contour=cont,
@@ -1293,7 +1294,7 @@ class ToolPaint(FlatCAMTool, Gerber):
elif paint_method == "lines":
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon3(polyg,
tooldia=tooldia,
tooldia=tooldiameter,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over,
contour=cont,
@@ -1303,12 +1304,12 @@ class ToolPaint(FlatCAMTool, Gerber):
else:
# Type(cp) == FlatCAMRTreeStorage | None
cpoly = self.clear_polygon(polyg,
tooldia=tooldia,
tooldia=tooldiameter,
steps_per_circle=self.app.defaults["geometry_circle_steps"],
overlap=over,
contour=cont,
connect=conn,
prog_plot=prog_plot)
prog_plot=prog_plot)
except FlatCAMApp.GracefulException:
return "fail"
except Exception as e:
@@ -1318,8 +1319,8 @@ class ToolPaint(FlatCAMTool, Gerber):
geo_obj.solid_geometry += list(cpoly.get_objects())
return cpoly
else:
self.app.inform.emit('[ERROR_NOTCL] %s' %
_('Geometry could not be painted completely'))
app_obj.inform.emit('[ERROR_NOTCL] %s' %
_('Geometry could not be painted completely'))
return None
try:
@@ -1363,10 +1364,12 @@ class ToolPaint(FlatCAMTool, Gerber):
return "fail"
except Exception as e:
log.debug("Could not Paint the polygons. %s" % str(e))
self.app.inform.emit('[ERROR] %s\n%s' %
(_("Could not do Paint. Try a different combination of parameters. "
"Or a different strategy of paint"),
str(e)))
app_obj.inform.emit('[ERROR] %s\n%s' %
(_("Could not do Paint. Try a different combination of parameters. "
"Or a different strategy of paint"),
str(e)
)
)
return "fail"
# add the solid_geometry to the current too in self.paint_tools (tools_storage)
@@ -1636,7 +1639,7 @@ class ToolPaint(FlatCAMTool, Gerber):
painted_area = recurse(obj.solid_geometry)
# variables to display the percentage of work done
geo_len = len(painted_area)
disp_number = 0
old_disp_number = 0
log.warning("Total number of polygons to be cleared. %s" % str(geo_len))
@@ -1800,7 +1803,7 @@ class ToolPaint(FlatCAMTool, Gerber):
painted_area = recurse(obj.solid_geometry)
# variables to display the percentage of work done
geo_len = int(len(painted_area) / 100)
disp_number = 0
old_disp_number = 0
log.warning("Total number of polygons to be cleared. %s" % str(geo_len))
@@ -2099,7 +2102,6 @@ class ToolPaint(FlatCAMTool, Gerber):
# variables to display the percentage of work done
geo_len = len(painted_area)
disp_number = 0
old_disp_number = 0
log.warning("Total number of polygons to be cleared. %s" % str(geo_len))
@@ -2111,7 +2113,6 @@ class ToolPaint(FlatCAMTool, Gerber):
continue
poly_buf = geo.buffer(-paint_margin)
cp = None
if paint_method == "seed":
# Type(cp) == FlatCAMRTreeStorage | None
cp = self.clear_polygon2(poly_buf,
@@ -2140,7 +2141,7 @@ class ToolPaint(FlatCAMTool, Gerber):
overlap=over,
contour=cont,
connect=conn,
prog_plot=prog_plot)
prog_plot=prog_plot)
if cp is not None:
total_geometry += list(cp.get_objects())
@@ -2269,7 +2270,6 @@ class ToolPaint(FlatCAMTool, Gerber):
# variables to display the percentage of work done
geo_len = len(painted_area)
disp_number = 0
old_disp_number = 0
log.warning("Total number of polygons to be cleared. %s" % str(geo_len))

View File

@@ -565,12 +565,7 @@ class Panelize(FlatCAMTool):
if isinstance(panel_obj, FlatCAMGerber):
obj_fin.apertures = deepcopy(panel_obj.apertures)
for ap in obj_fin.apertures:
if 'solid_geometry' in obj_fin.apertures[ap]:
obj_fin.apertures[ap]['solid_geometry'] = []
if 'clear_geometry' in obj_fin.apertures[ap]:
obj_fin.apertures[ap]['clear_geometry'] = []
if 'follow_geometry' in obj_fin.apertures[ap]:
obj_fin.apertures[ap]['follow_geometry'] = []
obj_fin.apertures[ap]['geometry'] = list()
self.app.progress.emit(0)
for row in range(rows):
@@ -599,36 +594,29 @@ class Panelize(FlatCAMTool):
obj_fin.solid_geometry.append(geo)
for apid in panel_obj.apertures:
if 'solid_geometry' in panel_obj.apertures[apid]:
geo_aper = translate_recursion(panel_obj.apertures[apid]['solid_geometry'])
if isinstance(geo_aper, list):
obj_fin.apertures[apid]['solid_geometry'] += geo_aper
else:
obj_fin.apertures[apid]['solid_geometry'].append(geo_aper)
for el in panel_obj.apertures[apid]['geometry']:
new_el = dict()
if 'solid' in el:
geo_aper = translate_recursion(el['solid'])
new_el['solid'] = deepcopy(geo_aper)
if 'clear_geometry' in panel_obj.apertures[apid]:
geo_aper = translate_recursion(panel_obj.apertures[apid]['clear_geometry'])
if isinstance(geo_aper, list):
obj_fin.apertures[apid]['clear_geometry'] += geo_aper
else:
obj_fin.apertures[apid]['clear_geometry'].append(geo_aper)
if 'clear' in el:
geo_aper = translate_recursion(el['clear'])
new_el['clear'] = deepcopy(geo_aper)
if 'follow_geometry' in panel_obj.apertures[apid]:
geo_aper = translate_recursion(panel_obj.apertures[apid]['follow_geometry'])
if isinstance(geo_aper, list):
obj_fin.apertures[apid]['follow_geometry'] += geo_aper
else:
obj_fin.apertures[apid]['follow_geometry'].append(geo_aper)
if 'follow' in el:
geo_aper = translate_recursion(el['follow'])
new_el['follow'] = deepcopy(geo_aper)
obj_fin.apertures[apid]['geometry'].append(deepcopy(new_el))
currentx += lenghtx
currenty += lenghty
app_obj.log.debug("Found %s geometries. Creating a panel geometry cascaded union ..." %
len(obj_fin.solid_geometry))
self.app.inform.emit(_("Found %s geometries. Creating a final panel geometry ...") %
len(obj_fin.solid_geometry))
obj_fin.solid_geometry = cascaded_union(obj_fin.solid_geometry)
# obj_fin.solid_geometry = cascaded_union(obj_fin.solid_geometry)
app_obj.log.debug("Finished creating a cascaded union for the panel.")
if isinstance(panel_obj, FlatCAMExcellon):