From 9b6c65cdcbe294c63964457ca1c969dfea9f9f72 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 7 Aug 2020 13:55:32 +0300 Subject: [PATCH] - all Geometry objects resulted from Isolation Tool are now of type multi-geo - fixed minor glitch in the Isolation Tool UI - added an extra check when doing selection on canvas - fixed an UI problem in Gerber Editor --- CHANGELOG.md | 7 +++++++ appEditors/AppGerberEditor.py | 1 + appTools/ToolIsolation.py | 26 +++++++++++--------------- app_Main.py | 3 +++ 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08f6755e..b6c81c29 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,13 @@ CHANGELOG for FlatCAM beta ================================================= +7.08.2020 + +- all Geometry objects resulted from Isolation Tool are now of type multi-geo +- fixed minor glitch in the Isolation Tool UI +- added an extra check when doing selection on canvas +- fixed an UI problem in Gerber Editor + 5.08.2020 - Tool Cutout - more work in gaps thickness control feature diff --git a/appEditors/AppGerberEditor.py b/appEditors/AppGerberEditor.py index 93837356..65ea122f 100644 --- a/appEditors/AppGerberEditor.py +++ b/appEditors/AppGerberEditor.py @@ -2891,6 +2891,7 @@ class AppGerberEditor(QtCore.QObject): self.linear_angle_label.hide() self.array_frame.hide() + self.custom_box.addStretch() layout.addStretch() diff --git a/appTools/ToolIsolation.py b/appTools/ToolIsolation.py index 1ca9ae49..2bcae119 100644 --- a/appTools/ToolIsolation.py +++ b/appTools/ToolIsolation.py @@ -253,6 +253,7 @@ class ToolIsolation(AppTool, Gerber): self.t_ui.rest_cb.set_value(False) self.t_ui.rest_cb.hide() + self.t_ui.forced_rest_iso_cb.hide() self.t_ui.except_cb.set_value(False) self.t_ui.except_cb.hide() @@ -283,6 +284,7 @@ class ToolIsolation(AppTool, Gerber): self.t_ui.rest_cb.set_value(self.app.defaults["tools_iso_rest"]) self.t_ui.rest_cb.show() + self.t_ui.forced_rest_iso_cb.show() self.t_ui.except_cb.set_value(self.app.defaults["tools_iso_isoexcept"]) self.t_ui.except_cb.show() @@ -1437,7 +1439,7 @@ class ToolIsolation(AppTool, Gerber): else: fc_obj.inform.emit('[success] %s: %s' % (_("Isolation geometry created"), geo_obj.options["name"])) - geo_obj.multigeo = False + geo_obj.multigeo = True self.app.app_obj.new_object("geometry", iso_name, iso_init, plot=plot) @@ -1610,7 +1612,7 @@ class ToolIsolation(AppTool, Gerber): else: for ky in tools_storage.keys(): passes_no = float(tools_storage[ky]['data']['tools_iso_passes']) - geo_obj.multigeo = True if passes_no > 1 else False + geo_obj.multigeo = True break # detect if solid_geometry is empty and this require list flattening which is "heavy" @@ -1798,9 +1800,9 @@ class ToolIsolation(AppTool, Gerber): passes_no = 1 for ky in tools_storage.keys(): passes_no = float(tools_storage[ky]['data']['tools_iso_passes']) - geo_obj.multigeo = True if passes_no > 1 else False + geo_obj.multigeo = True break - geo_obj.multigeo = True if passes_no > 1 else False + geo_obj.multigeo = True # detect if solid_geometry is empty and this require list flattening which is "heavy" # or just looking in the lists (they are one level depth) and if any is not empty @@ -2775,18 +2777,12 @@ class IsoUI: self.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter) self.title_box.addWidget(self.level) - # Grid Layout - grid0 = QtWidgets.QGridLayout() - grid0.setColumnStretch(0, 0) - grid0.setColumnStretch(1, 1) - self.tools_box.addLayout(grid0) - self.obj_combo_label = QtWidgets.QLabel('%s:' % _("GERBER")) self.obj_combo_label.setToolTip( _("Gerber object for isolation routing.") ) - grid0.addWidget(self.obj_combo_label, 0, 0, 1, 2) + self.tools_box.addWidget(self.obj_combo_label) # ################################################ # ##### The object to be copper cleaned ########## @@ -2797,12 +2793,12 @@ class IsoUI: # self.object_combo.setCurrentIndex(1) self.object_combo.is_last = True - grid0.addWidget(self.object_combo, 1, 0, 1, 2) + self.tools_box.addWidget(self.object_combo) separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) - grid0.addWidget(separator_line, 2, 0, 1, 2) + self.tools_box.addWidget(separator_line) # ### Tools ## ## self.tools_table_label = QtWidgets.QLabel('%s' % _('Tools Table')) @@ -2810,10 +2806,10 @@ class IsoUI: _("Tools pool from which the algorithm\n" "will pick the ones used for copper clearing.") ) - grid0.addWidget(self.tools_table_label, 3, 0, 1, 2) + self.tools_box.addWidget(self.tools_table_label) self.tools_table = FCTable(drag_drop=True) - grid0.addWidget(self.tools_table, 4, 0, 1, 2) + self.tools_box.addWidget(self.tools_table) self.tools_table.setColumnCount(4) # 3rd column is reserved (and hidden) for the tool ID diff --git a/app_Main.py b/app_Main.py index 50813852..943b16e1 100644 --- a/app_Main.py +++ b/app_Main.py @@ -6498,6 +6498,9 @@ class App(QtCore.QObject): (obj.options['xmax'], obj.options['ymin']), (obj.options['xmax'], obj.options['ymax']), (obj.options['xmin'], obj.options['ymax'])]) + if poly_obj.is_empty or not poly_obj.is_valid: + continue + if sel_type is True: if poly_obj.within(poly_selection): # create the selection box around the selected object