From 671b99912d6ba71c74401638a359f8c0ecb871a2 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sun, 17 Jan 2021 23:25:23 +0200 Subject: [PATCH] - fixes in Panelize and Cutout Tool (Panelize has issues when exporting Gerber with aperture macros) --- CHANGELOG.md | 1 + appParsers/ParseGerber.py | 1 + appTools/ToolCutOut.py | 5 ++++- appTools/ToolPanelize.py | 17 +++++++++++++++-- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6e54fc6..8fdac8d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ CHANGELOG for FlatCAM beta 17.01.2021 - some changes in the GUI elements and some updates in the Cutout Tool +- fixes in Panelize and Cutout Tool (Panelize has issues when exporting Gerber with aperture macros) 13.01.2021 diff --git a/appParsers/ParseGerber.py b/appParsers/ParseGerber.py index 621e98fb..e820ef50 100644 --- a/appParsers/ParseGerber.py +++ b/appParsers/ParseGerber.py @@ -719,6 +719,7 @@ class Gerber(Geometry): match = self.tool_re.search(gline) if match: current_aperture = match.group(1) + # self.app.log.debug("Line %d: Aperture change to (%s)" % (line_num, current_aperture)) # If the aperture value is zero then make it something quite small but with a non-zero value diff --git a/appTools/ToolCutOut.py b/appTools/ToolCutOut.py index 78951750..36b898ae 100644 --- a/appTools/ToolCutOut.py +++ b/appTools/ToolCutOut.py @@ -1693,7 +1693,10 @@ class CutOut(AppTool): # first subtract geometry for the total solid_geometry new_solid_geometry = CutOut.subtract_geo(self.man_cutout_obj.solid_geometry, cut_poly) - new_solid_geometry = linemerge(new_solid_geometry) + try: + new_solid_geometry = linemerge(new_solid_geometry) + except ValueError: + pass self.man_cutout_obj.solid_geometry = new_solid_geometry # then do it on each tool in the manual cutout Geometry object diff --git a/appTools/ToolPanelize.py b/appTools/ToolPanelize.py index 819e38f7..8ad6f591 100644 --- a/appTools/ToolPanelize.py +++ b/appTools/ToolPanelize.py @@ -554,8 +554,21 @@ class Panelize(AppTool): # panelization pol_nr = 0 - for geo_el in panel_source_obj.tools[tool]['solid_geometry']: - trans_geo = translate_recursion(geo_el) + + trans_geo = translate_recursion(panel_source_obj.tools[tool]['solid_geometry']) + try: + for trans_it in trans_geo: + if not trans_it.is_empty: + new_obj.tools[tool]['solid_geometry'].append(trans_it) + + # update progress + pol_nr += 1 + disp_number = int(np.interp(pol_nr, [0, geo_len], [0, 100])) + if old_disp_number < disp_number <= 100: + app_obj.proc_container.update_view_text( + ' %s: %d %d%%' % (_("Copy"), int(element), disp_number)) + old_disp_number = disp_number + except TypeError: if not trans_geo.is_empty: new_obj.tools[tool]['solid_geometry'].append(trans_geo)