From 2688f06dd1e243cb8a47482611e7ea28eff4ebc7 Mon Sep 17 00:00:00 2001 From: Balazs Nagy Date: Sun, 22 Jun 2025 16:18:07 +0200 Subject: [PATCH] find job in parent chain (#21742) --- src/Mod/CAM/PathScripts/PathUtilsGui.py | 50 +++++++++++++------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/Mod/CAM/PathScripts/PathUtilsGui.py b/src/Mod/CAM/PathScripts/PathUtilsGui.py index d2e9b3ed77..b73dbe350b 100644 --- a/src/Mod/CAM/PathScripts/PathUtilsGui.py +++ b/src/Mod/CAM/PathScripts/PathUtilsGui.py @@ -63,36 +63,38 @@ class PathUtilsUserInput(object): def chooseJob(self, jobs): job = None selected = FreeCADGui.Selection.getSelection() - if 1 == len(selected) and selected[0] in jobs: - job = selected[0] + if 1 == len(selected): + found = PathUtils.findParentJob(selected[0]) + if found: + return found + + modelSelected = [] + for job in jobs: + if all([o in job.Model.Group for o in selected]): + modelSelected.append(job) + if 1 == len(modelSelected): + job = modelSelected[0] else: - modelSelected = [] + modelObjectSelected = [] for job in jobs: - if all([o in job.Model.Group for o in selected]): - modelSelected.append(job) - if 1 == len(modelSelected): - job = modelSelected[0] + if all([o in job.Proxy.baseObjects(job) for o in selected]): + modelObjectSelected.append(job) + if 1 == len(modelObjectSelected): + job = modelObjectSelected[0] else: - modelObjectSelected = [] - for job in jobs: - if all([o in job.Proxy.baseObjects(job) for o in selected]): - modelObjectSelected.append(job) - if 1 == len(modelObjectSelected): - job = modelObjectSelected[0] + if modelObjectSelected: + mylist = [j.Label for j in modelObjectSelected] else: - if modelObjectSelected: - mylist = [j.Label for j in modelObjectSelected] - else: - mylist = [j.Label for j in jobs] + mylist = [j.Label for j in jobs] - jobname, result = QtGui.QInputDialog.getItem( - None, translate("Path", "Choose a CAM Job"), None, mylist - ) + jobname, result = QtGui.QInputDialog.getItem( + None, translate("Path", "Choose a CAM Job"), None, mylist + ) - if result is False: - return None - else: - job = [j for j in jobs if j.Label == jobname][0] + if result is False: + return None + else: + job = [j for j in jobs if j.Label == jobname][0] return job def createJob(self):