From b3924df2b7f0cdb02e732d321560c7ed1ffbb5fb Mon Sep 17 00:00:00 2001 From: sliptonic Date: Fri, 1 Jul 2022 16:51:55 -0500 Subject: [PATCH] GUI panel for chipbreaking --- .../Resources/panels/PageOpDrillingEdit.ui | 183 +++++++++--------- src/Mod/Path/PathScripts/PathDrilling.py | 23 ++- src/Mod/Path/PathScripts/PathDrillingGui.py | 19 ++ 3 files changed, 135 insertions(+), 90 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui b/src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui index dbcad34842..9011c261ee 100644 --- a/src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/PageOpDrillingEdit.ui @@ -61,101 +61,106 @@ - - - - + + + + + Peck + + + + + + + false + + + Time + + + + + + + Extend Depth + + + + + + + false + + + + + + - Peck - - - - - - - false + None + + - Depth - - - - - - - false - - - - - - - false + Drill Tip + + - Retract + 2x Drill Tip - - - - - - false - - - - - - - Dwell - - - - - - - false - - - Time - - - - - - - false - - - - - - - Extend Depth - - - + + + - - - - None - - - - - Drill Tip - - - - - 2x Drill Tip - - - - - - + + + false + + + + + + + Dwell + + + + + + + false + + + Depth + + + + + + + false + + + Retract + + + + + + + false + + + + + + + Chip Break + + + + @@ -175,7 +180,7 @@ Gui::QuantitySpinBox - QDoubleSpinBox + QWidget
Gui/QuantitySpinBox.h
diff --git a/src/Mod/Path/PathScripts/PathDrilling.py b/src/Mod/Path/PathScripts/PathDrilling.py index fcb894c9ec..952f647e60 100644 --- a/src/Mod/Path/PathScripts/PathDrilling.py +++ b/src/Mod/Path/PathScripts/PathDrilling.py @@ -98,6 +98,15 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): PathOp.FeatureBaseGeometry | PathOp.FeatureLocations | PathOp.FeatureCoolant ) + def onDocumentRestored(self, obj): + if not hasattr(obj, "chipBreakEnabled"): + obj.addProperty( + "App::PropertyBool", + "chipBreakEnabled", + "Drill", + QT_TRANSLATE_NOOP("App::Property", "Use chipbreaking"), + ) + def initCircularHoleOperation(self, obj): """initCircularHoleOperation(obj) ... add drilling specific properties to obj.""" obj.addProperty( @@ -115,6 +124,12 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): "Drill", QT_TRANSLATE_NOOP("App::Property", "Enable pecking"), ) + obj.addProperty( + "App::PropertyBool", + "chipBreakEnabled", + "Drill", + QT_TRANSLATE_NOOP("App::Property", "Use chipbreaking"), + ) obj.addProperty( "App::PropertyFloat", "DwellTime", @@ -231,10 +246,16 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp): dwelltime = obj.DwellTime if obj.DwellEnabled else 0.0 peckdepth = obj.PeckDepth.Value if obj.PeckEnabled else 0.0 repeat = 1 # technical debt: Add a repeat property for user control + chipBreak = (obj.chipBreakEnabled and obj.PeckEnabled) try: drillcommands = generator.generate( - edge, dwelltime, peckdepth, repeat, obj.RetractHeight.Value + edge, + dwelltime, + peckdepth, + repeat, + obj.RetractHeight.Value, + chipBreak=chipBreak ) except ValueError as e: # any targets that fail the generator are ignored diff --git a/src/Mod/Path/PathScripts/PathDrillingGui.py b/src/Mod/Path/PathScripts/PathDrillingGui.py index 30a594231b..64c093c66e 100644 --- a/src/Mod/Path/PathScripts/PathDrillingGui.py +++ b/src/Mod/Path/PathScripts/PathDrillingGui.py @@ -57,14 +57,17 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): self.dwellTimeSpinBox = PathGui.QuantitySpinBox( self.form.dwellTime, obj, "DwellTime" ) + self.form.chipBreakEnabled.setEnabled(False) def registerSignalHandlers(self, obj): self.form.peckEnabled.toggled.connect(self.form.peckDepth.setEnabled) self.form.peckEnabled.toggled.connect(self.form.dwellEnabled.setDisabled) + self.form.peckEnabled.toggled.connect(self.setChipBreakControl) self.form.dwellEnabled.toggled.connect(self.form.dwellTime.setEnabled) self.form.dwellEnabled.toggled.connect(self.form.dwellTimelabel.setEnabled) self.form.dwellEnabled.toggled.connect(self.form.peckEnabled.setDisabled) + self.form.dwellEnabled.toggled.connect(self.setChipBreakControl) self.form.peckRetractHeight.setEnabled(True) self.form.retractLabel.setEnabled(True) @@ -73,10 +76,17 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): self.form.dwellEnabled.setEnabled(False) self.form.peckDepth.setEnabled(True) self.form.peckDepthLabel.setEnabled(True) + self.form.chipBreakEnabled.setEnabled(True) elif self.form.dwellEnabled.isChecked(): self.form.peckEnabled.setEnabled(False) self.form.dwellTime.setEnabled(True) self.form.dwellTimelabel.setEnabled(True) + self.form.chipBreakEnabled.setEnabled(False) + else: + self.form.chipBreakEnabled.setEnabled(False) + + def setChipBreakControl(self): + self.form.chipBreakEnabled.setEnabled(self.form.peckEnabled.isChecked()) def getForm(self): """getForm() ... return UI""" @@ -104,6 +114,8 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): obj.DwellEnabled = self.form.dwellEnabled.isChecked() if obj.PeckEnabled != self.form.peckEnabled.isChecked(): obj.PeckEnabled = self.form.peckEnabled.isChecked() + if obj.chipBreakEnabled != self.form.chipBreakEnabled.isChecked(): + obj.chipBreakEnabled = self.form.chipBreakEnabled.isChecked() if obj.ExtraOffset != str(self.form.ExtraOffset.currentData()): obj.ExtraOffset = str(self.form.ExtraOffset.currentData()) @@ -124,6 +136,12 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): self.form.peckEnabled.setCheckState(QtCore.Qt.Checked) else: self.form.peckEnabled.setCheckState(QtCore.Qt.Unchecked) + self.form.chipBreakEnabled.setEnabled(False) + + if obj.chipBreakEnabled: + self.form.chipBreakEnabled.setCheckState(QtCore.Qt.Checked) + else: + self.form.chipBreakEnabled.setCheckState(QtCore.Qt.Unchecked) self.selectInComboBox(obj.ExtraOffset, self.form.ExtraOffset) @@ -139,6 +157,7 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage): signals.append(self.form.dwellTime.editingFinished) signals.append(self.form.dwellEnabled.stateChanged) signals.append(self.form.peckEnabled.stateChanged) + signals.append(self.form.chipBreakEnabled.stateChanged) signals.append(self.form.toolController.currentIndexChanged) signals.append(self.form.coolantController.currentIndexChanged) signals.append(self.form.ExtraOffset.currentIndexChanged)