diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index ba80619f67..9d152feb0a 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -724,22 +724,6 @@ class TaskPanel: FreeCADGui.Selection.addSelection(selObject, selFeature) return (selObject, p) - def updateSelection(self): - sel = FreeCADGui.Selection.getSelectionEx() - if len(sel) == 1 and len(sel[0].SubObjects) == 1: - if 'Vertex' == sel[0].SubObjects[0].ShapeType: - self.form.orientGroup.setEnabled(False) - self.form.alignGroup.setEnabled(True) - self.form.setOrigin.setEnabled(True) - self.form.moveToOrigin.setEnabled(True) - else: - self.form.orientGroup.setEnabled(True) - self.form.setOrigin.setEnabled(False) - self.form.moveToOrigin.setEnabled(False) - else: - self.form.orientGroup.setEnabled(False) - self.form.alignGroup.setEnabled(False) - def updateStockEditor(self, index): def setupFromBaseEdit(): if not self.stockFromBase: @@ -787,6 +771,48 @@ class TaskPanel: PathLog.error(translate('PathJob', "Unsupported stock type %s (%d)") % (self.form.stock.currentText(), index)) self.stockEdit.activate(self.obj, index == -1) + def centerInStock(self): + bbb = self.obj.Base.Shape.BoundBox + bbs = self.obj.Stock.Shape.BoundBox + by = bbs.Center - bbb.Center + Draft.move(self.obj.Base, by) + + def centerInStockXY(self): + bbb = self.obj.Base.Shape.BoundBox + bbs = self.obj.Stock.Shape.BoundBox + by = bbs.Center - bbb.Center + by.z = 0 + Draft.move(self.obj.Base, by) + + def updateSelection(self): + sel = FreeCADGui.Selection.getSelectionEx() + + PathLog.track(len(sel)) + if len(sel) == 1 and len(sel[0].SubObjects) == 1: + if 'Vertex' == sel[0].SubObjects[0].ShapeType: + self.form.orientGroup.setEnabled(False) + self.form.setOrigin.setEnabled(True) + self.form.moveToOrigin.setEnabled(True) + else: + self.form.orientGroup.setEnabled(True) + self.form.setOrigin.setEnabled(False) + self.form.moveToOrigin.setEnabled(False) + else: + self.form.orientGroup.setEnabled(False) + self.form.setOrigin.setEnabled(False) + self.form.moveToOrigin.setEnabled(False) + + if len(sel) == 1 and sel[0].Object == self.obj.Base: + self.form.centerInStock.setEnabled(True) + self.form.centerInStockXY.setEnabled(True) + else: + if len(sel) == 1: + PathLog.info("sel = %s / %s" % (sel[0].Object.Label, self.obj.Base.Label)) + else: + PathLog.info("sel len = %d" % len(sel)) + self.form.centerInStock.setEnabled(False) + self.form.centerInStockXY.setEnabled(False) + def setupUi(self): self.updateStockEditor(-1) @@ -816,8 +842,8 @@ class TaskPanel: self.toolControllerSelect() # Stock, Orientation and Alignment - self.form.centerInStock.hide() - self.form.centerInStockXY.hide() + self.form.centerInStock.clicked.connect(self.centerInStock) + self.form.centerInStockXY.clicked.connect(self.centerInStockXY) self.form.stock.currentIndexChanged.connect(self.updateStockEditor) diff --git a/src/Mod/Path/PathScripts/PathStock.py b/src/Mod/Path/PathScripts/PathStock.py index e5e5ff96cf..acdd453477 100644 --- a/src/Mod/Path/PathScripts/PathStock.py +++ b/src/Mod/Path/PathScripts/PathStock.py @@ -82,7 +82,9 @@ def SetupStockObject(obj, addVPProxy): def CreateFromBase(job): obj = FreeCAD.ActiveDocument.addObject('Part::FeaturePython', 'Stock') - proxy = StockFromBase(obj, job.Base) + # don't want to use the resrouce clone - we want the real object so + # Base and Stock can be placed independently + proxy = StockFromBase(obj, job.Proxy.baseObject(job)) SetupStockObject(obj, True) proxy.execute(obj) obj.purgeTouched()