Added support for centering the base object inside stock.

This commit is contained in:
Markus Lampert
2017-09-02 23:05:54 -07:00
committed by wmayer
parent caeab63ec8
commit 8f77c7575f
2 changed files with 47 additions and 19 deletions

View File

@@ -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)

View File

@@ -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()