- in NCC Tool modified the UI
This commit is contained in:
parent
a2c0244e18
commit
b6663ddd43
|
@ -773,6 +773,7 @@ class App(QtCore.QObject):
|
||||||
# NCC Tool
|
# NCC Tool
|
||||||
"tools_ncctools": "1.0, 0.5",
|
"tools_ncctools": "1.0, 0.5",
|
||||||
"tools_nccorder": 'rev',
|
"tools_nccorder": 'rev',
|
||||||
|
"tools_nccoperation": 'clear',
|
||||||
"tools_nccoverlap": 40,
|
"tools_nccoverlap": 40,
|
||||||
"tools_nccmargin": 1.0,
|
"tools_nccmargin": 1.0,
|
||||||
"tools_nccmethod": "seed",
|
"tools_nccmethod": "seed",
|
||||||
|
|
|
@ -12,6 +12,7 @@ CAD program, and create G-Code for Isolation routing.
|
||||||
20.02.2020
|
20.02.2020
|
||||||
|
|
||||||
- in Paint Tool replaced the Selection radio with a combobox GUI element that is more compact
|
- in Paint Tool replaced the Selection radio with a combobox GUI element that is more compact
|
||||||
|
- in NCC Tool modified the UI
|
||||||
|
|
||||||
19.02.2020
|
19.02.2020
|
||||||
|
|
||||||
|
|
|
@ -124,8 +124,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.tools_table = FCTable()
|
self.tools_table = FCTable()
|
||||||
self.tools_box.addWidget(self.tools_table)
|
self.tools_box.addWidget(self.tools_table)
|
||||||
|
|
||||||
self.tools_table.setColumnCount(5)
|
self.tools_table.setColumnCount(4)
|
||||||
self.tools_table.setHorizontalHeaderLabels(['#', _('Diameter'), _('TT'), '', _("Operation")])
|
self.tools_table.setHorizontalHeaderLabels(['#', _('Diameter'), _('TT'), ''])
|
||||||
self.tools_table.setColumnHidden(3, True)
|
self.tools_table.setColumnHidden(3, True)
|
||||||
self.tools_table.setSortingEnabled(False)
|
self.tools_table.setSortingEnabled(False)
|
||||||
# self.tools_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
# self.tools_table.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
|
||||||
|
@ -155,37 +155,17 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
"Choosing the 'V-Shape' Tool Type automatically will select the Operation Type\n"
|
"Choosing the 'V-Shape' Tool Type automatically will select the Operation Type\n"
|
||||||
"in the resulting geometry as Isolation."))
|
"in the resulting geometry as Isolation."))
|
||||||
|
|
||||||
self.tools_table.horizontalHeaderItem(4).setToolTip(
|
# self.tools_table.horizontalHeaderItem(4).setToolTip(
|
||||||
_("The 'Operation' can be:\n"
|
# _("The 'Operation' can be:\n"
|
||||||
"- Isolation -> will ensure that the non-copper clearing is always complete.\n"
|
# "- Isolation -> will ensure that the non-copper clearing is always complete.\n"
|
||||||
"If it's not successful then the non-copper clearing will fail, too.\n"
|
# "If it's not successful then the non-copper clearing will fail, too.\n"
|
||||||
"- Clear -> the regular non-copper clearing."))
|
# "- Clear -> the regular non-copper clearing."))
|
||||||
|
|
||||||
grid1 = QtWidgets.QGridLayout()
|
grid1 = QtWidgets.QGridLayout()
|
||||||
self.tools_box.addLayout(grid1)
|
self.tools_box.addLayout(grid1)
|
||||||
grid1.setColumnStretch(0, 0)
|
grid1.setColumnStretch(0, 0)
|
||||||
grid1.setColumnStretch(1, 1)
|
grid1.setColumnStretch(1, 1)
|
||||||
|
|
||||||
# Milling Type Radio Button
|
|
||||||
self.milling_type_label = QtWidgets.QLabel('%s:' % _('Milling Type'))
|
|
||||||
self.milling_type_label.setToolTip(
|
|
||||||
_("Milling type when the selected tool is of type: 'iso_op':\n"
|
|
||||||
"- climb / best for precision milling and to reduce tool usage\n"
|
|
||||||
"- conventional / useful when there is no backlash compensation")
|
|
||||||
)
|
|
||||||
|
|
||||||
self.milling_type_radio = RadioSet([{'label': _('Climb'), 'value': 'cl'},
|
|
||||||
{'label': _('Conventional'), 'value': 'cv'}])
|
|
||||||
self.milling_type_radio.setToolTip(
|
|
||||||
_("Milling type when the selected tool is of type: 'iso_op':\n"
|
|
||||||
"- climb / best for precision milling and to reduce tool usage\n"
|
|
||||||
"- conventional / useful when there is no backlash compensation")
|
|
||||||
)
|
|
||||||
self.milling_type_radio.setObjectName(_("Milling Type"))
|
|
||||||
|
|
||||||
grid1.addWidget(self.milling_type_label, 0, 0)
|
|
||||||
grid1.addWidget(self.milling_type_radio, 0, 1)
|
|
||||||
|
|
||||||
# Tool order
|
# Tool order
|
||||||
self.ncc_order_label = QtWidgets.QLabel('%s:' % _('Tool order'))
|
self.ncc_order_label = QtWidgets.QLabel('%s:' % _('Tool order'))
|
||||||
self.ncc_order_label.setToolTip(_("This set the way that the tools in the tools table are used.\n"
|
self.ncc_order_label.setToolTip(_("This set the way that the tools in the tools table are used.\n"
|
||||||
|
@ -213,9 +193,6 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
separator_line.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||||
grid1.addWidget(separator_line, 2, 0, 1, 2)
|
grid1.addWidget(separator_line, 2, 0, 1, 2)
|
||||||
|
|
||||||
self.milling_type_label.hide()
|
|
||||||
self.milling_type_radio.hide()
|
|
||||||
|
|
||||||
# #############################################################
|
# #############################################################
|
||||||
# ############### Tool selection ##############################
|
# ############### Tool selection ##############################
|
||||||
# #############################################################
|
# #############################################################
|
||||||
|
@ -356,6 +333,47 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(self.tool_data_label, 12, 0, 1, 2)
|
self.grid3.addWidget(self.tool_data_label, 12, 0, 1, 2)
|
||||||
|
|
||||||
|
# Operation
|
||||||
|
op_label = QtWidgets.QLabel('%s:' % _('Operation'))
|
||||||
|
op_label.setToolTip(
|
||||||
|
_("The 'Operation' can be:\n"
|
||||||
|
"- Isolation -> will ensure that the non-copper clearing is always complete.\n"
|
||||||
|
"If it's not successful then the non-copper clearing will fail, too.\n"
|
||||||
|
"- Clear -> the regular non-copper clearing.")
|
||||||
|
)
|
||||||
|
|
||||||
|
self.op_radio = RadioSet([
|
||||||
|
{"label": _("Clear"), "value": "clear"},
|
||||||
|
{"label": _("Isolation"), "value": "iso"}
|
||||||
|
], orientation='horizontal', stretch=False)
|
||||||
|
self.op_radio.setObjectName("n_operation")
|
||||||
|
|
||||||
|
self.grid3.addWidget(op_label, 13, 0)
|
||||||
|
self.grid3.addWidget(self.op_radio, 13, 1)
|
||||||
|
|
||||||
|
# Milling Type Radio Button
|
||||||
|
self.milling_type_label = QtWidgets.QLabel('%s:' % _('Milling Type'))
|
||||||
|
self.milling_type_label.setToolTip(
|
||||||
|
_("Milling type when the selected tool is of type: 'iso_op':\n"
|
||||||
|
"- climb / best for precision milling and to reduce tool usage\n"
|
||||||
|
"- conventional / useful when there is no backlash compensation")
|
||||||
|
)
|
||||||
|
|
||||||
|
self.milling_type_radio = RadioSet([{'label': _('Climb'), 'value': 'cl'},
|
||||||
|
{'label': _('Conventional'), 'value': 'cv'}])
|
||||||
|
self.milling_type_radio.setToolTip(
|
||||||
|
_("Milling type when the selected tool is of type: 'iso_op':\n"
|
||||||
|
"- climb / best for precision milling and to reduce tool usage\n"
|
||||||
|
"- conventional / useful when there is no backlash compensation")
|
||||||
|
)
|
||||||
|
self.milling_type_radio.setObjectName("n_milling_type")
|
||||||
|
|
||||||
|
self.milling_type_label.setEnabled(False)
|
||||||
|
self.milling_type_radio.setEnabled(False)
|
||||||
|
|
||||||
|
self.grid3.addWidget(self.milling_type_label, 14, 0)
|
||||||
|
self.grid3.addWidget(self.milling_type_radio, 14, 1)
|
||||||
|
|
||||||
# Overlap Entry
|
# Overlap Entry
|
||||||
nccoverlabel = QtWidgets.QLabel('%s:' % _('Overlap'))
|
nccoverlabel = QtWidgets.QLabel('%s:' % _('Overlap'))
|
||||||
nccoverlabel.setToolTip(
|
nccoverlabel.setToolTip(
|
||||||
|
@ -372,10 +390,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.ncc_overlap_entry.setWrapping(True)
|
self.ncc_overlap_entry.setWrapping(True)
|
||||||
self.ncc_overlap_entry.setRange(0.000, 99.9999)
|
self.ncc_overlap_entry.setRange(0.000, 99.9999)
|
||||||
self.ncc_overlap_entry.setSingleStep(0.1)
|
self.ncc_overlap_entry.setSingleStep(0.1)
|
||||||
self.ncc_overlap_entry.setObjectName(_("Overlap"))
|
self.ncc_overlap_entry.setObjectName("n_overlap")
|
||||||
|
|
||||||
self.grid3.addWidget(nccoverlabel, 13, 0)
|
self.grid3.addWidget(nccoverlabel, 15, 0)
|
||||||
self.grid3.addWidget(self.ncc_overlap_entry, 13, 1)
|
self.grid3.addWidget(self.ncc_overlap_entry, 15, 1)
|
||||||
|
|
||||||
# Margin
|
# Margin
|
||||||
nccmarginlabel = QtWidgets.QLabel('%s:' % _('Margin'))
|
nccmarginlabel = QtWidgets.QLabel('%s:' % _('Margin'))
|
||||||
|
@ -385,10 +403,10 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.ncc_margin_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
self.ncc_margin_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||||
self.ncc_margin_entry.set_precision(self.decimals)
|
self.ncc_margin_entry.set_precision(self.decimals)
|
||||||
self.ncc_margin_entry.set_range(-9999.9999, 9999.9999)
|
self.ncc_margin_entry.set_range(-9999.9999, 9999.9999)
|
||||||
self.ncc_margin_entry.setObjectName(_("Margin"))
|
self.ncc_margin_entry.setObjectName("n_margin")
|
||||||
|
|
||||||
self.grid3.addWidget(nccmarginlabel, 14, 0)
|
self.grid3.addWidget(nccmarginlabel, 16, 0)
|
||||||
self.grid3.addWidget(self.ncc_margin_entry, 14, 1)
|
self.grid3.addWidget(self.ncc_margin_entry, 16, 1)
|
||||||
|
|
||||||
# Method
|
# Method
|
||||||
methodlabel = QtWidgets.QLabel('%s:' % _('Method'))
|
methodlabel = QtWidgets.QLabel('%s:' % _('Method'))
|
||||||
|
@ -403,34 +421,34 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
{"label": _("Seed-based"), "value": "seed"},
|
{"label": _("Seed-based"), "value": "seed"},
|
||||||
{"label": _("Straight lines"), "value": "lines"}
|
{"label": _("Straight lines"), "value": "lines"}
|
||||||
], orientation='vertical', stretch=False)
|
], orientation='vertical', stretch=False)
|
||||||
self.ncc_method_radio.setObjectName(_("Method"))
|
self.ncc_method_radio.setObjectName("n_method")
|
||||||
|
|
||||||
self.grid3.addWidget(methodlabel, 15, 0)
|
self.grid3.addWidget(methodlabel, 17, 0)
|
||||||
self.grid3.addWidget(self.ncc_method_radio, 15, 1)
|
self.grid3.addWidget(self.ncc_method_radio, 17, 1)
|
||||||
|
|
||||||
# Connect lines
|
# Connect lines
|
||||||
self.ncc_connect_cb = FCCheckBox('%s' % _("Connect"))
|
self.ncc_connect_cb = FCCheckBox('%s' % _("Connect"))
|
||||||
self.ncc_connect_cb.setObjectName(_("Connect"))
|
self.ncc_connect_cb.setObjectName("n_connect")
|
||||||
|
|
||||||
self.ncc_connect_cb.setToolTip(
|
self.ncc_connect_cb.setToolTip(
|
||||||
_("Draw lines between resulting\n"
|
_("Draw lines between resulting\n"
|
||||||
"segments to minimize tool lifts.")
|
"segments to minimize tool lifts.")
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(self.ncc_connect_cb, 16, 0)
|
self.grid3.addWidget(self.ncc_connect_cb, 18, 0)
|
||||||
|
|
||||||
# Contour
|
# Contour
|
||||||
self.ncc_contour_cb = FCCheckBox('%s' % _("Contour"))
|
self.ncc_contour_cb = FCCheckBox('%s' % _("Contour"))
|
||||||
self.ncc_contour_cb.setObjectName(_("Contour"))
|
self.ncc_contour_cb.setObjectName("n_contour")
|
||||||
|
|
||||||
self.ncc_contour_cb.setToolTip(
|
self.ncc_contour_cb.setToolTip(
|
||||||
_("Cut around the perimeter of the polygon\n"
|
_("Cut around the perimeter of the polygon\n"
|
||||||
"to trim rough edges.")
|
"to trim rough edges.")
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(self.ncc_contour_cb, 16, 1)
|
self.grid3.addWidget(self.ncc_contour_cb, 18, 1)
|
||||||
|
|
||||||
# ## NCC Offset choice
|
# ## NCC Offset choice
|
||||||
self.ncc_choice_offset_cb = FCCheckBox('%s' % _("Offset"))
|
self.ncc_choice_offset_cb = FCCheckBox('%s' % _("Offset"))
|
||||||
self.ncc_choice_offset_cb.setObjectName(_("Offset"))
|
self.ncc_choice_offset_cb.setObjectName("n_offset")
|
||||||
|
|
||||||
self.ncc_choice_offset_cb.setToolTip(
|
self.ncc_choice_offset_cb.setToolTip(
|
||||||
_("If used, it will add an offset to the copper features.\n"
|
_("If used, it will add an offset to the copper features.\n"
|
||||||
|
@ -445,7 +463,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.ncc_offset_spinner.set_range(0.00, 10.00)
|
self.ncc_offset_spinner.set_range(0.00, 10.00)
|
||||||
self.ncc_offset_spinner.set_precision(4)
|
self.ncc_offset_spinner.set_precision(4)
|
||||||
self.ncc_offset_spinner.setWrapping(True)
|
self.ncc_offset_spinner.setWrapping(True)
|
||||||
self.ncc_offset_spinner.setObjectName(_("Offset value"))
|
self.ncc_offset_spinner.setObjectName("n_offset_value")
|
||||||
|
|
||||||
units = self.app.defaults['units'].upper()
|
units = self.app.defaults['units'].upper()
|
||||||
if units == 'MM':
|
if units == 'MM':
|
||||||
|
@ -483,7 +501,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
|
|
||||||
# Rest Machining
|
# Rest Machining
|
||||||
self.ncc_rest_cb = FCCheckBox('%s' % _("Rest Machining"))
|
self.ncc_rest_cb = FCCheckBox('%s' % _("Rest Machining"))
|
||||||
self.ncc_rest_cb.setObjectName(_("Rest Machining"))
|
self.ncc_rest_cb.setObjectName("n_rest_machining")
|
||||||
|
|
||||||
self.ncc_rest_cb.setToolTip(
|
self.ncc_rest_cb.setToolTip(
|
||||||
_("If checked, use 'rest machining'.\n"
|
_("If checked, use 'rest machining'.\n"
|
||||||
|
@ -503,7 +521,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
{"label": _("Area Selection"), "value": "area"},
|
{"label": _("Area Selection"), "value": "area"},
|
||||||
{'label': _("Reference Object"), 'value': 'box'}
|
{'label': _("Reference Object"), 'value': 'box'}
|
||||||
], orientation='vertical', stretch=False)
|
], orientation='vertical', stretch=False)
|
||||||
self.reference_radio.setObjectName(_("Reference"))
|
self.reference_radio.setObjectName("n_reference")
|
||||||
|
|
||||||
self.reference_label = QtWidgets.QLabel('%s:' % _("Reference"))
|
self.reference_label = QtWidgets.QLabel('%s:' % _("Reference"))
|
||||||
self.reference_label.setToolTip(
|
self.reference_label.setToolTip(
|
||||||
|
@ -638,6 +656,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.tooldia = None
|
self.tooldia = None
|
||||||
|
|
||||||
self.form_fields = {
|
self.form_fields = {
|
||||||
|
"nccoperation":self.op_radio,
|
||||||
"nccoverlap": self.ncc_overlap_entry,
|
"nccoverlap": self.ncc_overlap_entry,
|
||||||
"nccmargin": self.ncc_margin_entry,
|
"nccmargin": self.ncc_margin_entry,
|
||||||
"nccmethod": self.ncc_method_radio,
|
"nccmethod": self.ncc_method_radio,
|
||||||
|
@ -649,14 +668,15 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
}
|
}
|
||||||
|
|
||||||
self.name2option = {
|
self.name2option = {
|
||||||
_('Overlap'): "nccoverlap",
|
"n_operation": "nccoperation",
|
||||||
_('Margin'): "nccmargin",
|
"n_overlap": "nccoverlap",
|
||||||
_('Method'): "nccmethod",
|
"n_margin": "nccmargin",
|
||||||
_("Connect"): "nccconnect",
|
"n_method": "nccmethod",
|
||||||
_("Contour"): "ncccontour",
|
"n_connect": "nccconnect",
|
||||||
_("Offset"): "nccoffset",
|
"n_contour": "ncccontour",
|
||||||
_("Offset value"): "nccoffset_value",
|
"n_offset": "nccoffset",
|
||||||
_('Milling Type'): "milling_type",
|
"n_offset_value": "nccoffset_value",
|
||||||
|
"n_milling_type": "milling_type",
|
||||||
}
|
}
|
||||||
|
|
||||||
self.old_tool_dia = None
|
self.old_tool_dia = None
|
||||||
|
@ -673,6 +693,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.tipangle_entry.returnPressed.connect(self.on_calculate_tooldia)
|
self.tipangle_entry.returnPressed.connect(self.on_calculate_tooldia)
|
||||||
self.cutz_entry.returnPressed.connect(self.on_calculate_tooldia)
|
self.cutz_entry.returnPressed.connect(self.on_calculate_tooldia)
|
||||||
|
|
||||||
|
self.op_radio.activated_custom.connect(self.on_operation_change)
|
||||||
|
|
||||||
self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type)
|
self.box_combo_type.currentIndexChanged.connect(self.on_combo_box_type)
|
||||||
self.reference_radio.group_toggle_fn = self.on_toggle_reference
|
self.reference_radio.group_toggle_fn = self.on_toggle_reference
|
||||||
|
|
||||||
|
@ -690,6 +712,21 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
|
self.object_combo.setRootModelIndex(self.app.collection.index(obj_type, 0, QtCore.QModelIndex()))
|
||||||
self.object_combo.setCurrentIndex(0)
|
self.object_combo.setCurrentIndex(0)
|
||||||
|
|
||||||
|
def on_operation_change(self, val):
|
||||||
|
if val == 'iso':
|
||||||
|
self.milling_type_label.setEnabled(True)
|
||||||
|
self.milling_type_radio.setEnabled(True)
|
||||||
|
else:
|
||||||
|
self.milling_type_label.setEnabled(False)
|
||||||
|
self.milling_type_radio.setEnabled(False)
|
||||||
|
|
||||||
|
current_row = self.tools_table.currentRow()
|
||||||
|
try:
|
||||||
|
current_uid = int(self.tools_table.item(current_row, 3).text())
|
||||||
|
self.ncc_tools[current_uid]['data']['nccoperation'] = val
|
||||||
|
except AttributeError:
|
||||||
|
return
|
||||||
|
|
||||||
def on_row_selection_change(self):
|
def on_row_selection_change(self):
|
||||||
self.blockSignals(True)
|
self.blockSignals(True)
|
||||||
|
|
||||||
|
@ -740,7 +777,8 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
if form_key == storage_key:
|
if form_key == storage_key:
|
||||||
try:
|
try:
|
||||||
self.form_fields[form_key].set_value(dict_storage[form_key])
|
self.form_fields[form_key].set_value(dict_storage[form_key])
|
||||||
except Exception:
|
except Exception as e:
|
||||||
|
log.debug("NonCopperClear.storage_to_form() --> %s" % str(e))
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def form_to_storage(self):
|
def form_to_storage(self):
|
||||||
|
@ -783,6 +821,20 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
if row < 0:
|
if row < 0:
|
||||||
row = 0
|
row = 0
|
||||||
|
|
||||||
|
tooluid_item = int(self.tools_table.item(row, 3).text())
|
||||||
|
temp_tool_data = dict()
|
||||||
|
|
||||||
|
for tooluid_key, tooluid_val in self.ncc_tools.items():
|
||||||
|
if int(tooluid_key) == tooluid_item:
|
||||||
|
# this will hold the 'data' key of the self.tools[tool] dictionary that corresponds to
|
||||||
|
# the current row in the tool table
|
||||||
|
temp_tool_data = tooluid_val['data']
|
||||||
|
break
|
||||||
|
|
||||||
|
for tooluid_key, tooluid_val in self.ncc_tools.items():
|
||||||
|
tooluid_val['data'] = deepcopy(temp_tool_data)
|
||||||
|
|
||||||
|
|
||||||
# store all the data associated with the row parameter to the self.tools storage
|
# store all the data associated with the row parameter to the self.tools storage
|
||||||
tooldia_item = float(self.tools_table.item(row, 1).text())
|
tooldia_item = float(self.tools_table.item(row, 1).text())
|
||||||
type_item = self.tools_table.cellWidget(row, 2).currentText()
|
type_item = self.tools_table.cellWidget(row, 2).currentText()
|
||||||
|
@ -792,35 +844,35 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
nccoffset_value_item = float(self.ncc_offset_spinner.get_value())
|
nccoffset_value_item = float(self.ncc_offset_spinner.get_value())
|
||||||
|
|
||||||
# this new dict will hold the actual useful data, another dict that is the value of key 'data'
|
# this new dict will hold the actual useful data, another dict that is the value of key 'data'
|
||||||
temp_tools = {}
|
# temp_tools = {}
|
||||||
temp_dia = {}
|
# temp_dia = {}
|
||||||
temp_data = {}
|
# temp_data = {}
|
||||||
|
#
|
||||||
for tooluid_key, tooluid_value in self.ncc_tools.items():
|
# for tooluid_key, tooluid_value in self.ncc_tools.items():
|
||||||
for key, value in tooluid_value.items():
|
# for key, value in tooluid_value.items():
|
||||||
if key == 'data':
|
# if key == 'data':
|
||||||
# update the 'data' section
|
# # update the 'data' section
|
||||||
for data_key in tooluid_value[key].keys():
|
# for data_key in tooluid_value[key].keys():
|
||||||
for form_key, form_value in self.form_fields.items():
|
# for form_key, form_value in self.form_fields.items():
|
||||||
if form_key == data_key:
|
# if form_key == data_key:
|
||||||
temp_data[data_key] = form_value.get_value()
|
# temp_data[data_key] = form_value.get_value()
|
||||||
# make sure we make a copy of the keys not in the form (we may use 'data' keys that are
|
# # make sure we make a copy of the keys not in the form (we may use 'data' keys that are
|
||||||
# updated from self.app.defaults
|
# # updated from self.app.defaults
|
||||||
if data_key not in self.form_fields:
|
# if data_key not in self.form_fields:
|
||||||
temp_data[data_key] = value[data_key]
|
# temp_data[data_key] = value[data_key]
|
||||||
temp_dia[key] = deepcopy(temp_data)
|
# temp_dia[key] = deepcopy(temp_data)
|
||||||
temp_data.clear()
|
# temp_data.clear()
|
||||||
|
#
|
||||||
elif key == 'solid_geometry':
|
# elif key == 'solid_geometry':
|
||||||
temp_dia[key] = deepcopy(self.tools[tooluid_key]['solid_geometry'])
|
# temp_dia[key] = deepcopy(self.tools[tooluid_key]['solid_geometry'])
|
||||||
else:
|
# else:
|
||||||
temp_dia[key] = deepcopy(value)
|
# temp_dia[key] = deepcopy(value)
|
||||||
|
#
|
||||||
temp_tools[tooluid_key] = deepcopy(temp_dia)
|
# temp_tools[tooluid_key] = deepcopy(temp_dia)
|
||||||
|
#
|
||||||
self.ncc_tools.clear()
|
# self.ncc_tools.clear()
|
||||||
self.ncc_tools = deepcopy(temp_tools)
|
# self.ncc_tools = deepcopy(temp_tools)
|
||||||
temp_tools.clear()
|
# temp_tools.clear()
|
||||||
|
|
||||||
self.app.inform.emit('[success] %s' % _("Current Tool parameters were applied to all tools."))
|
self.app.inform.emit('[success] %s' % _("Current Tool parameters were applied to all tools."))
|
||||||
|
|
||||||
|
@ -887,6 +939,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
|
|
||||||
self.type_obj_combo.set_value('gerber')
|
self.type_obj_combo.set_value('gerber')
|
||||||
|
|
||||||
|
self.op_radio.set_value(self.app.defaults["tools_nccoperation"])
|
||||||
self.ncc_order_radio.set_value(self.app.defaults["tools_nccorder"])
|
self.ncc_order_radio.set_value(self.app.defaults["tools_nccorder"])
|
||||||
self.ncc_overlap_entry.set_value(self.app.defaults["tools_nccoverlap"])
|
self.ncc_overlap_entry.set_value(self.app.defaults["tools_nccoverlap"])
|
||||||
self.ncc_margin_entry.set_value(self.app.defaults["tools_nccmargin"])
|
self.ncc_margin_entry.set_value(self.app.defaults["tools_nccmargin"])
|
||||||
|
@ -935,6 +988,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
"toolchangexy": self.app.defaults["geometry_toolchangexy"],
|
"toolchangexy": self.app.defaults["geometry_toolchangexy"],
|
||||||
"startz": self.app.defaults["geometry_startz"],
|
"startz": self.app.defaults["geometry_startz"],
|
||||||
|
|
||||||
|
"nccoperation": self.app.defaults["tools_nccoperation"],
|
||||||
"nccmargin": self.app.defaults["tools_nccmargin"],
|
"nccmargin": self.app.defaults["tools_nccmargin"],
|
||||||
"nccmethod": self.app.defaults["tools_nccmethod"],
|
"nccmethod": self.app.defaults["tools_nccmethod"],
|
||||||
"nccconnect": self.app.defaults["tools_nccconnect"],
|
"nccconnect": self.app.defaults["tools_nccconnect"],
|
||||||
|
@ -968,7 +1022,6 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
'offset_value': 0.0,
|
'offset_value': 0.0,
|
||||||
'type': 'Iso',
|
'type': 'Iso',
|
||||||
'tool_type': self.tool_type_radio.get_value(),
|
'tool_type': self.tool_type_radio.get_value(),
|
||||||
'operation': 'clear_op',
|
|
||||||
'data': deepcopy(self.default_data),
|
'data': deepcopy(self.default_data),
|
||||||
'solid_geometry': []
|
'solid_geometry': []
|
||||||
}
|
}
|
||||||
|
@ -1032,13 +1085,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
|
|
||||||
tool_uid_item = QtWidgets.QTableWidgetItem(str(int(tooluid_key)))
|
tool_uid_item = QtWidgets.QTableWidgetItem(str(int(tooluid_key)))
|
||||||
|
|
||||||
operation_type = FCComboBox()
|
# operation_type = FCComboBox()
|
||||||
operation_type.addItem('iso_op')
|
# operation_type.addItems(['iso_op', 'clear_op'])
|
||||||
# operation_type.setStyleSheet('background-color: rgb(255,255,255)')
|
#
|
||||||
operation_type.addItem('clear_op')
|
# # operation_type.setStyleSheet('background-color: rgb(255,255,255)')
|
||||||
# operation_type.setStyleSheet('background-color: rgb(255,255,255)')
|
# op_idx = operation_type.findText(tooluid_value['operation'])
|
||||||
op_idx = operation_type.findText(tooluid_value['operation'])
|
# operation_type.setCurrentIndex(op_idx)
|
||||||
operation_type.setCurrentIndex(op_idx)
|
|
||||||
|
|
||||||
self.tools_table.setItem(row_no, 1, dia) # Diameter
|
self.tools_table.setItem(row_no, 1, dia) # Diameter
|
||||||
self.tools_table.setCellWidget(row_no, 2, tool_type_item)
|
self.tools_table.setCellWidget(row_no, 2, tool_type_item)
|
||||||
|
@ -1046,7 +1098,7 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
# ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ##
|
# ## REMEMBER: THIS COLUMN IS HIDDEN IN OBJECTUI.PY # ##
|
||||||
self.tools_table.setItem(row_no, 3, tool_uid_item) # Tool unique ID
|
self.tools_table.setItem(row_no, 3, tool_uid_item) # Tool unique ID
|
||||||
|
|
||||||
self.tools_table.setCellWidget(row_no, 4, operation_type)
|
# self.tools_table.setCellWidget(row_no, 4, operation_type)
|
||||||
|
|
||||||
# make the diameter column editable
|
# make the diameter column editable
|
||||||
for row in range(tool_id):
|
for row in range(tool_id):
|
||||||
|
@ -1237,19 +1289,19 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
'tool_type': tt,
|
'tool_type': tt,
|
||||||
})
|
})
|
||||||
|
|
||||||
if cw_col == 4:
|
# if cw_col == 4:
|
||||||
op = cw.currentText()
|
# op = cw.currentText()
|
||||||
|
#
|
||||||
if op == 'iso_op':
|
# if op == 'iso_op':
|
||||||
self.milling_type_label.show()
|
# self.milling_type_label.show()
|
||||||
self.milling_type_radio.show()
|
# self.milling_type_radio.show()
|
||||||
else:
|
# else:
|
||||||
self.milling_type_label.hide()
|
# self.milling_type_label.hide()
|
||||||
self.milling_type_radio.hide()
|
# self.milling_type_radio.hide()
|
||||||
|
#
|
||||||
self.ncc_tools[current_uid].update({
|
# self.ncc_tools[current_uid].update({
|
||||||
'operation': op
|
# 'operation': op
|
||||||
})
|
# })
|
||||||
|
|
||||||
def on_tool_type(self, val):
|
def on_tool_type(self, val):
|
||||||
if val == 'V':
|
if val == 'V':
|
||||||
|
@ -1350,7 +1402,6 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
'offset_value': 0.0,
|
'offset_value': 0.0,
|
||||||
'type': 'Iso',
|
'type': 'Iso',
|
||||||
'tool_type': self.tool_type_radio.get_value(),
|
'tool_type': self.tool_type_radio.get_value(),
|
||||||
'operation': 'clear_op',
|
|
||||||
'data': deepcopy(self.default_data),
|
'data': deepcopy(self.default_data),
|
||||||
'solid_geometry': []
|
'solid_geometry': []
|
||||||
}
|
}
|
||||||
|
@ -2022,9 +2073,12 @@ class NonCopperClear(FlatCAMTool, Gerber):
|
||||||
else:
|
else:
|
||||||
sorted_tools = ncctooldia
|
sorted_tools = ncctooldia
|
||||||
else:
|
else:
|
||||||
for row in range(self.tools_table.rowCount()):
|
# for row in range(self.tools_table.rowCount()):
|
||||||
if self.tools_table.cellWidget(row, 1).currentText() == 'clear_op':
|
# if self.tools_table.cellWidget(row, 1).currentText() == 'clear_op':
|
||||||
sorted_tools.append(float(self.tools_table.item(row, 1).text()))
|
# sorted_tools.append(float(self.tools_table.item(row, 1).text()))
|
||||||
|
for tooluid in self.ncc_tools:
|
||||||
|
if self.ncc_tools[tooluid]['data']['nccoperation'] == 'clear':
|
||||||
|
sorted_tools.append(self.ncc_tools[tooluid]['tooldia'])
|
||||||
|
|
||||||
# ########################################################################################################
|
# ########################################################################################################
|
||||||
# set the name for the future Geometry object
|
# set the name for the future Geometry object
|
||||||
|
|
Loading…
Reference in New Issue