From dd3898aa3950c6a5650a3ef31f4e2ef76fca9814 Mon Sep 17 00:00:00 2001 From: tarman3 Date: Mon, 17 Nov 2025 08:26:35 +0200 Subject: [PATCH] CAM: Task panel - Shapes selection from several objects --- src/Mod/CAM/Path/Op/Gui/Base.py | 38 +++++++++++++-------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/src/Mod/CAM/Path/Op/Gui/Base.py b/src/Mod/CAM/Path/Op/Gui/Base.py index d3b0557dcd..18b6dc4c84 100644 --- a/src/Mod/CAM/Path/Op/Gui/Base.py +++ b/src/Mod/CAM/Path/Op/Gui/Base.py @@ -670,22 +670,13 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): return "edges" return "nothing" - def selectionSupportedAsBaseGeometry(self, selection, ignoreErrors): - if len(selection) != 1: - if not ignoreErrors: - msg = translate( - "PathOp", - "Please select %s from a single solid" % self.featureName(), - ) - Path.Log.debug(msg) - return False - sel = selection[0] + def selectionSupportedAsBaseGeometry(self, sel, ignoreErrors): if sel.HasSubObjects: - if not self.supportsVertexes() and selection[0].SubObjects[0].ShapeType == "Vertex": + if not self.supportsVertexes() and sel.SubObjects[0].ShapeType == "Vertex": return False - if not self.supportsEdges() and selection[0].SubObjects[0].ShapeType == "Edge": + if not self.supportsEdges() and sel.SubObjects[0].ShapeType == "Edge": return False - if not self.supportsFaces() and selection[0].SubObjects[0].ShapeType == "Face": + if not self.supportsFaces() and sel.SubObjects[0].ShapeType == "Face": return False else: if not self.supportsPanels() or "Panel" not in sel.Object.Name: @@ -694,11 +685,11 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): def addBaseGeometry(self, selection): Path.Log.track(selection) - if self.selectionSupportedAsBaseGeometry(selection, False): - sel = selection[0] - for sub in sel.SubElementNames: - self.obj.Proxy.addBase(self.obj, sel.Object, sub) - return True + for sel in selection: + # check each selection + if self.selectionSupportedAsBaseGeometry(sel, False): + for sub in sel.SubElementNames: + self.obj.Proxy.addBase(self.obj, sel.Object, sub) return False def addBase(self): @@ -760,11 +751,12 @@ class TaskPanelBaseGeometryPage(TaskPanelPage): if prop in ["Base"]: self.setFields(obj) - def updateSelection(self, obj, sel): - if self.selectionSupportedAsBaseGeometry(sel, True): - self.form.addBase.setEnabled(True) - else: - self.form.addBase.setEnabled(False) + def updateSelection(self, obj, selection): + for sel in selection: + if self.selectionSupportedAsBaseGeometry(sel, True): + self.form.addBase.setEnabled(True) + else: + self.form.addBase.setEnabled(False) def resizeBaseList(self): # Set base geometry list window to resize based on contents