- added in CNCJob preferences new preferences that allow compensation for the CNC bed skew/tilt (axes not being square one to another)

- all pre-processors are altered such they can adjust the gcode to use the compensation values set in Preferences -> CNC-Job section
This commit is contained in:
Marius Stanciu
2022-01-09 19:44:56 +02:00
committed by Marius
parent 9d9bfa8b03
commit e219562bbb
30 changed files with 474 additions and 45 deletions

View File

@@ -275,6 +275,14 @@ class PreferencesUIManager:
"cncjob_annotation_fontsize": self.ui.cncjob_pref_form.cncjob_adv_opt_group.annotation_fontsize_sp,
"cncjob_annotation_fontcolor": self.ui.cncjob_pref_form.cncjob_adv_opt_group.annotation_fontcolor_entry,
# CNC Job Preprocessors Options
"cncjob_bed_max_x": self.ui.cncjob_pref_form.cncjob_pp_group.bed_max_x_entry,
"cncjob_bed_max_y": self.ui.cncjob_pref_form.cncjob_pp_group.bed_max_y_entry,
"cncjob_bed_offset_x": self.ui.cncjob_pref_form.cncjob_pp_group.bed_offx_entry,
"cncjob_bed_offset_y": self.ui.cncjob_pref_form.cncjob_pp_group.bed_offy_entry,
"cncjob_bed_skew_x": self.ui.cncjob_pref_form.cncjob_pp_group.bed_skewx_entry,
"cncjob_bed_skew_y": self.ui.cncjob_pref_form.cncjob_pp_group.bed_skewy_entry,
# CNC Job (GCode) Editor
"cncjob_prepend": self.ui.cncjob_pref_form.cncjob_editor_group.prepend_text,
"cncjob_append": self.ui.cncjob_pref_form.cncjob_editor_group.append_text,

View File

@@ -0,0 +1,109 @@
from PyQt6 import QtWidgets
from appGUI.GUIElements import FCDoubleSpinner, FCLabel, FCGridLayout, 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 CNCJobPPGroupUI(OptionsGroupUI):
def __init__(self, defaults, decimals=4, parent=None):
super(CNCJobPPGroupUI, self).__init__(self, parent=parent)
self.decimals = decimals
self.defaults = defaults
self.setTitle(str(_("Pre-Processors")))
# #############################################################################################################
# PARAMETERS Frame
# #############################################################################################################
self.comp_gcode_label = FCLabel('<span style="color:blue;"><b>%s</b></span>' % _("Compensation"))
self.comp_gcode_label.setToolTip(
_("Compensate CNC bed issues.")
)
self.layout.addWidget(self.comp_gcode_label)
comp_frame = FCFrame()
self.layout.addWidget(comp_frame)
comp_grid = FCGridLayout(v_spacing=5, h_spacing=3)
comp_frame.setLayout(comp_grid)
# Bed Size X
self.bed_max_x_lbl = FCLabel('%s %s:' % (_("Bed Size"), "X"))
self.bed_max_x_lbl.setToolTip(
'%s: X' % _("CNC bed size on direction")
)
self.bed_max_x_entry = FCDoubleSpinner()
self.bed_max_x_entry.set_range(-9999.9999, 9999.9999)
self.bed_max_x_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_max_x_lbl, 0, 0)
comp_grid.addWidget(self.bed_max_x_entry, 0, 1)
# Bed Size Y
self.bed_max_y_lbl = FCLabel('%s %s:' % (_("Bed Size"), "Y"))
self.bed_max_y_lbl.setToolTip(
'%s: Y' % _("CNC bed size on direction")
)
self.bed_max_y_entry = FCDoubleSpinner()
self.bed_max_y_entry.set_range(-9999.9999, 9999.9999)
self.bed_max_y_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_max_y_lbl, 2, 0)
comp_grid.addWidget(self.bed_max_y_entry, 2, 1)
# Bed Offset X
self.bed_offx_lbl = FCLabel('%s %s:' % (_("Bed Offset"), "X"))
self.bed_offx_lbl.setToolTip(
'%s: X' % _("CNC bed offset on direction")
)
self.bed_offx_entry = FCDoubleSpinner()
self.bed_offx_entry.set_range(-9999.9999, 9999.9999)
self.bed_offx_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_offx_lbl, 4, 0)
comp_grid.addWidget(self.bed_offx_entry, 4, 1)
# Bed Offset Y
self.bed_offy_lbl = FCLabel('%s %s:' % (_("Bed Offset"), "Y"))
self.bed_offy_lbl.setToolTip(
'%s: Y' % _("CNC bed offset on direction")
)
self.bed_offy_entry = FCDoubleSpinner()
self.bed_offy_entry.set_range(-9999.9999, 9999.9999)
self.bed_offy_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_offy_lbl, 6, 0)
comp_grid.addWidget(self.bed_offy_entry, 6, 1)
# Bed Skew X
self.bed_skewx_lbl = FCLabel('%s %s:' % (_("Bed Skew"), "X"))
self.bed_skewx_lbl.setToolTip(
'%s: X' % _("CNC bed skew on direction")
)
self.bed_skewx_entry = FCDoubleSpinner()
self.bed_skewx_entry.set_range(-9999.9999, 9999.9999)
self.bed_skewx_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_skewx_lbl, 8, 0)
comp_grid.addWidget(self.bed_skewx_entry, 8, 1)
# Bed Skew Y
self.bed_skewy_lbl = FCLabel('%s %s:' % (_("Bed Skew"), "Y"))
self.bed_skewy_lbl.setToolTip(
'%s: Y' % _("CNC bed skew on direction")
)
self.bed_skewy_entry = FCDoubleSpinner()
self.bed_skewy_entry.set_range(-9999.9999, 9999.9999)
self.bed_skewy_entry.set_precision(self.decimals)
comp_grid.addWidget(self.bed_skewy_lbl, 10, 0)
comp_grid.addWidget(self.bed_skewy_entry, 10, 1)
self.layout.addStretch(1)

View File

@@ -4,7 +4,7 @@ from appGUI.preferences.cncjob.CNCJobAdvOptPrefGroupUI import CNCJobAdvOptPrefGr
from appGUI.preferences.cncjob.CNCJobOptPrefGroupUI import CNCJobOptPrefGroupUI
from appGUI.preferences.cncjob.CNCJobGenPrefGroupUI import CNCJobGenPrefGroupUI
from appGUI.preferences.cncjob.CNCJobEditorPrefGroupUI import CNCJobEditorPrefGroupUI
from appGUI.preferences.cncjob.CNCJobPPGroupUI import CNCJobPPGroupUI
class CNCJobPreferencesUI(QtWidgets.QWidget):
@@ -26,9 +26,13 @@ class CNCJobPreferencesUI(QtWidgets.QWidget):
self.cncjob_editor_group = CNCJobEditorPrefGroupUI(decimals=self.decimals, defaults=self.defaults)
self.cncjob_editor_group.setMinimumWidth(260)
self.cncjob_pp_group = CNCJobPPGroupUI(decimals=self.decimals, defaults=self.defaults)
self.cncjob_pp_group.setMinimumWidth(260)
vlay = QtWidgets.QVBoxLayout()
vlay.addWidget(self.cncjob_opt_group)
vlay.addWidget(self.cncjob_adv_opt_group)
vlay.addWidget(self.cncjob_pp_group)
self.layout.addWidget(self.cncjob_gen_group)
self.layout.addLayout(vlay)