Files
flatcam-wsl/appGUI/preferences/tools/ToolsSolderpastePrefGroupUI.py
Marius Stanciu 0caa2c97f6 - in SolderPaste Plugin fixed an issue where the new parameter 'margin' was taken from the current UI and applied to all tools (nozzles); now each nozzle use his 'margin' parameter
- in SolderPaste Plugin make sure that the preprocessor is set the same for all tools (nozzles) whenever is modified
- added 2 new preprocessor files for the SolderPaste Plugin (GRBL and MARLIN)
- in SolderPaste Plugin made sure that the start GCode is not added for each nozzle but only once at start
- in SolderPaste Plugin added a new parameter: 'Feedrate Rapids' which will set the feedrate for the fast moves as opposed with the previously used G0 command. This allows to fine tune the fast moves to reduce the vibrations
2022-04-25 00:01:11 +03:00

282 lines
11 KiB
Python

from PyQt6 import QtCore
from appGUI.GUIElements import FCDoubleSpinner, FCSpinner, FCComboBox, NumericalEvalTupleEntry, FCLabel, GLay, \
FCFrame
from appGUI.preferences.OptionsGroupUI import OptionsGroupUI
import gettext
import appTranslation as fcTranslate
import builtins
fcTranslate.apply_language('strings')
if '_' not in builtins.__dict__:
_ = gettext.gettext
class ToolsSolderpastePrefGroupUI(OptionsGroupUI):
def __init__(self, app, parent=None):
super(ToolsSolderpastePrefGroupUI, self).__init__(self, parent=parent)
self.setTitle(str(_("SolderPaste Plugin")))
self.decimals = app.decimals
self.options = app.options
# #############################################################################################################
# PARAMETERS Frame
# #############################################################################################################
self.solderpastelabel = FCLabel('%s' % _("Parameters"), color='blue', bold=True)
self.solderpastelabel.setToolTip(
_("A tool to create GCode for dispensing\n"
"solder paste onto a PCB.")
)
self.layout.addWidget(self.solderpastelabel)
param_frame = FCFrame()
self.layout.addWidget(param_frame)
param_grid = GLay(v_spacing=5, h_spacing=3)
param_frame.setLayout(param_grid)
# Nozzle Tool Diameters
nozzletdlabel = FCLabel('%s:' % _('Tools Dia'), color='green', bold=True)
nozzletdlabel.setToolTip(
_("Diameters of the tools, separated by comma.\n"
"The value of the diameter has to use the dot decimals separator.\n"
"Valid values: 0.3, 1.0")
)
self.nozzle_tool_dia_entry = NumericalEvalTupleEntry(border_color='#0069A9')
param_grid.addWidget(nozzletdlabel, 0, 0)
param_grid.addWidget(self.nozzle_tool_dia_entry, 0, 1)
# New Nozzle Tool Dia
self.addtool_entry_lbl = FCLabel('%s:' % _('New Nozzle Dia'), bold=True)
self.addtool_entry_lbl.setToolTip(
_("Diameter for the new tool to add in the Tool Table")
)
self.addtool_entry = FCDoubleSpinner()
self.addtool_entry.set_precision(self.decimals)
self.addtool_entry.set_range(0.0000001, 10000.0000)
self.addtool_entry.setSingleStep(0.1)
param_grid.addWidget(self.addtool_entry_lbl, 2, 0)
param_grid.addWidget(self.addtool_entry, 2, 1)
# Margin
self.margin_label = FCLabel('%s:' % _("Margin"))
self.margin_label.setToolTip('%s %s' % (
_("Offset from the boundary."),
_("Fraction of tool diameter.")
)
)
self.margin_entry = FCDoubleSpinner(suffix='%')
self.margin_entry.set_range(-100.0000, 100.0000)
self.margin_entry.set_precision(self.decimals)
self.margin_entry.setSingleStep(0.1)
param_grid.addWidget(self.margin_label, 4, 0)
param_grid.addWidget(self.margin_entry, 4, 1)
# Z dispense start
self.z_start_entry = FCDoubleSpinner()
self.z_start_entry.set_precision(self.decimals)
self.z_start_entry.set_range(0.0000001, 10000.0000)
self.z_start_entry.setSingleStep(0.1)
self.z_start_label = FCLabel('%s:' % _("Z Dispense Start"))
self.z_start_label.setToolTip(
_("The height (Z) when solder paste dispensing starts.")
)
param_grid.addWidget(self.z_start_label, 6, 0)
param_grid.addWidget(self.z_start_entry, 6, 1)
# Z dispense
self.z_dispense_entry = FCDoubleSpinner()
self.z_dispense_entry.set_precision(self.decimals)
self.z_dispense_entry.set_range(0.0000001, 10000.0000)
self.z_dispense_entry.setSingleStep(0.1)
self.z_dispense_label = FCLabel('%s:' % _("Z Dispense"))
self.z_dispense_label.setToolTip(
_("The height (Z) when doing solder paste dispensing.")
)
param_grid.addWidget(self.z_dispense_label, 8, 0)
param_grid.addWidget(self.z_dispense_entry, 8, 1)
# Z dispense stop
self.z_stop_entry = FCDoubleSpinner()
self.z_stop_entry.set_precision(self.decimals)
self.z_stop_entry.set_range(0.0000001, 10000.0000)
self.z_stop_entry.setSingleStep(0.1)
self.z_stop_label = FCLabel('%s:' % _("Z Dispense Stop"))
self.z_stop_label.setToolTip(
_("The height (Z) when solder paste dispensing stops.")
)
param_grid.addWidget(self.z_stop_label, 10, 0)
param_grid.addWidget(self.z_stop_entry, 10, 1)
# Z travel
self.z_travel_entry = FCDoubleSpinner()
self.z_travel_entry.set_precision(self.decimals)
self.z_travel_entry.set_range(0.0000001, 10000.0000)
self.z_travel_entry.setSingleStep(0.1)
self.z_travel_label = FCLabel('%s:' % _("Z Travel"))
self.z_travel_label.setToolTip(
_("The height (Z) for travel between pads\n"
"(without dispensing solder paste).")
)
param_grid.addWidget(self.z_travel_label, 12, 0)
param_grid.addWidget(self.z_travel_entry, 12, 1)
# Z toolchange location
self.z_toolchange_entry = FCDoubleSpinner()
self.z_toolchange_entry.set_precision(self.decimals)
self.z_toolchange_entry.set_range(0.0000001, 10000.0000)
self.z_toolchange_entry.setSingleStep(0.1)
self.z_toolchange_label = FCLabel('%s:' % _("Z Toolchange"))
self.z_toolchange_label.setToolTip(
_("The height (Z) for tool (nozzle) change.")
)
param_grid.addWidget(self.z_toolchange_label, 14, 0)
param_grid.addWidget(self.z_toolchange_entry, 14, 1)
# X,Y Toolchange location
self.xy_toolchange_entry = NumericalEvalTupleEntry(border_color='#0069A9')
self.xy_toolchange_label = FCLabel('%s:' % _("Toolchange X-Y"))
self.xy_toolchange_label.setToolTip(
_("The X,Y location for tool (nozzle) change.\n"
"The format is (x, y) where x and y are real numbers.")
)
param_grid.addWidget(self.xy_toolchange_label, 16, 0)
param_grid.addWidget(self.xy_toolchange_entry, 16, 1)
# Feedrate X-Y
self.frxy_entry = FCDoubleSpinner()
self.frxy_entry.set_precision(self.decimals)
self.frxy_entry.set_range(0.0000001, 910000.0000)
self.frxy_entry.setSingleStep(0.1)
self.frxy_label = FCLabel('%s:' % _("Feedrate X-Y"))
self.frxy_label.setToolTip(
_("Feedrate (speed) while moving on the X-Y plane.")
)
param_grid.addWidget(self.frxy_label, 18, 0)
param_grid.addWidget(self.frxy_entry, 18, 1)
# Feedrate Rapids
self.frapids_lbl = FCLabel('%s:' % _("Feedrate Rapids"))
self.frapids_lbl.setToolTip(
_("Feedrate while moving as fast as possible.")
)
self.fr_rapids_entry = FCDoubleSpinner()
self.fr_rapids_entry.set_range(0.0000, 10000.0000)
self.fr_rapids_entry.set_precision(self.decimals)
self.fr_rapids_entry.setSingleStep(0.1)
param_grid.addWidget(self.frapids_lbl, 20, 0)
param_grid.addWidget(self.fr_rapids_entry, 20, 1)
# Feedrate Z
self.frz_entry = FCDoubleSpinner()
self.frz_entry.set_precision(self.decimals)
self.frz_entry.set_range(0.0000001, 910000.0000)
self.frz_entry.setSingleStep(0.1)
self.frz_label = FCLabel('%s:' % _("Feedrate Z"))
self.frz_label.setToolTip(
_("Feedrate (speed) while moving vertically\n"
"(on Z plane).")
)
param_grid.addWidget(self.frz_label, 22, 0)
param_grid.addWidget(self.frz_entry, 22, 1)
# Feedrate Z Dispense
self.frz_dispense_entry = FCDoubleSpinner()
self.frz_dispense_entry.set_precision(self.decimals)
self.frz_dispense_entry.set_range(0.0000001, 910000.0000)
self.frz_dispense_entry.setSingleStep(0.1)
self.frz_dispense_label = FCLabel('%s:' % _("Feedrate Z Dispense"))
self.frz_dispense_label.setToolTip(
_("Feedrate (speed) while moving up vertically\n"
"to Dispense position (on Z plane).")
)
param_grid.addWidget(self.frz_dispense_label, 24, 0)
param_grid.addWidget(self.frz_dispense_entry, 24, 1)
# Spindle Speed Forward
self.speedfwd_entry = FCSpinner()
self.speedfwd_entry.set_range(0, 99999)
self.speedfwd_entry.set_step(1000)
self.speedfwd_label = FCLabel('%s:' % _("Spindle Speed FWD"))
self.speedfwd_label.setToolTip(
_("The dispenser speed while pushing solder paste\n"
"through the dispenser nozzle.")
)
param_grid.addWidget(self.speedfwd_label, 26, 0)
param_grid.addWidget(self.speedfwd_entry, 26, 1)
# Dwell Forward
self.dwellfwd_entry = FCDoubleSpinner()
self.dwellfwd_entry.set_precision(self.decimals)
self.dwellfwd_entry.set_range(0.0000, 10000.0000)
self.dwellfwd_entry.setSingleStep(0.1)
self.dwellfwd_label = FCLabel('%s:' % _("Dwell FWD"))
self.dwellfwd_label.setToolTip(
_("Pause after solder dispensing.")
)
param_grid.addWidget(self.dwellfwd_label, 28, 0)
param_grid.addWidget(self.dwellfwd_entry, 28, 1)
# Spindle Speed Reverse
self.speedrev_entry = FCSpinner()
self.speedrev_entry.set_range(0, 1000000)
self.speedrev_entry.set_step(1000)
self.speedrev_label = FCLabel('%s:' % _("Spindle Speed REV"))
self.speedrev_label.setToolTip(
_("The dispenser speed while retracting solder paste\n"
"through the dispenser nozzle.")
)
param_grid.addWidget(self.speedrev_label, 30, 0)
param_grid.addWidget(self.speedrev_entry, 30, 1)
# Dwell Reverse
self.dwellrev_entry = FCDoubleSpinner()
self.dwellrev_entry.set_precision(self.decimals)
self.dwellrev_entry.set_range(0.0000, 10000.0000)
self.dwellrev_entry.setSingleStep(0.1)
self.dwellrev_label = FCLabel('%s:' % _("Dwell REV"))
self.dwellrev_label.setToolTip(
_("Pause after solder paste dispenser retracted,\n"
"to allow pressure equilibrium.")
)
param_grid.addWidget(self.dwellrev_label, 32, 0)
param_grid.addWidget(self.dwellrev_entry, 32, 1)
# Preprocessors
pp_label = FCLabel('%s:' % _('Preprocessor'))
pp_label.setToolTip(
_("Files that control the GCode generation.")
)
self.pp_combo = FCComboBox()
self.pp_combo.addItems(self.options["tools_solderpaste_preprocessor_list"])
# add ToolTips for the Preprocessor ComboBoxes in Preferences
for it in range(self.pp_combo.count()):
self.pp_combo.setItemData(it, self.pp_combo.itemText(it), QtCore.Qt.ItemDataRole.ToolTipRole)
param_grid.addWidget(pp_label, 34, 0)
param_grid.addWidget(self.pp_combo, 34, 1)
self.layout.addStretch(1)