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
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)