diff --git a/src/Mod/CAM/Gui/Resources/panels/ToolControllerEdit.ui b/src/Mod/CAM/Gui/Resources/panels/ToolControllerEdit.ui
index bbb94b24b2..9ef15f2c56 100644
--- a/src/Mod/CAM/Gui/Resources/panels/ToolControllerEdit.ui
+++ b/src/Mod/CAM/Gui/Resources/panels/ToolControllerEdit.ui
@@ -117,14 +117,14 @@
-
-
+
- Horizontal rapid
+ Lead-in feed
-
-
+
0
@@ -146,13 +146,100 @@
-
+
+
+ Lead-out feed
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 0.000000000000000
+
+
+ 9999999.000000000000000
+
+
+ mm/s
+
+
+
+ -
+
+
+ Ramp feed
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 0.000000000000000
+
+
+ 9999999.000000000000000
+
+
+ mm/s
+
+
+
+ -
+
+
+ Horizontal rapid
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 0.000000000000000
+
+
+ 9999999.000000000000000
+
+
+ mm/s
+
+
+
+ -
Vertical rapid
- -
+
-
diff --git a/src/Mod/CAM/Path/Tool/Controller.py b/src/Mod/CAM/Path/Tool/Controller.py
index 6d33c6635c..2e92112ee4 100644
--- a/src/Mod/CAM/Path/Tool/Controller.py
+++ b/src/Mod/CAM/Path/Tool/Controller.py
@@ -49,7 +49,10 @@ class ToolControllerTemplate:
HorizFeed = "hfeed"
HorizRapid = "hrapid"
Label = "label"
+ LeadInFeed = "leadinfeed"
+ LeadOutFeed = "leadoutfeed"
Name = "name"
+ RampFeed = "rampfeed"
SpindleDir = "dir"
SpindleSpeed = "speed"
ToolNumber = "nr"
@@ -314,12 +317,22 @@ class ToolController:
if template.get(ToolControllerTemplate.Version):
version = int(template.get(ToolControllerTemplate.Version))
if version == 1 or version == 2:
+ # TODO figure out the meaning of this, and how to handle ramp/leadin/leadout feed rates
+ # or what else must be added to templates
if template.get(ToolControllerTemplate.Label):
obj.Label = template.get(ToolControllerTemplate.Label)
if template.get(ToolControllerTemplate.VertFeed):
obj.VertFeed = template.get(ToolControllerTemplate.VertFeed)
if template.get(ToolControllerTemplate.HorizFeed):
obj.HorizFeed = template.get(ToolControllerTemplate.HorizFeed)
+ if template.get(ToolControllerTemplate.LeadInFeed):
+ obj.LeadInFeed = template.get(ToolControllerTemplate.LeadInFeed, obj.LeadInFeed)
+ if template.get(ToolControllerTemplate.LeadOutFeed):
+ obj.LeadOutFeed = template.get(
+ ToolControllerTemplate.LeadOutFeed, obj.LeadOutFeed
+ )
+ if template.get(ToolControllerTemplate.RampFeed):
+ obj.RampFeed = template.get(ToolControllerTemplate.RampFeed, obj.RampFeed)
if template.get(ToolControllerTemplate.VertRapid):
obj.VertRapid = template.get(ToolControllerTemplate.VertRapid)
if template.get(ToolControllerTemplate.HorizRapid):
@@ -374,6 +387,9 @@ class ToolController:
attrs[ToolControllerTemplate.ToolNumber] = obj.ToolNumber
attrs[ToolControllerTemplate.VertFeed] = "%s" % (obj.VertFeed)
attrs[ToolControllerTemplate.HorizFeed] = "%s" % (obj.HorizFeed)
+ attrs[ToolControllerTemplate.LeadInFeed] = "%s" % (obj.LeadInFeed)
+ attrs[ToolControllerTemplate.LeadOutFeed] = "%s" % (obj.LeadOutFeed)
+ attrs[ToolControllerTemplate.RampFeed] = "%s" % (obj.RampFeed)
attrs[ToolControllerTemplate.VertRapid] = "%s" % (obj.VertRapid)
attrs[ToolControllerTemplate.HorizRapid] = "%s" % (obj.HorizRapid)
attrs[ToolControllerTemplate.SpindleSpeed] = obj.SpindleSpeed
diff --git a/src/Mod/CAM/Path/Tool/Gui/Controller.py b/src/Mod/CAM/Path/Tool/Gui/Controller.py
index 146897e22a..4b2ab0b59a 100644
--- a/src/Mod/CAM/Path/Tool/Gui/Controller.py
+++ b/src/Mod/CAM/Path/Tool/Gui/Controller.py
@@ -218,6 +218,11 @@ class ToolControllerEditor(object):
PathGuiUtil.populateCombobox(self.controller, enumTups, comboToPropertyMap)
self.vertFeed = PathGuiUtil.QuantitySpinBox(self.controller.vertFeed, obj, "VertFeed")
self.horizFeed = PathGuiUtil.QuantitySpinBox(self.controller.horizFeed, obj, "HorizFeed")
+ self.leadInFeed = PathGuiUtil.QuantitySpinBox(self.controller.horizFeed, obj, "LeadInFeed")
+ self.leadOutFeed = PathGuiUtil.QuantitySpinBox(
+ self.controller.horizFeed, obj, "LeadOutFeed"
+ )
+ self.rampFeed = PathGuiUtil.QuantitySpinBox(self.controller.horizFeed, obj, "RampFeed")
self.vertRapid = PathGuiUtil.QuantitySpinBox(self.controller.vertRapid, obj, "VertRapid")
self.horizRapid = PathGuiUtil.QuantitySpinBox(self.controller.horizRapid, obj, "HorizRapid")
@@ -260,6 +265,9 @@ class ToolControllerEditor(object):
self.controller.tcNumber,
self.horizFeed.widget,
self.horizRapid.widget,
+ self.leadInFeed.widget,
+ self.leadOutFeed.widget,
+ self.rampFeed.widget,
self.vertFeed.widget,
self.vertRapid.widget,
self.controller.spindleSpeed,
@@ -273,6 +281,9 @@ class ToolControllerEditor(object):
self.controller.tcNumber.setValue(tc.ToolNumber)
self.horizFeed.updateWidget()
self.horizRapid.updateWidget()
+ self.leadInFeed.updateWidget()
+ self.leadOutFeed.updateWidget()
+ self.rampFeed.updateWidget()
self.vertFeed.updateWidget()
self.vertRapid.updateWidget()
self.controller.spindleSpeed.setValue(tc.SpindleSpeed)
@@ -292,6 +303,9 @@ class ToolControllerEditor(object):
tc.ToolNumber = self.controller.tcNumber.value()
self.horizFeed.updateProperty()
self.vertFeed.updateProperty()
+ self.leadInFeed.updateProperty()
+ self.leadOutFeed.updateProperty()
+ self.rampFeed.updateProperty()
self.horizRapid.updateProperty()
self.vertRapid.updateProperty()
tc.SpindleSpeed = self.controller.spindleSpeed.value()
@@ -323,6 +337,9 @@ class ToolControllerEditor(object):
self.controller.tcNumber.editingFinished.connect(self.changed)
self.vertFeed.widget.textChanged.connect(self.changed)
self.horizFeed.widget.textChanged.connect(self.changed)
+ self.leadInFeed.widget.textChanged.connect(self.changed)
+ self.leadOutFeed.widget.textChanged.connect(self.changed)
+ self.rampFeed.widget.textChanged.connect(self.changed)
self.vertRapid.widget.textChanged.connect(self.changed)
self.horizRapid.widget.textChanged.connect(self.changed)
self.controller.spindleSpeed.editingFinished.connect(self.changed)