- converted all ObjectUI entries to FCDoubleSpinner and FCSpinner
This commit is contained in:
parent
6fcfcefd8a
commit
4ce84ec00a
|
@ -14,6 +14,7 @@ CAD program, and create G-Code for Isolation routing.
|
||||||
- modified the result highlight color in Check Rules Tool
|
- modified the result highlight color in Check Rules Tool
|
||||||
- added the Check Rules Tool parameters to the unit conversion list
|
- added the Check Rules Tool parameters to the unit conversion list
|
||||||
- converted more of the Preferences entries to FCDoubleSpinner and FCSpinner
|
- converted more of the Preferences entries to FCDoubleSpinner and FCSpinner
|
||||||
|
- converted all ObjectUI entries to FCDoubleSpinner and FCSpinner
|
||||||
|
|
||||||
13.10.2019
|
13.10.2019
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@ class ObjectUI(QtWidgets.QWidget):
|
||||||
def __init__(self, icon_file='share/flatcam_icon32.png', title=_('FlatCAM Object'), parent=None, common=True):
|
def __init__(self, icon_file='share/flatcam_icon32.png', title=_('FlatCAM Object'), parent=None, common=True):
|
||||||
QtWidgets.QWidget.__init__(self, parent=parent)
|
QtWidgets.QWidget.__init__(self, parent=parent)
|
||||||
|
|
||||||
|
self.decimals = 4
|
||||||
|
|
||||||
layout = QtWidgets.QVBoxLayout()
|
layout = QtWidgets.QVBoxLayout()
|
||||||
self.setLayout(layout)
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
@ -76,15 +78,18 @@ class ObjectUI(QtWidgets.QWidget):
|
||||||
# ## Common to all objects ##
|
# ## Common to all objects ##
|
||||||
# ###########################
|
# ###########################
|
||||||
if common is True:
|
if common is True:
|
||||||
|
grid0 = QtWidgets.QGridLayout()
|
||||||
|
layout.addLayout(grid0)
|
||||||
|
grid0.setColumnStretch(0, 0)
|
||||||
|
grid0.setColumnStretch(1, 1)
|
||||||
|
|
||||||
# ### Scale ####
|
# ### Scale ####
|
||||||
self.scale_label = QtWidgets.QLabel('<b>%s:</b>' % _('Scale'))
|
self.scale_label = QtWidgets.QLabel('<b>%s</b>' % _('Scale'))
|
||||||
self.scale_label.setToolTip(
|
self.scale_label.setToolTip(
|
||||||
_("Change the size of the object.")
|
_("Change the size of the object.")
|
||||||
)
|
)
|
||||||
layout.addWidget(self.scale_label)
|
|
||||||
|
|
||||||
self.scale_grid = QtWidgets.QGridLayout()
|
grid0.addWidget(self.scale_label, 0, 0, 1, 3)
|
||||||
layout.addLayout(self.scale_grid)
|
|
||||||
|
|
||||||
# Factor
|
# Factor
|
||||||
faclabel = QtWidgets.QLabel('%s:' % _('Factor'))
|
faclabel = QtWidgets.QLabel('%s:' % _('Factor'))
|
||||||
|
@ -92,10 +97,12 @@ class ObjectUI(QtWidgets.QWidget):
|
||||||
_("Factor by which to multiply\n"
|
_("Factor by which to multiply\n"
|
||||||
"geometric features of this object.")
|
"geometric features of this object.")
|
||||||
)
|
)
|
||||||
self.scale_grid.addWidget(faclabel, 0, 0)
|
self.scale_entry = FCDoubleSpinner()
|
||||||
self.scale_entry = FloatEntry2()
|
self.scale_entry.set_precision(self.decimals)
|
||||||
|
self.scale_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.scale_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.scale_entry.set_value(1.0)
|
self.scale_entry.set_value(1.0)
|
||||||
self.scale_grid.addWidget(self.scale_entry, 0, 1)
|
|
||||||
|
|
||||||
# GO Button
|
# GO Button
|
||||||
self.scale_button = QtWidgets.QPushButton(_('Scale'))
|
self.scale_button = QtWidgets.QPushButton(_('Scale'))
|
||||||
|
@ -103,34 +110,36 @@ class ObjectUI(QtWidgets.QWidget):
|
||||||
_("Perform scaling operation.")
|
_("Perform scaling operation.")
|
||||||
)
|
)
|
||||||
self.scale_button.setMinimumWidth(70)
|
self.scale_button.setMinimumWidth(70)
|
||||||
self.scale_grid.addWidget(self.scale_button, 0, 2)
|
|
||||||
|
grid0.addWidget(faclabel, 1, 0)
|
||||||
|
grid0.addWidget(self.scale_entry, 1, 1)
|
||||||
|
grid0.addWidget(self.scale_button, 1, 2)
|
||||||
|
|
||||||
# ### Offset ####
|
# ### Offset ####
|
||||||
self.offset_label = QtWidgets.QLabel('<b>%s:</b>' % _('Offset'))
|
self.offset_label = QtWidgets.QLabel('<b>%s</b>' % _('Offset'))
|
||||||
self.offset_label.setToolTip(
|
self.offset_label.setToolTip(
|
||||||
_("Change the position of this object.")
|
_("Change the position of this object.")
|
||||||
)
|
)
|
||||||
layout.addWidget(self.offset_label)
|
|
||||||
|
|
||||||
self.offset_grid = QtWidgets.QGridLayout()
|
grid0.addWidget(self.offset_label, 2, 0, 1, 3)
|
||||||
layout.addLayout(self.offset_grid)
|
|
||||||
|
|
||||||
self.offset_vectorlabel = QtWidgets.QLabel('%s:' % _('Vector'))
|
self.offset_vectorlabel = QtWidgets.QLabel('%s:' % _('Vector'))
|
||||||
self.offset_vectorlabel.setToolTip(
|
self.offset_vectorlabel.setToolTip(
|
||||||
_("Amount by which to move the object\n"
|
_("Amount by which to move the object\n"
|
||||||
"in the x and y axes in (x, y) format.")
|
"in the x and y axes in (x, y) format.")
|
||||||
)
|
)
|
||||||
self.offset_grid.addWidget(self.offset_vectorlabel, 0, 0)
|
|
||||||
self.offsetvector_entry = EvalEntry2()
|
self.offsetvector_entry = EvalEntry2()
|
||||||
self.offsetvector_entry.setText("(0.0, 0.0)")
|
self.offsetvector_entry.setText("(0.0, 0.0)")
|
||||||
self.offset_grid.addWidget(self.offsetvector_entry, 0, 1)
|
|
||||||
|
|
||||||
self.offset_button = QtWidgets.QPushButton(_('Offset'))
|
self.offset_button = QtWidgets.QPushButton(_('Offset'))
|
||||||
self.offset_button.setToolTip(
|
self.offset_button.setToolTip(
|
||||||
_("Perform the offset operation.")
|
_("Perform the offset operation.")
|
||||||
)
|
)
|
||||||
self.offset_button.setMinimumWidth(70)
|
self.offset_button.setMinimumWidth(70)
|
||||||
self.offset_grid.addWidget(self.offset_button, 0, 2)
|
|
||||||
|
grid0.addWidget(self.offset_vectorlabel, 3, 0)
|
||||||
|
grid0.addWidget(self.offsetvector_entry, 3, 1)
|
||||||
|
grid0.addWidget(self.offset_button, 3, 2)
|
||||||
|
|
||||||
layout.addStretch()
|
layout.addStretch()
|
||||||
|
|
||||||
|
@ -142,11 +151,14 @@ class GerberObjectUI(ObjectUI):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
ObjectUI.__init__(self, title=_('Gerber Object'), parent=parent)
|
ObjectUI.__init__(self, title=_('Gerber Object'), parent=parent)
|
||||||
|
self.decimals = 4
|
||||||
|
|
||||||
# Plot options
|
# Plot options
|
||||||
grid0 = QtWidgets.QGridLayout()
|
grid0 = QtWidgets.QGridLayout()
|
||||||
grid0.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
|
grid0.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
|
||||||
self.custom_box.addLayout(grid0)
|
self.custom_box.addLayout(grid0)
|
||||||
|
grid0.setColumnStretch(0, 0)
|
||||||
|
grid0.setColumnStretch(1, 1)
|
||||||
|
|
||||||
self.plot_options_label = QtWidgets.QLabel("<b>%s:</b>" % _("Plot Options"))
|
self.plot_options_label = QtWidgets.QLabel("<b>%s:</b>" % _("Plot Options"))
|
||||||
self.plot_options_label.setMinimumWidth(90)
|
self.plot_options_label.setMinimumWidth(90)
|
||||||
|
@ -247,8 +259,10 @@ class GerberObjectUI(ObjectUI):
|
||||||
# start with apertures table hidden
|
# start with apertures table hidden
|
||||||
self.apertures_table.setVisible(False)
|
self.apertures_table.setVisible(False)
|
||||||
|
|
||||||
|
self.custom_box.addWidget(QtWidgets.QLabel(''))
|
||||||
|
|
||||||
# Isolation Routing
|
# Isolation Routing
|
||||||
self.isolation_routing_label = QtWidgets.QLabel("<b>%s:</b>" % _("Isolation Routing"))
|
self.isolation_routing_label = QtWidgets.QLabel("<b>%s</b>" % _("Isolation Routing"))
|
||||||
self.isolation_routing_label.setToolTip(
|
self.isolation_routing_label.setToolTip(
|
||||||
_("Create a Geometry object with\n"
|
_("Create a Geometry object with\n"
|
||||||
"toolpaths to cut outside polygons.")
|
"toolpaths to cut outside polygons.")
|
||||||
|
@ -261,9 +275,11 @@ class GerberObjectUI(ObjectUI):
|
||||||
|
|
||||||
grid1 = QtWidgets.QGridLayout()
|
grid1 = QtWidgets.QGridLayout()
|
||||||
self.custom_box.addLayout(grid1)
|
self.custom_box.addLayout(grid1)
|
||||||
|
grid1.setColumnStretch(0, 0)
|
||||||
|
grid1.setColumnStretch(1, 1)
|
||||||
|
|
||||||
# Tool Type
|
# Tool Type
|
||||||
self.tool_type_label = QtWidgets.QLabel('<b>%s</b>' % _('Tool Type'))
|
self.tool_type_label = QtWidgets.QLabel('%s:' % _('Tool Type'))
|
||||||
self.tool_type_label.setToolTip(
|
self.tool_type_label.setToolTip(
|
||||||
_("Choose what tool to use for Gerber isolation:\n"
|
_("Choose what tool to use for Gerber isolation:\n"
|
||||||
"'Circular' or 'V-shape'.\n"
|
"'Circular' or 'V-shape'.\n"
|
||||||
|
@ -283,6 +299,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
)
|
)
|
||||||
self.tipdia_spinner = FCDoubleSpinner()
|
self.tipdia_spinner = FCDoubleSpinner()
|
||||||
self.tipdia_spinner.set_range(-99.9999, 99.9999)
|
self.tipdia_spinner.set_range(-99.9999, 99.9999)
|
||||||
|
self.tipdia_spinner.set_precision(self.decimals)
|
||||||
self.tipdia_spinner.setSingleStep(0.1)
|
self.tipdia_spinner.setSingleStep(0.1)
|
||||||
self.tipdia_spinner.setWrapping(True)
|
self.tipdia_spinner.setWrapping(True)
|
||||||
grid1.addWidget(self.tipdialabel, 1, 0)
|
grid1.addWidget(self.tipdialabel, 1, 0)
|
||||||
|
@ -294,8 +311,9 @@ class GerberObjectUI(ObjectUI):
|
||||||
_("The tip angle for V-Shape Tool.\n"
|
_("The tip angle for V-Shape Tool.\n"
|
||||||
"In degree.")
|
"In degree.")
|
||||||
)
|
)
|
||||||
self.tipangle_spinner = FCSpinner()
|
self.tipangle_spinner = FCDoubleSpinner()
|
||||||
self.tipangle_spinner.set_range(0, 180)
|
self.tipangle_spinner.set_range(0, 180)
|
||||||
|
self.tipangle_spinner.set_precision(self.decimals)
|
||||||
self.tipangle_spinner.setSingleStep(5)
|
self.tipangle_spinner.setSingleStep(5)
|
||||||
self.tipangle_spinner.setWrapping(True)
|
self.tipangle_spinner.setWrapping(True)
|
||||||
grid1.addWidget(self.tipanglelabel, 2, 0)
|
grid1.addWidget(self.tipanglelabel, 2, 0)
|
||||||
|
@ -308,7 +326,8 @@ class GerberObjectUI(ObjectUI):
|
||||||
"below the copper surface.")
|
"below the copper surface.")
|
||||||
)
|
)
|
||||||
self.cutz_spinner = FCDoubleSpinner()
|
self.cutz_spinner = FCDoubleSpinner()
|
||||||
self.cutz_spinner.set_range(-99.9999, -0.0001)
|
self.cutz_spinner.set_range(-9999.9999, -0.0001)
|
||||||
|
self.cutz_spinner.set_precision(self.decimals)
|
||||||
self.cutz_spinner.setSingleStep(0.1)
|
self.cutz_spinner.setSingleStep(0.1)
|
||||||
self.cutz_spinner.setWrapping(True)
|
self.cutz_spinner.setWrapping(True)
|
||||||
grid1.addWidget(self.cutzlabel, 3, 0)
|
grid1.addWidget(self.cutzlabel, 3, 0)
|
||||||
|
@ -324,7 +343,11 @@ class GerberObjectUI(ObjectUI):
|
||||||
"this parameter.")
|
"this parameter.")
|
||||||
)
|
)
|
||||||
tdlabel.setMinimumWidth(90)
|
tdlabel.setMinimumWidth(90)
|
||||||
self.iso_tool_dia_entry = LengthEntry()
|
self.iso_tool_dia_entry = FCDoubleSpinner()
|
||||||
|
self.iso_tool_dia_entry.set_range(0, 9999.9999)
|
||||||
|
self.iso_tool_dia_entry.set_precision(self.decimals)
|
||||||
|
self.iso_tool_dia_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(tdlabel, 4, 0)
|
grid1.addWidget(tdlabel, 4, 0)
|
||||||
grid1.addWidget(self.iso_tool_dia_entry, 4, 1, 1, 2)
|
grid1.addWidget(self.iso_tool_dia_entry, 4, 1, 1, 2)
|
||||||
|
|
||||||
|
@ -349,7 +372,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
)
|
)
|
||||||
overlabel.setMinimumWidth(90)
|
overlabel.setMinimumWidth(90)
|
||||||
self.iso_overlap_entry = FCDoubleSpinner()
|
self.iso_overlap_entry = FCDoubleSpinner()
|
||||||
self.iso_overlap_entry.set_precision(3)
|
self.iso_overlap_entry.set_precision(self.decimals)
|
||||||
self.iso_overlap_entry.setWrapping(True)
|
self.iso_overlap_entry.setWrapping(True)
|
||||||
self.iso_overlap_entry.setRange(0.000, 0.999)
|
self.iso_overlap_entry.setRange(0.000, 0.999)
|
||||||
self.iso_overlap_entry.setSingleStep(0.1)
|
self.iso_overlap_entry.setSingleStep(0.1)
|
||||||
|
@ -427,7 +450,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
|
|
||||||
form_layout.addRow(self.obj_label, self.obj_combo)
|
form_layout.addRow(self.obj_label, self.obj_combo)
|
||||||
|
|
||||||
self.gen_iso_label = QtWidgets.QLabel("<b>%s:</b>" % _("Generate Isolation Geometry"))
|
self.gen_iso_label = QtWidgets.QLabel("<b>%s</b>" % _("Generate Isolation Geometry"))
|
||||||
self.gen_iso_label.setToolTip(
|
self.gen_iso_label.setToolTip(
|
||||||
_("Create a Geometry object with toolpaths to cut \n"
|
_("Create a Geometry object with toolpaths to cut \n"
|
||||||
"isolation outside, inside or on both sides of the\n"
|
"isolation outside, inside or on both sides of the\n"
|
||||||
|
@ -497,12 +520,14 @@ class GerberObjectUI(ObjectUI):
|
||||||
|
|
||||||
grid2 = QtWidgets.QGridLayout()
|
grid2 = QtWidgets.QGridLayout()
|
||||||
self.custom_box.addLayout(grid2)
|
self.custom_box.addLayout(grid2)
|
||||||
|
grid2.setColumnStretch(0, 0)
|
||||||
|
grid2.setColumnStretch(1, 1)
|
||||||
|
|
||||||
self.tool_lbl = QtWidgets.QLabel('<b>%s</b>:' % _("TOOLS"))
|
self.tool_lbl = QtWidgets.QLabel('<b>%s</b>' % _("TOOLS"))
|
||||||
grid2.addWidget(self.tool_lbl, 0, 0, 1, 2)
|
grid2.addWidget(self.tool_lbl, 0, 0, 1, 2)
|
||||||
|
|
||||||
# ## Clear non-copper regions
|
# ## Clear non-copper regions
|
||||||
self.clearcopper_label = QtWidgets.QLabel("<b>%s:</b>" % _("Clear N-copper"))
|
self.clearcopper_label = QtWidgets.QLabel("%s" % _("Clear N-copper"))
|
||||||
self.clearcopper_label.setToolTip(
|
self.clearcopper_label.setToolTip(
|
||||||
_("Create a Geometry object with\n"
|
_("Create a Geometry object with\n"
|
||||||
"toolpaths to cut all non-copper regions.")
|
"toolpaths to cut all non-copper regions.")
|
||||||
|
@ -518,7 +543,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
grid2.addWidget(self.generate_ncc_button, 1, 1)
|
grid2.addWidget(self.generate_ncc_button, 1, 1)
|
||||||
|
|
||||||
# ## Board cutout
|
# ## Board cutout
|
||||||
self.board_cutout_label = QtWidgets.QLabel("<b>%s:</b>" % _("Board cutout"))
|
self.board_cutout_label = QtWidgets.QLabel("%s" % _("Board cutout"))
|
||||||
self.board_cutout_label.setToolTip(
|
self.board_cutout_label.setToolTip(
|
||||||
_("Create toolpaths to cut around\n"
|
_("Create toolpaths to cut around\n"
|
||||||
"the PCB and separate it from\n"
|
"the PCB and separate it from\n"
|
||||||
|
@ -534,7 +559,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
grid2.addWidget(self.generate_cutout_button, 2, 1)
|
grid2.addWidget(self.generate_cutout_button, 2, 1)
|
||||||
|
|
||||||
# ## Non-copper regions
|
# ## Non-copper regions
|
||||||
self.noncopper_label = QtWidgets.QLabel("<b>%s:</b>" % _("Non-copper regions"))
|
self.noncopper_label = QtWidgets.QLabel("<b>%s</b>" % _("Non-copper regions"))
|
||||||
self.noncopper_label.setToolTip(
|
self.noncopper_label.setToolTip(
|
||||||
_("Create polygons covering the\n"
|
_("Create polygons covering the\n"
|
||||||
"areas without copper on the PCB.\n"
|
"areas without copper on the PCB.\n"
|
||||||
|
@ -554,7 +579,11 @@ class GerberObjectUI(ObjectUI):
|
||||||
"distance.")
|
"distance.")
|
||||||
)
|
)
|
||||||
bmlabel.setMinimumWidth(90)
|
bmlabel.setMinimumWidth(90)
|
||||||
self.noncopper_margin_entry = LengthEntry()
|
self.noncopper_margin_entry = FCDoubleSpinner()
|
||||||
|
self.noncopper_margin_entry.set_range(-9999.9999, 9999.9999)
|
||||||
|
self.noncopper_margin_entry.set_precision(self.decimals)
|
||||||
|
self.noncopper_margin_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid2.addWidget(bmlabel, 4, 0)
|
grid2.addWidget(bmlabel, 4, 0)
|
||||||
grid2.addWidget(self.noncopper_margin_entry, 4, 1)
|
grid2.addWidget(self.noncopper_margin_entry, 4, 1)
|
||||||
|
|
||||||
|
@ -570,7 +599,7 @@ class GerberObjectUI(ObjectUI):
|
||||||
grid2.addWidget(self.generate_noncopper_button, 5, 1)
|
grid2.addWidget(self.generate_noncopper_button, 5, 1)
|
||||||
|
|
||||||
# ## Bounding box
|
# ## Bounding box
|
||||||
self.boundingbox_label = QtWidgets.QLabel('<b>%s:</b>' % _('Bounding Box'))
|
self.boundingbox_label = QtWidgets.QLabel('<b>%s</b>' % _('Bounding Box'))
|
||||||
self.boundingbox_label.setToolTip(
|
self.boundingbox_label.setToolTip(
|
||||||
_("Create a geometry surrounding the Gerber object.\n"
|
_("Create a geometry surrounding the Gerber object.\n"
|
||||||
"Square shape.")
|
"Square shape.")
|
||||||
|
@ -584,7 +613,11 @@ class GerberObjectUI(ObjectUI):
|
||||||
"to the nearest polygon.")
|
"to the nearest polygon.")
|
||||||
)
|
)
|
||||||
bbmargin.setMinimumWidth(90)
|
bbmargin.setMinimumWidth(90)
|
||||||
self.bbmargin_entry = LengthEntry()
|
self.bbmargin_entry = FCDoubleSpinner()
|
||||||
|
self.bbmargin_entry.set_range(-9999.9999, 9999.9999)
|
||||||
|
self.bbmargin_entry.set_precision(self.decimals)
|
||||||
|
self.bbmargin_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid2.addWidget(bbmargin, 7, 0)
|
grid2.addWidget(bbmargin, 7, 0)
|
||||||
grid2.addWidget(self.bbmargin_entry, 7, 1)
|
grid2.addWidget(self.bbmargin_entry, 7, 1)
|
||||||
|
|
||||||
|
@ -615,6 +648,8 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
icon_file='share/drill32.png',
|
icon_file='share/drill32.png',
|
||||||
parent=parent)
|
parent=parent)
|
||||||
|
|
||||||
|
self.decimals = 4
|
||||||
|
|
||||||
# ### Plot options ####
|
# ### Plot options ####
|
||||||
hlay_plot = QtWidgets.QHBoxLayout()
|
hlay_plot = QtWidgets.QHBoxLayout()
|
||||||
self.custom_box.addLayout(hlay_plot)
|
self.custom_box.addLayout(hlay_plot)
|
||||||
|
@ -709,6 +744,8 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
|
|
||||||
grid1 = QtWidgets.QGridLayout()
|
grid1 = QtWidgets.QGridLayout()
|
||||||
self.tools_box.addLayout(grid1)
|
self.tools_box.addLayout(grid1)
|
||||||
|
grid1.setColumnStretch(0, 0)
|
||||||
|
grid1.setColumnStretch(1, 1)
|
||||||
|
|
||||||
# Cut Z
|
# Cut Z
|
||||||
cutzlabel = QtWidgets.QLabel('%s:' % _('Cut Z'))
|
cutzlabel = QtWidgets.QLabel('%s:' % _('Cut Z'))
|
||||||
|
@ -717,7 +754,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"below the copper surface.")
|
"below the copper surface.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(cutzlabel, 0, 0)
|
grid1.addWidget(cutzlabel, 0, 0)
|
||||||
self.cutz_entry = LengthEntry()
|
self.cutz_entry = FCDoubleSpinner()
|
||||||
|
self.cutz_entry.set_precision(self.decimals)
|
||||||
|
self.cutz_entry.setRange(-9999.9999, -0.000001)
|
||||||
|
self.cutz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.cutz_entry, 0, 1)
|
grid1.addWidget(self.cutz_entry, 0, 1)
|
||||||
|
|
||||||
# Travel Z (z_move)
|
# Travel Z (z_move)
|
||||||
|
@ -727,16 +768,20 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"across the XY plane.")
|
"across the XY plane.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(travelzlabel, 1, 0)
|
grid1.addWidget(travelzlabel, 1, 0)
|
||||||
self.travelz_entry = LengthEntry()
|
self.travelz_entry = FCDoubleSpinner()
|
||||||
|
self.travelz_entry.set_precision(self.decimals)
|
||||||
|
self.travelz_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.travelz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.travelz_entry, 1, 1)
|
grid1.addWidget(self.travelz_entry, 1, 1)
|
||||||
|
|
||||||
# Tool change:
|
# Tool change:
|
||||||
self.toolchange_cb = FCCheckBox('%s:' % _("Tool change"))
|
self.toolchange_cb = FCCheckBox('%s' % _("Tool change"))
|
||||||
self.toolchange_cb.setToolTip(
|
self.toolchange_cb.setToolTip(
|
||||||
_("Include tool-change sequence\n"
|
_("Include tool-change sequence\n"
|
||||||
"in G-Code (Pause for tool change).")
|
"in G-Code (Pause for tool change).")
|
||||||
)
|
)
|
||||||
grid1.addWidget(self.toolchange_cb, 2, 0)
|
grid1.addWidget(self.toolchange_cb, 2, 0, 1, 2)
|
||||||
|
|
||||||
# Tool change Z:
|
# Tool change Z:
|
||||||
toolchzlabel = QtWidgets.QLabel('%s:' % _("Tool change Z"))
|
toolchzlabel = QtWidgets.QLabel('%s:' % _("Tool change Z"))
|
||||||
|
@ -745,7 +790,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"tool change.")
|
"tool change.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(toolchzlabel, 3, 0)
|
grid1.addWidget(toolchzlabel, 3, 0)
|
||||||
self.toolchangez_entry = LengthEntry()
|
self.toolchangez_entry = FCDoubleSpinner()
|
||||||
|
self.toolchangez_entry.set_precision(self.decimals)
|
||||||
|
self.toolchangez_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.toolchangez_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.toolchangez_entry, 3, 1)
|
grid1.addWidget(self.toolchangez_entry, 3, 1)
|
||||||
self.ois_tcz_e = OptionalInputSection(self.toolchange_cb, [self.toolchangez_entry])
|
self.ois_tcz_e = OptionalInputSection(self.toolchange_cb, [self.toolchangez_entry])
|
||||||
|
|
||||||
|
@ -766,7 +815,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"the last move at the end of the job.")
|
"the last move at the end of the job.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(self.eendz_label, 5, 0)
|
grid1.addWidget(self.eendz_label, 5, 0)
|
||||||
self.eendz_entry = LengthEntry()
|
self.eendz_entry = FCDoubleSpinner()
|
||||||
|
self.eendz_entry.set_precision(self.decimals)
|
||||||
|
self.eendz_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.eendz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.eendz_entry, 5, 1)
|
grid1.addWidget(self.eendz_entry, 5, 1)
|
||||||
|
|
||||||
# Excellon Feedrate Z
|
# Excellon Feedrate Z
|
||||||
|
@ -778,7 +831,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"This is for linear move G01.")
|
"This is for linear move G01.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(frlabel, 6, 0)
|
grid1.addWidget(frlabel, 6, 0)
|
||||||
self.feedrate_entry = LengthEntry()
|
self.feedrate_entry = FCDoubleSpinner()
|
||||||
|
self.feedrate_entry.set_precision(self.decimals)
|
||||||
|
self.feedrate_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.feedrate_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.feedrate_entry, 6, 1)
|
grid1.addWidget(self.feedrate_entry, 6, 1)
|
||||||
|
|
||||||
# Excellon Rapid Feedrate
|
# Excellon Rapid Feedrate
|
||||||
|
@ -791,7 +848,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"ignore for any other cases.")
|
"ignore for any other cases.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(self.feedrate_rapid_label, 7, 0)
|
grid1.addWidget(self.feedrate_rapid_label, 7, 0)
|
||||||
self.feedrate_rapid_entry = LengthEntry()
|
self.feedrate_rapid_entry = FCDoubleSpinner()
|
||||||
|
self.feedrate_rapid_entry.set_precision(self.decimals)
|
||||||
|
self.feedrate_rapid_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.feedrate_rapid_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.feedrate_rapid_entry, 7, 1)
|
grid1.addWidget(self.feedrate_rapid_entry, 7, 1)
|
||||||
# default values is to hide
|
# default values is to hide
|
||||||
self.feedrate_rapid_label.hide()
|
self.feedrate_rapid_label.hide()
|
||||||
|
@ -813,7 +874,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
_("Pause to allow the spindle to reach its\n"
|
_("Pause to allow the spindle to reach its\n"
|
||||||
"speed before cutting.")
|
"speed before cutting.")
|
||||||
)
|
)
|
||||||
self.dwelltime_entry = FCEntry()
|
self.dwelltime_entry = FCDoubleSpinner()
|
||||||
|
self.dwelltime_entry.set_precision(self.decimals)
|
||||||
|
self.dwelltime_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.dwelltime_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.dwelltime_entry.setToolTip(
|
self.dwelltime_entry.setToolTip(
|
||||||
_("Number of time units for spindle to dwell.")
|
_("Number of time units for spindle to dwell.")
|
||||||
)
|
)
|
||||||
|
@ -840,7 +905,11 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
"to probe. Negative value, in current units.")
|
"to probe. Negative value, in current units.")
|
||||||
)
|
)
|
||||||
grid1.addWidget(self.pdepth_label, 11, 0)
|
grid1.addWidget(self.pdepth_label, 11, 0)
|
||||||
self.pdepth_entry = FCEntry()
|
self.pdepth_entry = FCDoubleSpinner()
|
||||||
|
self.pdepth_entry.set_precision(self.decimals)
|
||||||
|
self.pdepth_entry.setRange(-9999.9999, 9999.9999)
|
||||||
|
self.pdepth_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.pdepth_entry, 11, 1)
|
grid1.addWidget(self.pdepth_entry, 11, 1)
|
||||||
self.pdepth_label.hide()
|
self.pdepth_label.hide()
|
||||||
self.pdepth_entry.setVisible(False)
|
self.pdepth_entry.setVisible(False)
|
||||||
|
@ -850,21 +919,31 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
self.feedrate_probe_label.setToolTip(
|
self.feedrate_probe_label.setToolTip(
|
||||||
_("The feedrate used while the probe is probing.")
|
_("The feedrate used while the probe is probing.")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self.feedrate_probe_entry = FCDoubleSpinner()
|
||||||
|
self.feedrate_probe_entry.set_precision(self.decimals)
|
||||||
|
self.feedrate_probe_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.feedrate_probe_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid1.addWidget(self.feedrate_probe_label, 12, 0)
|
grid1.addWidget(self.feedrate_probe_label, 12, 0)
|
||||||
self.feedrate_probe_entry = FCEntry()
|
|
||||||
grid1.addWidget(self.feedrate_probe_entry, 12, 1)
|
grid1.addWidget(self.feedrate_probe_entry, 12, 1)
|
||||||
|
|
||||||
self.feedrate_probe_label.hide()
|
self.feedrate_probe_label.hide()
|
||||||
self.feedrate_probe_entry.setVisible(False)
|
self.feedrate_probe_entry.setVisible(False)
|
||||||
|
|
||||||
|
grid2 = QtWidgets.QGridLayout()
|
||||||
|
self.tools_box.addLayout(grid2)
|
||||||
|
grid2.setColumnStretch(0, 0)
|
||||||
|
grid2.setColumnStretch(1, 1)
|
||||||
|
|
||||||
choose_tools_label = QtWidgets.QLabel(
|
choose_tools_label = QtWidgets.QLabel(
|
||||||
_("Select from the Tools Table above\n"
|
_("Select from the Tools Table above\n"
|
||||||
"the hole dias that are to be drilled.\n"
|
"the hole dias that are to be drilled.\n"
|
||||||
"Use the # column to make the selection.")
|
"Use the # column to make the selection.")
|
||||||
)
|
)
|
||||||
self.tools_box.addWidget(choose_tools_label)
|
grid2.addWidget(choose_tools_label, 0, 0, 1, 3)
|
||||||
|
|
||||||
# ### Choose what to use for Gcode creation: Drills, Slots or Both
|
# ### Choose what to use for Gcode creation: Drills, Slots or Both
|
||||||
gcode_box = QtWidgets.QFormLayout()
|
|
||||||
gcode_type_label = QtWidgets.QLabel('<b>%s</b>' % _('Gcode'))
|
gcode_type_label = QtWidgets.QLabel('<b>%s</b>' % _('Gcode'))
|
||||||
gcode_type_label.setToolTip(
|
gcode_type_label.setToolTip(
|
||||||
_("Choose what to use for GCode generation:\n"
|
_("Choose what to use for GCode generation:\n"
|
||||||
|
@ -875,9 +954,8 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'},
|
self.excellon_gcode_type_radio = RadioSet([{'label': 'Drills', 'value': 'drills'},
|
||||||
{'label': 'Slots', 'value': 'slots'},
|
{'label': 'Slots', 'value': 'slots'},
|
||||||
{'label': 'Both', 'value': 'both'}])
|
{'label': 'Both', 'value': 'both'}])
|
||||||
gcode_box.addRow(gcode_type_label, self.excellon_gcode_type_radio)
|
grid2.addWidget(gcode_type_label, 1, 0)
|
||||||
self.tools_box.addLayout(gcode_box)
|
grid2.addWidget(self.excellon_gcode_type_radio, 1, 1)
|
||||||
|
|
||||||
# temporary action until I finish the feature
|
# temporary action until I finish the feature
|
||||||
self.excellon_gcode_type_radio.setVisible(False)
|
self.excellon_gcode_type_radio.setVisible(False)
|
||||||
gcode_type_label.hide()
|
gcode_type_label.hide()
|
||||||
|
@ -886,54 +964,61 @@ class ExcellonObjectUI(ObjectUI):
|
||||||
self.generate_cnc_button.setToolTip(
|
self.generate_cnc_button.setToolTip(
|
||||||
_("Generate the CNC Job.")
|
_("Generate the CNC Job.")
|
||||||
)
|
)
|
||||||
self.tools_box.addWidget(self.generate_cnc_button)
|
grid2.addWidget(self.generate_cnc_button, 2, 0, 1, 3)
|
||||||
|
|
||||||
# ### Milling Holes Drills ####
|
# ### Milling Holes Drills ####
|
||||||
self.mill_hole_label = QtWidgets.QLabel('<b>%s</b>' % _('Mill Holes'))
|
self.mill_hole_label = QtWidgets.QLabel('<b>%s</b>' % _('Mill Holes'))
|
||||||
self.mill_hole_label.setToolTip(
|
self.mill_hole_label.setToolTip(
|
||||||
_("Create Geometry for milling holes.")
|
_("Create Geometry for milling holes.")
|
||||||
)
|
)
|
||||||
self.tools_box.addWidget(self.mill_hole_label)
|
grid2.addWidget(self.mill_hole_label, 3, 0, 1, 3)
|
||||||
|
|
||||||
self.choose_tools_label2 = QtWidgets.QLabel(
|
self.choose_tools_label2 = QtWidgets.QLabel(
|
||||||
_("Select from the Tools Table above\n"
|
_("Select from the Tools Table above\n"
|
||||||
"the hole dias that are to be milled.\n"
|
"the hole dias that are to be milled.\n"
|
||||||
"Use the # column to make the selection.")
|
"Use the # column to make the selection.")
|
||||||
)
|
)
|
||||||
self.tools_box.addWidget(self.choose_tools_label2)
|
grid2.addWidget(self.choose_tools_label2, 4, 0, 1, 3)
|
||||||
|
|
||||||
grid2 = QtWidgets.QGridLayout()
|
|
||||||
self.tools_box.addLayout(grid2)
|
|
||||||
self.tdlabel = QtWidgets.QLabel('%s:' % _('Drill Tool dia'))
|
self.tdlabel = QtWidgets.QLabel('%s:' % _('Drill Tool dia'))
|
||||||
self.tdlabel.setToolTip(
|
self.tdlabel.setToolTip(
|
||||||
_("Diameter of the cutting tool.")
|
_("Diameter of the cutting tool.")
|
||||||
)
|
)
|
||||||
grid2.addWidget(self.tdlabel, 0, 0)
|
self.tooldia_entry = FCDoubleSpinner()
|
||||||
self.tooldia_entry = LengthEntry()
|
self.tooldia_entry.set_precision(self.decimals)
|
||||||
grid2.addWidget(self.tooldia_entry, 0, 1)
|
self.tooldia_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.tooldia_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.generate_milling_button = QtWidgets.QPushButton(_('Mill Drills Geo'))
|
self.generate_milling_button = QtWidgets.QPushButton(_('Mill Drills Geo'))
|
||||||
self.generate_milling_button.setToolTip(
|
self.generate_milling_button.setToolTip(
|
||||||
_("Create the Geometry Object\n"
|
_("Create the Geometry Object\n"
|
||||||
"for milling DRILLS toolpaths.")
|
"for milling DRILLS toolpaths.")
|
||||||
)
|
)
|
||||||
grid2.addWidget(self.generate_milling_button, 0, 2)
|
|
||||||
|
|
||||||
grid3 = QtWidgets.QGridLayout()
|
grid2.addWidget(self.tdlabel, 5, 0)
|
||||||
self.custom_box.addLayout(grid3)
|
grid2.addWidget(self.tooldia_entry, 5, 1)
|
||||||
|
grid2.addWidget(self.generate_milling_button, 5, 2)
|
||||||
|
|
||||||
self.stdlabel = QtWidgets.QLabel('%s:' % _('Slot Tool dia'))
|
self.stdlabel = QtWidgets.QLabel('%s:' % _('Slot Tool dia'))
|
||||||
self.stdlabel.setToolTip(
|
self.stdlabel.setToolTip(
|
||||||
_("Diameter of the cutting tool\n"
|
_("Diameter of the cutting tool\n"
|
||||||
"when milling slots.")
|
"when milling slots.")
|
||||||
)
|
)
|
||||||
grid3.addWidget(self.stdlabel, 0, 0)
|
|
||||||
self.slot_tooldia_entry = LengthEntry()
|
self.slot_tooldia_entry = FCDoubleSpinner()
|
||||||
grid3.addWidget(self.slot_tooldia_entry, 0, 1)
|
self.slot_tooldia_entry.set_precision(self.decimals)
|
||||||
|
self.slot_tooldia_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.slot_tooldia_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.generate_milling_slots_button = QtWidgets.QPushButton(_('Mill Slots Geo'))
|
self.generate_milling_slots_button = QtWidgets.QPushButton(_('Mill Slots Geo'))
|
||||||
self.generate_milling_slots_button.setToolTip(
|
self.generate_milling_slots_button.setToolTip(
|
||||||
_("Create the Geometry Object\n"
|
_("Create the Geometry Object\n"
|
||||||
"for milling SLOTS toolpaths.")
|
"for milling SLOTS toolpaths.")
|
||||||
)
|
)
|
||||||
grid3.addWidget(self.generate_milling_slots_button, 0, 2)
|
|
||||||
|
grid2.addWidget(self.stdlabel, 6, 0)
|
||||||
|
grid2.addWidget(self.slot_tooldia_entry, 6, 1)
|
||||||
|
grid2.addWidget(self.generate_milling_slots_button, 6, 2)
|
||||||
|
|
||||||
def hide_drills(self, state=True):
|
def hide_drills(self, state=True):
|
||||||
if state is True:
|
if state is True:
|
||||||
|
@ -950,6 +1035,7 @@ class GeometryObjectUI(ObjectUI):
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(GeometryObjectUI, self).__init__(title=_('Geometry Object'),
|
super(GeometryObjectUI, self).__init__(title=_('Geometry Object'),
|
||||||
icon_file='share/geometry32.png', parent=parent)
|
icon_file='share/geometry32.png', parent=parent)
|
||||||
|
self.decimals = 4
|
||||||
|
|
||||||
# Plot options
|
# Plot options
|
||||||
self.plot_options_label = QtWidgets.QLabel("<b>%s:</b>" % _("Plot Options"))
|
self.plot_options_label = QtWidgets.QLabel("<b>%s:</b>" % _("Plot Options"))
|
||||||
|
@ -1079,8 +1165,11 @@ class GeometryObjectUI(ObjectUI):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.grid1.addWidget(self.tool_offset_lbl, 0, 0)
|
self.grid1.addWidget(self.tool_offset_lbl, 0, 0)
|
||||||
self.tool_offset_entry = FloatEntry()
|
self.tool_offset_entry = FCDoubleSpinner()
|
||||||
self.tool_offset_entry.setValidator(QtGui.QDoubleValidator(-9999.9999, 9999.9999, 4))
|
self.tool_offset_entry.set_precision(self.decimals)
|
||||||
|
self.tool_offset_entry.setRange(-9999.9999, 9999.9999)
|
||||||
|
self.tool_offset_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
spacer_lbl = QtWidgets.QLabel(" ")
|
spacer_lbl = QtWidgets.QLabel(" ")
|
||||||
spacer_lbl.setMinimumWidth(80)
|
spacer_lbl.setMinimumWidth(80)
|
||||||
|
|
||||||
|
@ -1101,10 +1190,11 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"Diameter for the new tool"
|
"Diameter for the new tool"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.addtool_entry = FCEntry2()
|
self.addtool_entry = FCDoubleSpinner()
|
||||||
|
self.addtool_entry.set_precision(self.decimals)
|
||||||
|
self.addtool_entry.setRange(0.00001, 9999.9999)
|
||||||
|
self.addtool_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
# hlay.addWidget(self.addtool_label)
|
|
||||||
# hlay.addStretch()
|
|
||||||
hlay.addWidget(self.addtool_entry_lbl)
|
hlay.addWidget(self.addtool_entry_lbl)
|
||||||
hlay.addWidget(self.addtool_entry)
|
hlay.addWidget(self.addtool_entry)
|
||||||
|
|
||||||
|
@ -1173,8 +1263,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"The tip diameter for V-Shape Tool"
|
"The tip diameter for V-Shape Tool"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
self.tipdia_entry = FCDoubleSpinner()
|
||||||
|
self.tipdia_entry.set_precision(self.decimals)
|
||||||
|
self.tipdia_entry.setRange(0.00001, 9999.9999)
|
||||||
|
self.tipdia_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.tipdialabel, 1, 0)
|
self.grid3.addWidget(self.tipdialabel, 1, 0)
|
||||||
self.tipdia_entry = LengthEntry()
|
|
||||||
self.grid3.addWidget(self.tipdia_entry, 1, 1)
|
self.grid3.addWidget(self.tipdia_entry, 1, 1)
|
||||||
|
|
||||||
# Tip Angle
|
# Tip Angle
|
||||||
|
@ -1185,8 +1279,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"In degree."
|
"In degree."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
self.tipangle_entry = FCDoubleSpinner()
|
||||||
|
self.tipangle_entry.set_precision(self.decimals)
|
||||||
|
self.tipangle_entry.setRange(0.0, 180.0)
|
||||||
|
self.tipangle_entry.setSingleStep(1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.tipanglelabel, 2, 0)
|
self.grid3.addWidget(self.tipanglelabel, 2, 0)
|
||||||
self.tipangle_entry = LengthEntry()
|
|
||||||
self.grid3.addWidget(self.tipangle_entry, 2, 1)
|
self.grid3.addWidget(self.tipangle_entry, 2, 1)
|
||||||
|
|
||||||
# Cut Z
|
# Cut Z
|
||||||
|
@ -1197,8 +1295,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"below the copper surface."
|
"below the copper surface."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
self.cutz_entry = FCDoubleSpinner()
|
||||||
|
self.cutz_entry.set_precision(self.decimals)
|
||||||
|
self.cutz_entry.setRange(-9999.9999, -0.00001)
|
||||||
|
self.cutz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(cutzlabel, 3, 0)
|
self.grid3.addWidget(cutzlabel, 3, 0)
|
||||||
self.cutz_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.cutz_entry, 3, 1)
|
self.grid3.addWidget(self.cutz_entry, 3, 1)
|
||||||
|
|
||||||
# Multi-pass
|
# Multi-pass
|
||||||
|
@ -1211,30 +1313,37 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"reached."
|
"reached."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(self.mpass_cb, 4, 0)
|
|
||||||
|
|
||||||
self.maxdepth_entry = FloatEntry()
|
self.maxdepth_entry = FCDoubleSpinner()
|
||||||
|
self.maxdepth_entry.set_precision(self.decimals)
|
||||||
|
self.maxdepth_entry.setRange(0, 9999.9999)
|
||||||
|
self.maxdepth_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.maxdepth_entry.setToolTip(
|
self.maxdepth_entry.setToolTip(
|
||||||
_(
|
_(
|
||||||
"Depth of each pass (positive)."
|
"Depth of each pass (positive)."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(self.maxdepth_entry, 4, 1)
|
|
||||||
|
|
||||||
self.ois_mpass_geo = OptionalInputSection(self.mpass_cb, [self.maxdepth_entry])
|
self.ois_mpass_geo = OptionalInputSection(self.mpass_cb, [self.maxdepth_entry])
|
||||||
|
|
||||||
|
self.grid3.addWidget(self.mpass_cb, 4, 0)
|
||||||
|
self.grid3.addWidget(self.maxdepth_entry, 4, 1)
|
||||||
|
|
||||||
# Travel Z
|
# Travel Z
|
||||||
travelzlabel = QtWidgets.QLabel('%s:' % _('Travel Z'))
|
travelzlabel = QtWidgets.QLabel('%s:' % _('Travel Z'))
|
||||||
travelzlabel.setToolTip(
|
travelzlabel.setToolTip(
|
||||||
_("Height of the tool when\n"
|
_("Height of the tool when\n"
|
||||||
"moving without cutting.")
|
"moving without cutting.")
|
||||||
)
|
)
|
||||||
|
self.travelz_entry = FCDoubleSpinner()
|
||||||
|
self.travelz_entry.set_precision(self.decimals)
|
||||||
|
self.travelz_entry.setRange(0, 9999.9999)
|
||||||
|
self.travelz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(travelzlabel, 5, 0)
|
self.grid3.addWidget(travelzlabel, 5, 0)
|
||||||
self.travelz_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.travelz_entry, 5, 1)
|
self.grid3.addWidget(self.travelz_entry, 5, 1)
|
||||||
|
|
||||||
# Tool change:
|
# Tool change:
|
||||||
|
|
||||||
self.toolchzlabel = QtWidgets.QLabel('%s:' % _("Tool change Z"))
|
self.toolchzlabel = QtWidgets.QLabel('%s:' % _("Tool change Z"))
|
||||||
self.toolchzlabel.setToolTip(
|
self.toolchzlabel.setToolTip(
|
||||||
_(
|
_(
|
||||||
|
@ -1242,16 +1351,19 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"tool change."
|
"tool change."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.toolchangeg_cb = FCCheckBox('%s:' % _("Tool change"))
|
self.toolchangeg_cb = FCCheckBox('%s' % _("Tool change"))
|
||||||
self.toolchangeg_cb.setToolTip(
|
self.toolchangeg_cb.setToolTip(
|
||||||
_(
|
_(
|
||||||
"Include tool-change sequence\n"
|
"Include tool-change sequence\n"
|
||||||
"in the Machine Code (Pause for tool change)."
|
"in the Machine Code (Pause for tool change)."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.toolchangez_entry = FloatEntry()
|
self.toolchangez_entry = FCDoubleSpinner()
|
||||||
|
self.toolchangez_entry.set_precision(self.decimals)
|
||||||
|
self.toolchangez_entry.setRange(0, 9999.9999)
|
||||||
|
self.toolchangez_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.toolchangeg_cb, 6, 0)
|
self.grid3.addWidget(self.toolchangeg_cb, 6, 0, 1, 2)
|
||||||
self.grid3.addWidget(self.toolchzlabel, 7, 0)
|
self.grid3.addWidget(self.toolchzlabel, 7, 0)
|
||||||
self.grid3.addWidget(self.toolchangez_entry, 7, 1)
|
self.grid3.addWidget(self.toolchangez_entry, 7, 1)
|
||||||
self.ois_tcz_geo = OptionalInputSection(self.toolchangeg_cb, [self.toolchangez_entry])
|
self.ois_tcz_geo = OptionalInputSection(self.toolchangeg_cb, [self.toolchangez_entry])
|
||||||
|
@ -1273,8 +1385,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
_("Height of the tool after\n"
|
_("Height of the tool after\n"
|
||||||
"the last move at the end of the job.")
|
"the last move at the end of the job.")
|
||||||
)
|
)
|
||||||
|
self.gendz_entry = FCDoubleSpinner()
|
||||||
|
self.gendz_entry.set_precision(self.decimals)
|
||||||
|
self.gendz_entry.setRange(0, 9999.9999)
|
||||||
|
self.gendz_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.endzlabel, 9, 0)
|
self.grid3.addWidget(self.endzlabel, 9, 0)
|
||||||
self.gendz_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.gendz_entry, 9, 1)
|
self.grid3.addWidget(self.gendz_entry, 9, 1)
|
||||||
|
|
||||||
# Feedrate X-Y
|
# Feedrate X-Y
|
||||||
|
@ -1283,8 +1399,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
_("Cutting speed in the XY\n"
|
_("Cutting speed in the XY\n"
|
||||||
"plane in units per minute")
|
"plane in units per minute")
|
||||||
)
|
)
|
||||||
|
self.cncfeedrate_entry = FCDoubleSpinner()
|
||||||
|
self.cncfeedrate_entry.set_precision(self.decimals)
|
||||||
|
self.cncfeedrate_entry.setRange(0, 9999.9999)
|
||||||
|
self.cncfeedrate_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(frlabel, 10, 0)
|
self.grid3.addWidget(frlabel, 10, 0)
|
||||||
self.cncfeedrate_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.cncfeedrate_entry, 10, 1)
|
self.grid3.addWidget(self.cncfeedrate_entry, 10, 1)
|
||||||
|
|
||||||
# Feedrate Z (Plunge)
|
# Feedrate Z (Plunge)
|
||||||
|
@ -1294,8 +1414,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"plane in units per minute.\n"
|
"plane in units per minute.\n"
|
||||||
"It is called also Plunge.")
|
"It is called also Plunge.")
|
||||||
)
|
)
|
||||||
|
self.cncplunge_entry = FCDoubleSpinner()
|
||||||
|
self.cncplunge_entry.set_precision(self.decimals)
|
||||||
|
self.cncplunge_entry.setRange(0, 9999.9999)
|
||||||
|
self.cncplunge_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(frzlabel, 11, 0)
|
self.grid3.addWidget(frzlabel, 11, 0)
|
||||||
self.cncplunge_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.cncplunge_entry, 11, 1)
|
self.grid3.addWidget(self.cncplunge_entry, 11, 1)
|
||||||
|
|
||||||
# Feedrate rapids
|
# Feedrate rapids
|
||||||
|
@ -1307,8 +1431,12 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"It is useful only for Marlin,\n"
|
"It is useful only for Marlin,\n"
|
||||||
"ignore for any other cases.")
|
"ignore for any other cases.")
|
||||||
)
|
)
|
||||||
|
self.cncfeedrate_rapid_entry = FCDoubleSpinner()
|
||||||
|
self.cncfeedrate_rapid_entry.set_precision(self.decimals)
|
||||||
|
self.cncfeedrate_rapid_entry.setRange(0, 9999.9999)
|
||||||
|
self.cncfeedrate_rapid_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.fr_rapidlabel, 12, 0)
|
self.grid3.addWidget(self.fr_rapidlabel, 12, 0)
|
||||||
self.cncfeedrate_rapid_entry = FloatEntry()
|
|
||||||
self.grid3.addWidget(self.cncfeedrate_rapid_entry, 12, 1)
|
self.grid3.addWidget(self.cncfeedrate_rapid_entry, 12, 1)
|
||||||
# default values is to hide
|
# default values is to hide
|
||||||
self.fr_rapidlabel.hide()
|
self.fr_rapidlabel.hide()
|
||||||
|
@ -1333,8 +1461,9 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"this value is the power of laser."
|
"this value is the power of laser."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(spdlabel, 14, 0)
|
|
||||||
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
|
self.cncspindlespeed_entry = IntEntry(allow_empty=True)
|
||||||
|
|
||||||
|
self.grid3.addWidget(spdlabel, 14, 0)
|
||||||
self.grid3.addWidget(self.cncspindlespeed_entry, 14, 1)
|
self.grid3.addWidget(self.cncspindlespeed_entry, 14, 1)
|
||||||
|
|
||||||
# Dwell
|
# Dwell
|
||||||
|
@ -1345,24 +1474,29 @@ class GeometryObjectUI(ObjectUI):
|
||||||
"speed before cutting."
|
"speed before cutting."
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.dwelltime_entry = FloatEntry()
|
self.dwelltime_entry = FCDoubleSpinner()
|
||||||
|
self.dwelltime_entry.set_precision(self.decimals)
|
||||||
|
self.dwelltime_entry.setRange(0, 9999.9999)
|
||||||
|
self.dwelltime_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.dwelltime_entry.setToolTip(
|
self.dwelltime_entry.setToolTip(
|
||||||
_("Number of time units for spindle to dwell.")
|
_("Number of time units for spindle to dwell.")
|
||||||
)
|
)
|
||||||
|
self.ois_dwell_geo = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
||||||
|
|
||||||
self.grid3.addWidget(self.dwell_cb, 15, 0)
|
self.grid3.addWidget(self.dwell_cb, 15, 0)
|
||||||
self.grid3.addWidget(self.dwelltime_entry, 15, 1)
|
self.grid3.addWidget(self.dwelltime_entry, 15, 1)
|
||||||
|
|
||||||
self.ois_dwell_geo = OptionalInputSection(self.dwell_cb, [self.dwelltime_entry])
|
|
||||||
|
|
||||||
# postprocessor selection
|
# postprocessor selection
|
||||||
pp_label = QtWidgets.QLabel('%s:' % _("PostProcessor"))
|
pp_label = QtWidgets.QLabel('%s:' % _("PostProcessor"))
|
||||||
pp_label.setToolTip(
|
pp_label.setToolTip(
|
||||||
_("The Postprocessor file that dictates\n"
|
_("The Postprocessor file that dictates\n"
|
||||||
"the Machine Code (like GCode, RML, HPGL) output.")
|
"the Machine Code (like GCode, RML, HPGL) output.")
|
||||||
)
|
)
|
||||||
self.grid3.addWidget(pp_label, 16, 0)
|
|
||||||
self.pp_geometry_name_cb = FCComboBox()
|
self.pp_geometry_name_cb = FCComboBox()
|
||||||
self.pp_geometry_name_cb.setFocusPolicy(QtCore.Qt.StrongFocus)
|
self.pp_geometry_name_cb.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||||
|
|
||||||
|
self.grid3.addWidget(pp_label, 16, 0)
|
||||||
self.grid3.addWidget(self.pp_geometry_name_cb, 16, 1)
|
self.grid3.addWidget(self.pp_geometry_name_cb, 16, 1)
|
||||||
|
|
||||||
# Probe depth
|
# Probe depth
|
||||||
|
@ -1371,9 +1505,14 @@ class GeometryObjectUI(ObjectUI):
|
||||||
_("The maximum depth that the probe is allowed\n"
|
_("The maximum depth that the probe is allowed\n"
|
||||||
"to probe. Negative value, in current units.")
|
"to probe. Negative value, in current units.")
|
||||||
)
|
)
|
||||||
|
self.pdepth_entry = FCDoubleSpinner()
|
||||||
|
self.pdepth_entry.set_precision(self.decimals)
|
||||||
|
self.pdepth_entry.setRange(-9999.9999, 9999.9999)
|
||||||
|
self.pdepth_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.pdepth_label, 17, 0)
|
self.grid3.addWidget(self.pdepth_label, 17, 0)
|
||||||
self.pdepth_entry = FCEntry()
|
|
||||||
self.grid3.addWidget(self.pdepth_entry, 17, 1)
|
self.grid3.addWidget(self.pdepth_entry, 17, 1)
|
||||||
|
|
||||||
self.pdepth_label.hide()
|
self.pdepth_label.hide()
|
||||||
self.pdepth_entry.setVisible(False)
|
self.pdepth_entry.setVisible(False)
|
||||||
|
|
||||||
|
@ -1382,9 +1521,14 @@ class GeometryObjectUI(ObjectUI):
|
||||||
self.feedrate_probe_label.setToolTip(
|
self.feedrate_probe_label.setToolTip(
|
||||||
_("The feedrate used while the probe is probing.")
|
_("The feedrate used while the probe is probing.")
|
||||||
)
|
)
|
||||||
|
self.feedrate_probe_entry = FCDoubleSpinner()
|
||||||
|
self.feedrate_probe_entry.set_precision(self.decimals)
|
||||||
|
self.feedrate_probe_entry.setRange(0.0, 9999.9999)
|
||||||
|
self.feedrate_probe_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
self.grid3.addWidget(self.feedrate_probe_label, 18, 0)
|
self.grid3.addWidget(self.feedrate_probe_label, 18, 0)
|
||||||
self.feedrate_probe_entry = FCEntry()
|
|
||||||
self.grid3.addWidget(self.feedrate_probe_entry, 18, 1)
|
self.grid3.addWidget(self.feedrate_probe_entry, 18, 1)
|
||||||
|
|
||||||
self.feedrate_probe_label.hide()
|
self.feedrate_probe_label.hide()
|
||||||
self.feedrate_probe_entry.setVisible(False)
|
self.feedrate_probe_entry.setVisible(False)
|
||||||
|
|
||||||
|
@ -1437,6 +1581,7 @@ class CNCObjectUI(ObjectUI):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
ObjectUI.__init__(self, title=_('CNC Job Object'), icon_file='share/cnc32.png', parent=parent)
|
ObjectUI.__init__(self, title=_('CNC Job Object'), icon_file='share/cnc32.png', parent=parent)
|
||||||
|
self.decimals = 4
|
||||||
|
|
||||||
# Scale and offset ans skew are not available for CNCJob objects.
|
# Scale and offset ans skew are not available for CNCJob objects.
|
||||||
# Hiding from the GUI.
|
# Hiding from the GUI.
|
||||||
|
@ -1672,18 +1817,21 @@ class CNCObjectUI(ObjectUI):
|
||||||
'z_cut', 'z_move', 'z_depthpercut', 'spindlespeed', 'dwelltime']
|
'z_cut', 'z_move', 'z_depthpercut', 'spindlespeed', 'dwelltime']
|
||||||
self.tc_variable_combo.addItems(variables)
|
self.tc_variable_combo.addItems(variables)
|
||||||
self.tc_variable_combo.setItemData(0, _("FlatCAM CNC parameters"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(0, _("FlatCAM CNC parameters"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(1, _("tool = tool number"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(1, "tool = " + _("tool number"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(2, _("tooldia = tool diameter"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(2, "tooldia = " + _("tool diameter"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(3, _("t_drills = for Excellon, total number of drills"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(3, "t_drills = " + _("for Excellon, total number of drills"),
|
||||||
self.tc_variable_combo.setItemData(4, _("x_toolchange = X coord for Toolchange"), Qt.ToolTipRole)
|
Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(5, _("y_toolchange = Y coord for Toolchange"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(4, "x_toolchange = " + _("X coord for Toolchange"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(6, _("z_toolchange = Z coord for Toolchange"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(5, "y_toolchange = " + _("Y coord for Toolchange"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(7, _("z_cut = depth where to cut"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(6, "z_toolchange = " + _("Z coord for Toolchange"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(8, _("z_move = height where to travel"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(7, "z_cut = " + _("depth where to cut"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(9, _("z_depthpercut = the step value for multidepth cut"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(8, "z_move = " + _("height where to travel"), Qt.ToolTipRole)
|
||||||
self.tc_variable_combo.setItemData(10, _("spindlesspeed = the value for the spindle speed"), Qt.ToolTipRole)
|
self.tc_variable_combo.setItemData(9, "z_depthpercut = " + _("the step value for multidepth cut"),
|
||||||
self.tc_variable_combo.setItemData(11, _("dwelltime = time to dwell to allow the "
|
Qt.ToolTipRole)
|
||||||
"spindle to reach it's set RPM"),
|
self.tc_variable_combo.setItemData(10, "spindlesspeed = " + _("the value for the spindle speed"),
|
||||||
|
Qt.ToolTipRole)
|
||||||
|
self.tc_variable_combo.setItemData(11, "dwelltime = " + _("time to dwell to allow the "
|
||||||
|
"spindle to reach it's set RPM"),
|
||||||
Qt.ToolTipRole)
|
Qt.ToolTipRole)
|
||||||
|
|
||||||
cnclay.addWidget(self.toolchange_cb)
|
cnclay.addWidget(self.toolchange_cb)
|
||||||
|
|
|
@ -4205,6 +4205,7 @@ class ToolsPaintPrefGroupUI(OptionsGroupUI):
|
||||||
self.paintoverlap_entry.setWrapping(True)
|
self.paintoverlap_entry.setWrapping(True)
|
||||||
self.paintoverlap_entry.setRange(0.000, 0.999)
|
self.paintoverlap_entry.setRange(0.000, 0.999)
|
||||||
self.paintoverlap_entry.setSingleStep(0.1)
|
self.paintoverlap_entry.setSingleStep(0.1)
|
||||||
|
|
||||||
grid0.addWidget(ovlabel, 2, 0)
|
grid0.addWidget(ovlabel, 2, 0)
|
||||||
grid0.addWidget(self.paintoverlap_entry, 2, 1)
|
grid0.addWidget(self.paintoverlap_entry, 2, 1)
|
||||||
|
|
||||||
|
@ -4653,7 +4654,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
|
||||||
self.tip_angle_entry = FCDoubleSpinner()
|
self.tip_angle_entry = FCDoubleSpinner()
|
||||||
self.tip_angle_entry.set_range(0.0, 180.0)
|
self.tip_angle_entry.set_range(0.0, 180.0)
|
||||||
self.tip_angle_entry.set_precision(self.decimals)
|
self.tip_angle_entry.set_precision(self.decimals)
|
||||||
self.tip_angle_entry.setSingleStep(10)
|
self.tip_angle_entry.setSingleStep(5)
|
||||||
|
|
||||||
self.tip_angle_label = QtWidgets.QLabel('%s:' % _("Tip Angle"))
|
self.tip_angle_label = QtWidgets.QLabel('%s:' % _("Tip Angle"))
|
||||||
self.tip_angle_label.setToolTip(
|
self.tip_angle_label.setToolTip(
|
||||||
|
@ -4665,7 +4666,7 @@ class ToolsCalculatorsPrefGroupUI(OptionsGroupUI):
|
||||||
|
|
||||||
# ## Depth-of-cut Cut Z
|
# ## Depth-of-cut Cut Z
|
||||||
self.cut_z_entry = FCDoubleSpinner()
|
self.cut_z_entry = FCDoubleSpinner()
|
||||||
self.cut_z_entry.set_range(-0.000001, -9999.9999)
|
self.cut_z_entry.set_range(-9999.9999, -0.00001)
|
||||||
self.cut_z_entry.set_precision(self.decimals)
|
self.cut_z_entry.set_precision(self.decimals)
|
||||||
self.cut_z_entry.setSingleStep(0.01)
|
self.cut_z_entry.setSingleStep(0.01)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue