瀏覽代碼

- 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

Marius Stanciu 5 年之前
父節點
當前提交
9b6c65cdcb
共有 4 個文件被更改,包括 22 次插入15 次删除
  1. 7 0
      CHANGELOG.md
  2. 1 0
      appEditors/AppGerberEditor.py
  3. 11 15
      appTools/ToolIsolation.py
  4. 3 0
      app_Main.py

+ 7 - 0
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

+ 1 - 0
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()
 

+ 11 - 15
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('<b>%s</b>:' % _("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('<b>%s</b>' % _('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

+ 3 - 0
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