From e464cdb73d98e84d1c03238e2fd77cfffcbe893f Mon Sep 17 00:00:00 2001 From: David Kaufman Date: Thu, 4 Sep 2025 22:06:18 -0400 Subject: [PATCH] WIP update tool controller UI --- .../Resources/panels/ToolControllerEdit.ui | 95 ++++++++++++++++++- src/Mod/CAM/Path/Tool/Controller.py | 16 ++++ src/Mod/CAM/Path/Tool/Gui/Controller.py | 17 ++++ 3 files changed, 124 insertions(+), 4 deletions(-) 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)