- Isolation Tool - modified the UI; preparing to add new feature of polishing at the end of the milling job
- Tool Paint - fixed an issue when launching the tool and an object other than Geometry or Excellon is selected
This commit is contained in:
@@ -16,6 +16,8 @@ CHANGELOG for FlatCAM beta
|
|||||||
- Excellon UI: added a new feature that is grouped in Advanced Settings: a toggle tools table visibility checkbox
|
- Excellon UI: added a new feature that is grouped in Advanced Settings: a toggle tools table visibility checkbox
|
||||||
- Drilling Tool - minor fixes
|
- Drilling Tool - minor fixes
|
||||||
- Drilling Tool - changes in UI
|
- Drilling Tool - changes in UI
|
||||||
|
- Isolation Tool - modified the UI; preparing to add new feature of polishing at the end of the milling job
|
||||||
|
- Tool Paint - fixed an issue when launching the tool and an object other than Geometry or Excellon is selected
|
||||||
|
|
||||||
10.07.2020
|
10.07.2020
|
||||||
|
|
||||||
|
|||||||
@@ -2092,7 +2092,7 @@ class DrillingUI:
|
|||||||
_("How much (percentage) of the tool diameter to overlap previous drill hole.")
|
_("How much (percentage) of the tool diameter to overlap previous drill hole.")
|
||||||
)
|
)
|
||||||
|
|
||||||
self.drill_overlap_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
self.drill_overlap_entry = FCDoubleSpinner(suffix='%', callback=self.confirmation_message)
|
||||||
self.drill_overlap_entry.set_precision(self.decimals)
|
self.drill_overlap_entry.set_precision(self.decimals)
|
||||||
self.drill_overlap_entry.set_range(0.0, 100.0000)
|
self.drill_overlap_entry.set_range(0.0, 100.0000)
|
||||||
self.drill_overlap_entry.setSingleStep(0.1)
|
self.drill_overlap_entry.setSingleStep(0.1)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from PyQt5 import QtWidgets, QtCore, QtGui
|
|||||||
|
|
||||||
from appTool import AppTool
|
from appTool import AppTool
|
||||||
from appGUI.GUIElements import FCCheckBox, FCDoubleSpinner, RadioSet, FCTable, FCInputDialog, FCButton, \
|
from appGUI.GUIElements import FCCheckBox, FCDoubleSpinner, RadioSet, FCTable, FCInputDialog, FCButton, \
|
||||||
FCComboBox, OptionalInputSection, FCSpinner
|
FCComboBox, OptionalInputSection, FCSpinner, OptionalHideInputSection
|
||||||
from appParsers.ParseGerber import Gerber
|
from appParsers.ParseGerber import Gerber
|
||||||
|
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
@@ -3162,7 +3162,7 @@ class IsoUI:
|
|||||||
self.exc_obj_combo.is_last = True
|
self.exc_obj_combo.is_last = True
|
||||||
self.exc_obj_combo.obj_type = "gerber"
|
self.exc_obj_combo.obj_type = "gerber"
|
||||||
|
|
||||||
self.grid3.addWidget(self.exc_obj_combo, 29, 0, 1, 2)
|
self.grid3.addWidget(self.exc_obj_combo, 28, 0, 1, 2)
|
||||||
|
|
||||||
self.e_ois = OptionalInputSection(self.except_cb,
|
self.e_ois = OptionalInputSection(self.except_cb,
|
||||||
[
|
[
|
||||||
@@ -3170,6 +3170,79 @@ class IsoUI:
|
|||||||
self.exc_obj_combo
|
self.exc_obj_combo
|
||||||
])
|
])
|
||||||
|
|
||||||
|
# Add Polish
|
||||||
|
self.polish_cb = FCCheckBox(label=_('Add Polish'))
|
||||||
|
self.polish_cb.setToolTip(_(
|
||||||
|
"Will add a Paint section at the end of the GCode.\n"
|
||||||
|
"It will clean the material after milling."))
|
||||||
|
self.polish_cb.setObjectName("i_polish")
|
||||||
|
self.grid3.addWidget(self.polish_cb, 29, 0, 1, 2)
|
||||||
|
|
||||||
|
# Polish Tool Diameter
|
||||||
|
self.polish_dia_lbl = QtWidgets.QLabel('%s:' % _('Tool Dia'))
|
||||||
|
self.polish_dia_lbl.setToolTip(
|
||||||
|
_("Diameter for the polishing tool.")
|
||||||
|
)
|
||||||
|
self.polish_dia_entry = FCDoubleSpinner(callback=self.confirmation_message)
|
||||||
|
self.polish_dia_entry.set_precision(self.decimals)
|
||||||
|
self.polish_dia_entry.set_range(0.000, 9999.9999)
|
||||||
|
self.polish_dia_entry.setObjectName("i_polish_dia")
|
||||||
|
|
||||||
|
self.grid3.addWidget(self.polish_dia_lbl, 30, 0)
|
||||||
|
self.grid3.addWidget(self.polish_dia_entry, 30, 1)
|
||||||
|
|
||||||
|
# Polish Overlap
|
||||||
|
self.polish_over_lbl = QtWidgets.QLabel('%s:' % _('Overlap'))
|
||||||
|
self.polish_over_lbl.setToolTip(
|
||||||
|
_("How much (percentage) of the tool width to overlap each tool pass.")
|
||||||
|
)
|
||||||
|
self.polish_over_entry = FCDoubleSpinner(suffix='%', callback=self.confirmation_message)
|
||||||
|
self.polish_over_entry.set_precision(self.decimals)
|
||||||
|
self.polish_over_entry.setWrapping(True)
|
||||||
|
self.polish_over_entry.set_range(0.0000, 99.9999)
|
||||||
|
self.polish_over_entry.setSingleStep(0.1)
|
||||||
|
self.polish_over_entry.setObjectName("i_polish_overlap")
|
||||||
|
|
||||||
|
self.grid3.addWidget(self.polish_over_lbl, 31, 0)
|
||||||
|
self.grid3.addWidget(self.polish_over_entry, 31, 1)
|
||||||
|
|
||||||
|
# Polish Method
|
||||||
|
self.polish_method_lbl = QtWidgets.QLabel('%s:' % _('Method'))
|
||||||
|
self.polish_method_lbl.setToolTip(
|
||||||
|
_("Algorithm for polishing:\n"
|
||||||
|
"- Standard: Fixed step inwards.\n"
|
||||||
|
"- Seed-based: Outwards from seed.\n"
|
||||||
|
"- Line-based: Parallel lines.")
|
||||||
|
)
|
||||||
|
|
||||||
|
self.polish_method_combo = FCComboBox()
|
||||||
|
self.polish_method_combo.addItems(
|
||||||
|
[_("Standard"), _("Seed"), _("Lines")]
|
||||||
|
)
|
||||||
|
self.polish_method_combo.setObjectName('i_polish_method')
|
||||||
|
|
||||||
|
self.grid3.addWidget(self.polish_method_lbl, 32, 0)
|
||||||
|
self.grid3.addWidget(self.polish_method_combo, 32, 1)
|
||||||
|
|
||||||
|
self.polish_dia_lbl.hide()
|
||||||
|
self.polish_dia_entry.hide()
|
||||||
|
self.polish_over_lbl.hide()
|
||||||
|
self.polish_over_entry.hide()
|
||||||
|
self.polish_method_lbl.hide()
|
||||||
|
self.polish_method_combo.hide()
|
||||||
|
|
||||||
|
self.ois_polish = OptionalHideInputSection(
|
||||||
|
self.polish_cb,
|
||||||
|
[
|
||||||
|
self.polish_dia_lbl,
|
||||||
|
self.polish_dia_entry,
|
||||||
|
self.polish_over_lbl,
|
||||||
|
self.polish_over_entry,
|
||||||
|
self.polish_method_lbl,
|
||||||
|
self.polish_method_combo
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
# Isolation Scope
|
# Isolation Scope
|
||||||
self.select_label = QtWidgets.QLabel('%s:' % _("Selection"))
|
self.select_label = QtWidgets.QLabel('%s:' % _("Selection"))
|
||||||
self.select_label.setToolTip(
|
self.select_label.setToolTip(
|
||||||
@@ -3185,8 +3258,8 @@ class IsoUI:
|
|||||||
)
|
)
|
||||||
self.select_combo.setObjectName("i_selection")
|
self.select_combo.setObjectName("i_selection")
|
||||||
|
|
||||||
self.grid3.addWidget(self.select_label, 30, 0)
|
self.grid3.addWidget(self.select_label, 33, 0)
|
||||||
self.grid3.addWidget(self.select_combo, 30, 1)
|
self.grid3.addWidget(self.select_combo, 33, 1)
|
||||||
|
|
||||||
self.reference_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type"))
|
self.reference_combo_type_label = QtWidgets.QLabel('%s:' % _("Ref. Type"))
|
||||||
self.reference_combo_type_label.setToolTip(
|
self.reference_combo_type_label.setToolTip(
|
||||||
@@ -3196,8 +3269,8 @@ class IsoUI:
|
|||||||
self.reference_combo_type = FCComboBox()
|
self.reference_combo_type = FCComboBox()
|
||||||
self.reference_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
|
self.reference_combo_type.addItems([_("Gerber"), _("Excellon"), _("Geometry")])
|
||||||
|
|
||||||
self.grid3.addWidget(self.reference_combo_type_label, 31, 0)
|
self.grid3.addWidget(self.reference_combo_type_label, 34, 0)
|
||||||
self.grid3.addWidget(self.reference_combo_type, 31, 1)
|
self.grid3.addWidget(self.reference_combo_type, 34, 1)
|
||||||
|
|
||||||
self.reference_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object"))
|
self.reference_combo_label = QtWidgets.QLabel('%s:' % _("Ref. Object"))
|
||||||
self.reference_combo_label.setToolTip(
|
self.reference_combo_label.setToolTip(
|
||||||
@@ -3208,8 +3281,8 @@ class IsoUI:
|
|||||||
self.reference_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
|
self.reference_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex()))
|
||||||
self.reference_combo.is_last = True
|
self.reference_combo.is_last = True
|
||||||
|
|
||||||
self.grid3.addWidget(self.reference_combo_label, 32, 0)
|
self.grid3.addWidget(self.reference_combo_label, 35, 0)
|
||||||
self.grid3.addWidget(self.reference_combo, 32, 1)
|
self.grid3.addWidget(self.reference_combo, 35, 1)
|
||||||
|
|
||||||
self.reference_combo.hide()
|
self.reference_combo.hide()
|
||||||
self.reference_combo_label.hide()
|
self.reference_combo_label.hide()
|
||||||
@@ -3223,7 +3296,7 @@ class IsoUI:
|
|||||||
"(holes in the polygon).")
|
"(holes in the polygon).")
|
||||||
)
|
)
|
||||||
|
|
||||||
self.grid3.addWidget(self.poly_int_cb, 33, 0)
|
self.grid3.addWidget(self.poly_int_cb, 36, 0)
|
||||||
|
|
||||||
self.poly_int_cb.hide()
|
self.poly_int_cb.hide()
|
||||||
|
|
||||||
@@ -3236,8 +3309,8 @@ class IsoUI:
|
|||||||
self.area_shape_radio = RadioSet([{'label': _("Square"), 'value': 'square'},
|
self.area_shape_radio = RadioSet([{'label': _("Square"), 'value': 'square'},
|
||||||
{'label': _("Polygon"), 'value': 'polygon'}])
|
{'label': _("Polygon"), 'value': 'polygon'}])
|
||||||
|
|
||||||
self.grid3.addWidget(self.area_shape_label, 35, 0)
|
self.grid3.addWidget(self.area_shape_label, 38, 0)
|
||||||
self.grid3.addWidget(self.area_shape_radio, 35, 1)
|
self.grid3.addWidget(self.area_shape_radio, 38, 1)
|
||||||
|
|
||||||
self.area_shape_label.hide()
|
self.area_shape_label.hide()
|
||||||
self.area_shape_radio.hide()
|
self.area_shape_radio.hide()
|
||||||
@@ -3245,7 +3318,7 @@ class IsoUI:
|
|||||||
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)
|
||||||
self.grid3.addWidget(separator_line, 36, 0, 1, 2)
|
self.grid3.addWidget(separator_line, 39, 0, 1, 2)
|
||||||
|
|
||||||
self.generate_iso_button = QtWidgets.QPushButton("%s" % _("Generate Isolation Geometry"))
|
self.generate_iso_button = QtWidgets.QPushButton("%s" % _("Generate Isolation Geometry"))
|
||||||
self.generate_iso_button.setStyleSheet("""
|
self.generate_iso_button.setStyleSheet("""
|
||||||
|
|||||||
@@ -590,9 +590,10 @@ class ToolPaint(AppTool, Gerber):
|
|||||||
active = self.app.collection.get_active()
|
active = self.app.collection.get_active()
|
||||||
kind = active.kind
|
kind = active.kind
|
||||||
if kind == 'gerber':
|
if kind == 'gerber':
|
||||||
self.ui.type_obj_radio.set_value('gerber')
|
self.ui.type_obj_radio.set_value(kind)
|
||||||
else:
|
else:
|
||||||
self.ui.type_obj_radio.set_value('geometry')
|
kind = 'geometry'
|
||||||
|
self.ui.type_obj_radio.set_value(kind)
|
||||||
|
|
||||||
# run those once so the obj_type attribute is updated in the FCComboBoxes
|
# run those once so the obj_type attribute is updated in the FCComboBoxes
|
||||||
# to make sure that the last loaded object is displayed in the combobox
|
# to make sure that the last loaded object is displayed in the combobox
|
||||||
|
|||||||
Reference in New Issue
Block a user