Merge pull request #11851 from Syres916/Path_Unit_Schema_Check

[Path] Move Units Schema check from system level to document level
This commit is contained in:
sliptonic
2024-01-01 12:23:32 -06:00
committed by GitHub
2 changed files with 28 additions and 24 deletions

View File

@@ -267,30 +267,6 @@ class PathWorkbench(Workbench):
)
Log("Loading Path workbench... done\n")
# Warn user if current schema doesn't use minute for time in velocity
if not Path.Preferences.suppressVelocity():
velString = FreeCAD.Units.Quantity(
1, FreeCAD.Units.Velocity
).getUserPreferred()[2][3:]
if velString != "min":
current_schema = FreeCAD.Units.listSchemas(FreeCAD.Units.getSchema())
msg = translate(
"Path",
"The currently selected unit schema: \n '{}'\n Does not use 'minutes' for velocity values. \n \nCNC machines require feed rate to be expressed in \nunit/minute. To ensure correct G-code: \nSelect a minute-based schema in preferences.\nFor example:\n 'Metric, Small Parts & CNC'\n 'US Customary'\n 'Imperial Decimal'",
).format(current_schema)
header = translate("Path", "Warning")
msgbox = QtGui.QMessageBox(QtGui.QMessageBox.Warning, header, msg)
msgbox.addButton(translate("Path", "Ok"), QtGui.QMessageBox.AcceptRole)
msgbox.addButton(
translate("Path", "Don't Show This Anymore"),
QtGui.QMessageBox.ActionRole,
)
if msgbox.exec_() == 1:
preferences().SetBool("WarningSuppressVelocity", True)
def GetClassName(self):
return "Gui::PythonWorkbench"

View File

@@ -56,6 +56,34 @@ class JobCreate:
DataObject = QtCore.Qt.ItemDataRole.UserRole
def __init__(self, parent=None, sel=None):
# Warn user if current schema doesn't use minute for time in velocity
if not Path.Preferences.suppressVelocity():
schemes = FreeCAD.Units.listSchemas()
for idx, val in enumerate(schemes):
if FreeCAD.ActiveDocument.UnitSystem == FreeCAD.Units.listSchemas(idx):
current_schema = FreeCAD.Units.listSchemas(idx)
if idx not in [2, 3, 6]:
msg = translate(
"Path",
"The currently selected unit schema: \n '{}' for this document\n Does not use 'minutes' for velocity values. \n \nCNC machines require feed rate to be expressed in \nunit/minute. To ensure correct G-code: \nSelect a minute-based schema in preferences.\nFor example:\n 'Metric, Small Parts & CNC'\n 'US Customary'\n 'Imperial Decimal'",
).format(current_schema)
header = translate("Path", "Warning")
msgbox = QtGui.QMessageBox(
QtGui.QMessageBox.Warning, header, msg
)
msgbox.addButton(
translate("Path", "Ok"), QtGui.QMessageBox.AcceptRole
)
msgbox.addButton(
translate("Path", "Don't Show This Anymore"),
QtGui.QMessageBox.ActionRole,
)
if msgbox.exec_() == 1:
from Path.Preferences import preferences
preferences().SetBool("WarningSuppressVelocity", True)
self.dialog = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobCreate.ui")
self.itemsSolid = QtGui.QStandardItem(translate("Path_Job", "Solids"))
self.items2D = QtGui.QStandardItem(translate("Path_Job", "2D"))