diff --git a/src/Mod/Path/PathScripts/PathSetupSheet.py b/src/Mod/Path/PathScripts/PathSetupSheet.py index 3363914c0f16..434aebf39bae 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheet.py +++ b/src/Mod/Path/PathScripts/PathSetupSheet.py @@ -52,6 +52,7 @@ class Template: HorizRapid = 'HorizRapid' VertRapid = 'VertRapid' + CoolantMode = 'CoolantMode' SafeHeightOffset = 'SafeHeightOffset' SafeHeightExpression = 'SafeHeightExpression' ClearanceHeightOffset = 'ClearanceHeightOffset' @@ -60,7 +61,7 @@ class Template: FinalDepthExpression = 'FinalDepthExpression' StepDownExpression = 'StepDownExpression' - All = [HorizRapid, VertRapid, SafeHeightOffset, SafeHeightExpression, ClearanceHeightOffset, ClearanceHeightExpression, StartDepthExpression, FinalDepthExpression, StepDownExpression] + All = [HorizRapid, VertRapid, CoolantMode, SafeHeightOffset, SafeHeightExpression, ClearanceHeightOffset, ClearanceHeightExpression, StartDepthExpression, FinalDepthExpression, StepDownExpression] def _traverseTemplateAttributes(attrs, codec): @@ -86,7 +87,7 @@ class SetupSheet: TemplateReference = '${SetupSheet}' DefaultSafeHeightOffset = '3 mm' - DefaultClearanceHeightOffset = '5 mm' + DefaultClearanceHeightOffset = '5 mm' DefaultSafeHeightExpression = "OpStockZMax+${SetupSheet}.SafeHeightOffset" DefaultClearanceHeightExpression = "OpStockZMax+${SetupSheet}.ClearanceHeightOffset" @@ -94,11 +95,16 @@ class SetupSheet: DefaultFinalDepthExpression = 'OpFinalDepth' DefaultStepDownExpression = 'OpToolDiameter' + DefaultCoolantModes = ['None', 'Flood', 'Mist'] + def __init__(self, obj): self.obj = obj obj.addProperty('App::PropertySpeed', 'VertRapid', 'ToolController', translate('PathSetupSheet', 'Default speed for horizontal rapid moves.')) obj.addProperty('App::PropertySpeed', 'HorizRapid', 'ToolController', translate('PathSetupSheet', 'Default speed for vertical rapid moves.')) + obj.addProperty('App::PropertyStringList', 'CoolantModes', 'CoolantMode', translate('PathSetupSheet', 'Coolant Modes')) + obj.addProperty('App::PropertyEnumeration', 'CoolantMode', 'CoolantMode', translate('PathSetupSheet', 'Default coolant mode.')) + obj.addProperty('App::PropertyLength', 'SafeHeightOffset', 'OperationHeights', translate('PathSetupSheet', 'The usage of this field depends on SafeHeightExpression - by default its value is added to StartDepth and used for SafeHeight of an operation.')) obj.addProperty('App::PropertyString', 'SafeHeightExpression', 'OperationHeights', translate('PathSetupSheet', 'Expression set for the SafeHeight of new operations.')) obj.addProperty('App::PropertyLength', 'ClearanceHeightOffset', 'OperationHeights', translate('PathSetupSheet', 'The usage of this field depends on ClearanceHeightExpression - by default is value is added to StartDepth and used for ClearanceHeight of an operation.')) @@ -117,6 +123,9 @@ def __init__(self, obj): obj.FinalDepthExpression = self.decodeAttributeString(self.DefaultFinalDepthExpression) obj.StepDownExpression = self.decodeAttributeString(self.DefaultStepDownExpression) + obj.CoolantModes = self.DefaultCoolantModes + obj.CoolantMode = self.DefaultCoolantModes + obj.Proxy = self def __getstate__(self): @@ -171,7 +180,7 @@ def setFromTemplate(self, attrs): prop.setupProperty(self.obj, propertyName, propertyGroup, prop.valueFromString(value)) - def templateAttributes(self, includeRapids=True, includeHeights=True, includeDepths=True, includeOps=None): + def templateAttributes(self, includeRapids=True, includeCoolantMode=True, includeHeights=True, includeDepths=True, includeOps=None): '''templateAttributes(includeRapids, includeHeights, includeDepths) ... answers a dictionary with the default values.''' attrs = {} @@ -179,6 +188,9 @@ def templateAttributes(self, includeRapids=True, includeHeights=True, includeDep attrs[Template.VertRapid] = self.obj.VertRapid.UserString attrs[Template.HorizRapid] = self.obj.HorizRapid.UserString + if includeCoolantMode: + attrs[Template.CoolantMode] = self.obj.CoolantMode.UserString + if includeHeights: attrs[Template.SafeHeightOffset] = self.obj.SafeHeightOffset.UserString attrs[Template.SafeHeightExpression] = self.obj.SafeHeightExpression @@ -265,6 +277,17 @@ def setOperationProperties(self, obj, opName): PathLog.info("SetupSheet has no support for {}".format(opName)) #traceback.print_exc() + def onDocumentRestored(self, obj): + + if not hasattr(obj, 'CoolantModes'): + obj.addProperty('App::PropertyStringList', 'CoolantModes', 'CoolantMode', translate('PathSetupSheet', 'Coolant Modes')) + obj.CoolantModes = self.DefaultCoolantModes + + + if not hasattr(obj, 'CoolantMode'): + obj.addProperty('App::PropertyEnumeration', 'CoolantMode', 'CoolantMode', translate('PathSetupSheet', 'Default coolant mode.')) + obj.CoolantMode = self.DefaultCoolantModes + def Create(name = 'SetupSheet'): obj = FreeCAD.ActiveDocument.addObject('App::FeaturePython', name) obj.Proxy = SetupSheet(obj) diff --git a/src/Mod/Path/PathScripts/PathSetupSheetGui.py b/src/Mod/Path/PathScripts/PathSetupSheetGui.py index 44bbb4a140e5..1537f870c267 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheetGui.py +++ b/src/Mod/Path/PathScripts/PathSetupSheetGui.py @@ -295,6 +295,7 @@ def __init__(self, obj, form): self.safeHeightOffs = None self.rapidHorizontal = None self.rapidVertical = None + #self.coolantMode = None def reject(self): pass @@ -318,6 +319,16 @@ def updateExpression(name, widget): self.safeHeightOffs.updateProperty() self.rapidVertical.updateProperty() self.rapidHorizontal.updateProperty() + #self.coolantMode.updateProperty() + self.obj.CoolantMode = self.form.setupCoolantMode.currentText() + + def selectInComboBox(self, name, combo): + '''selectInComboBox(name, combo) ... helper function to select a specific value in a combo box.''' + index = combo.findText(name, QtCore.Qt.MatchFixedString) + if index >= 0: + combo.blockSignals(True) + combo.setCurrentIndex(index) + combo.blockSignals(False) def updateUI(self): PathLog.track() @@ -330,6 +341,7 @@ def updateUI(self): self.safeHeightOffs.updateSpinBox() self.rapidVertical.updateSpinBox() self.rapidHorizontal.updateSpinBox() + self.selectInComboBox(self.obj.CoolantMode, self.form.setupCoolantMode) def updateModel(self, recomp = True): PathLog.track() @@ -346,6 +358,7 @@ def setupUi(self): self.safeHeightOffs = PathGui.QuantitySpinBox(self.form.setupSafeHeightOffs, self.obj, 'SafeHeightOffset') self.rapidHorizontal = PathGui.QuantitySpinBox(self.form.setupRapidHorizontal, self.obj, 'HorizRapid') self.rapidVertical = PathGui.QuantitySpinBox(self.form.setupRapidVertical, self.obj, 'VertRapid') + self.form.setupCoolantMode.addItems(self.obj.CoolantModes) self.setFields() class TaskPanel: