- 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
This commit is contained in:
parent
06bb17f255
commit
9b6c65cdcb
|
@ -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
|
5.08.2020
|
||||||
|
|
||||||
- Tool Cutout - more work in gaps thickness control feature
|
- Tool Cutout - more work in gaps thickness control feature
|
||||||
|
|
|
@ -2891,6 +2891,7 @@ class AppGerberEditor(QtCore.QObject):
|
||||||
self.linear_angle_label.hide()
|
self.linear_angle_label.hide()
|
||||||
|
|
||||||
self.array_frame.hide()
|
self.array_frame.hide()
|
||||||
|
self.custom_box.addStretch()
|
||||||
|
|
||||||
layout.addStretch()
|
layout.addStretch()
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,7 @@ class ToolIsolation(AppTool, Gerber):
|
||||||
|
|
||||||
self.t_ui.rest_cb.set_value(False)
|
self.t_ui.rest_cb.set_value(False)
|
||||||
self.t_ui.rest_cb.hide()
|
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.set_value(False)
|
||||||
self.t_ui.except_cb.hide()
|
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.set_value(self.app.defaults["tools_iso_rest"])
|
||||||
self.t_ui.rest_cb.show()
|
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.set_value(self.app.defaults["tools_iso_isoexcept"])
|
||||||
self.t_ui.except_cb.show()
|
self.t_ui.except_cb.show()
|
||||||
|
@ -1437,7 +1439,7 @@ class ToolIsolation(AppTool, Gerber):
|
||||||
else:
|
else:
|
||||||
fc_obj.inform.emit('[success] %s: %s' %
|
fc_obj.inform.emit('[success] %s: %s' %
|
||||||
(_("Isolation geometry created"), geo_obj.options["name"]))
|
(_("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)
|
self.app.app_obj.new_object("geometry", iso_name, iso_init, plot=plot)
|
||||||
|
|
||||||
|
@ -1610,7 +1612,7 @@ class ToolIsolation(AppTool, Gerber):
|
||||||
else:
|
else:
|
||||||
for ky in tools_storage.keys():
|
for ky in tools_storage.keys():
|
||||||
passes_no = float(tools_storage[ky]['data']['tools_iso_passes'])
|
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
|
break
|
||||||
|
|
||||||
# detect if solid_geometry is empty and this require list flattening which is "heavy"
|
# 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
|
passes_no = 1
|
||||||
for ky in tools_storage.keys():
|
for ky in tools_storage.keys():
|
||||||
passes_no = float(tools_storage[ky]['data']['tools_iso_passes'])
|
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
|
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"
|
# 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
|
# 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.level.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
|
||||||
self.title_box.addWidget(self.level)
|
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 = QtWidgets.QLabel('<b>%s</b>:' % _("GERBER"))
|
||||||
self.obj_combo_label.setToolTip(
|
self.obj_combo_label.setToolTip(
|
||||||
_("Gerber object for isolation routing.")
|
_("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 ##########
|
# ##### The object to be copper cleaned ##########
|
||||||
|
@ -2797,12 +2793,12 @@ class IsoUI:
|
||||||
# self.object_combo.setCurrentIndex(1)
|
# self.object_combo.setCurrentIndex(1)
|
||||||
self.object_combo.is_last = True
|
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 = QtWidgets.QFrame()
|
||||||
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
separator_line.setFrameShape(QtWidgets.QFrame.HLine)
|
||||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||||
grid0.addWidget(separator_line, 2, 0, 1, 2)
|
self.tools_box.addWidget(separator_line)
|
||||||
|
|
||||||
# ### Tools ## ##
|
# ### Tools ## ##
|
||||||
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
|
self.tools_table_label = QtWidgets.QLabel('<b>%s</b>' % _('Tools Table'))
|
||||||
|
@ -2810,10 +2806,10 @@ class IsoUI:
|
||||||
_("Tools pool from which the algorithm\n"
|
_("Tools pool from which the algorithm\n"
|
||||||
"will pick the ones used for copper clearing.")
|
"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)
|
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)
|
self.tools_table.setColumnCount(4)
|
||||||
# 3rd column is reserved (and hidden) for the tool ID
|
# 3rd column is reserved (and hidden) for the tool ID
|
||||||
|
|
|
@ -6498,6 +6498,9 @@ class App(QtCore.QObject):
|
||||||
(obj.options['xmax'], obj.options['ymin']),
|
(obj.options['xmax'], obj.options['ymin']),
|
||||||
(obj.options['xmax'], obj.options['ymax']),
|
(obj.options['xmax'], obj.options['ymax']),
|
||||||
(obj.options['xmin'], 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 sel_type is True:
|
||||||
if poly_obj.within(poly_selection):
|
if poly_obj.within(poly_selection):
|
||||||
# create the selection box around the selected object
|
# create the selection box around the selected object
|
||||||
|
|
Loading…
Reference in New Issue