Fixed merge issues

This commit is contained in:
Markus Lampert
2018-09-02 14:57:08 -07:00
committed by wmayer
parent f9f372b036
commit 0b1ae8c5e5
4 changed files with 51 additions and 28 deletions

View File

@@ -224,9 +224,10 @@ class StockEdit(object):
Index = -1
StockType = PathStock.StockType.Unknown
def __init__(self, obj, form):
def __init__(self, obj, form, force):
self.obj = obj
self.form = form
self.force = force
self.setupUi(obj)
@classmethod
@@ -250,6 +251,7 @@ class StockEdit(object):
self.setFields(obj)
def setStock(self, obj, stock):
PathLog.track(obj.Label, stock)
if obj.Stock:
obj.Document.removeObject(self.obj.Stock.Name)
obj.Stock = stock
@@ -272,6 +274,7 @@ class StockFromBaseBoundBoxEdit(StockEdit):
StockType = PathStock.StockType.FromBase
def editorFrame(self):
PathLog.track()
return self.form.stockFromBase
def getFields(self, obj, fields = ['xneg', 'xpos', 'yneg', 'ypos', 'zneg', 'zpos']):
@@ -296,8 +299,11 @@ class StockFromBaseBoundBoxEdit(StockEdit):
PathLog.error(translate('PathJob', 'Stock not from Base bound box!'))
def setFields(self, obj):
if not self.IsStock(obj):
PathLog.track()
if self.force or not self.IsStock(obj):
PathLog.track()
self.setStock(obj, PathStock.CreateFromBase(obj))
self.force = False
self.setLengthField(self.form.stockExtXneg, obj.Stock.ExtXneg)
self.setLengthField(self.form.stockExtXpos, obj.Stock.ExtXpos)
self.setLengthField(self.form.stockExtYneg, obj.Stock.ExtYneg)
@@ -306,6 +312,7 @@ class StockFromBaseBoundBoxEdit(StockEdit):
self.setLengthField(self.form.stockExtZpos, obj.Stock.ExtZpos)
def setupUi(self, obj):
PathLog.track()
self.setFields(obj)
self.checkXpos()
self.checkYpos()
@@ -368,8 +375,9 @@ class StockCreateBoxEdit(StockEdit):
pass
def setFields(self, obj):
if not self.IsStock(obj):
if self.force or not self.IsStock(obj):
self.setStock(obj, PathStock.CreateBox(obj))
self.force = False
self.setLengthField(self.form.stockBoxLength, obj.Stock.Length)
self.setLengthField(self.form.stockBoxWidth, obj.Stock.Width)
self.setLengthField(self.form.stockBoxHeight, obj.Stock.Height)
@@ -400,8 +408,9 @@ class StockCreateCylinderEdit(StockEdit):
pass
def setFields(self, obj):
if not self.IsStock(obj):
if self.force or not self.IsStock(obj):
self.setStock(obj, PathStock.CreateCylinder(obj))
self.force = False
self.setLengthField(self.form.stockCylinderRadius, obj.Stock.Radius)
self.setLengthField(self.form.stockCylinderHeight, obj.Stock.Height)
@@ -897,22 +906,28 @@ class TaskPanel:
FreeCADGui.Selection.addSelection(selObject, selFeature)
return (selObject, p)
def updateStockEditor(self, index):
def updateStockEditor(self, index, force = False):
def setupFromBaseEdit():
if not self.stockFromBase:
self.stockFromBase = StockFromBaseBoundBoxEdit(self.obj, self.form)
PathLog.track(index, force)
if force or not self.stockFromBase:
self.stockFromBase = StockFromBaseBoundBoxEdit(self.obj, self.form, force)
else:
PathLog.error('wtf')
self.stockEdit = self.stockFromBase
def setupCreateBoxEdit():
if not self.stockCreateBox:
self.stockCreateBox = StockCreateBoxEdit(self.obj, self.form)
PathLog.track(index, force)
if force or not self.stockCreateBox:
self.stockCreateBox = StockCreateBoxEdit(self.obj, self.form, force)
self.stockEdit = self.stockCreateBox
def setupCreateCylinderEdit():
if not self.stockCreateCylinder:
self.stockCreateCylinder = StockCreateCylinderEdit(self.obj, self.form)
PathLog.track(index, force)
if force or not self.stockCreateCylinder:
self.stockCreateCylinder = StockCreateCylinderEdit(self.obj, self.form, force)
self.stockEdit = self.stockCreateCylinder
def setupFromExisting():
if not self.stockFromExisting:
self.stockFromExisting = StockFromExistingEdit(self.obj, self.form)
PathLog.track(index, force)
if force or not self.stockFromExisting:
self.stockFromExisting = StockFromExistingEdit(self.obj, self.form, force)
if self.stockFromExisting.candidates(self.obj):
self.stockEdit = self.stockFromExisting
return True
@@ -1045,7 +1060,7 @@ class TaskPanel:
self.template.updateUI()
def setupUi(self, activate):
self.updateStockEditor(-1)
self.updateStockEditor(-1, True)
self.setFields()
# Info

View File

@@ -133,12 +133,16 @@ class ObjectPocket(PathPocketBase.ObjectPocket):
else: # process the job base object as a whole
PathLog.debug("processing the whole job base object")
self.outline = Part.Face(TechDraw.findShapeOutline(self.baseobject.Shape, 1, FreeCAD.Vector(0, 0, 1)))
self.outlines = [Part.Face(TechDraw.findShapeOutline(base.Shape, 1, FreeCAD.Vector(0, 0, 1))) for base in self.model]
stockBB = self.stock.Shape.BoundBox
self.outline.translate(FreeCAD.Vector(0, 0, stockBB.ZMin - 1))
self.body = self.outline.extrude(FreeCAD.Vector(0, 0, stockBB.ZLength + 2))
self.removalshapes = [(self.stock.Shape.cut(self.body), False)]
self.removalshapes = []
self.bodies = []
for outline in self.outlines:
outline.translate(FreeCAD.Vector(0, 0, stockBB.ZMin - 1))
body = outline.extrude(FreeCAD.Vector(0, 0, stockBB.ZLength + 2))
self.bodies.append(body)
self.removalshapes.append((self.stock.Shape.cut(body), False))
for (shape,hole) in self.removalshapes:
shape.tessellate(0.1)

View File

@@ -111,23 +111,22 @@ class ObjectProfile(PathProfileBase.ObjectProfile):
shapes.append((env, False))
else: # Try to build targets from the job base
# XXX ArchPanels support not implemented yet
if False and hasattr(self.baseobject, "Proxy"):
if isinstance(self.baseobject.Proxy, ArchPanel.PanelSheet): # process the sheet
if 1 == len(self.model) and hasattr(self.model[0], "Proxy"):
if isinstance(self.model[0].Proxy, ArchPanel.PanelSheet): # process the sheet
if obj.processCircles or obj.processHoles:
for shape in self.baseobject.Proxy.getHoles(self.baseobject, transform=True):
for shape in self.model[0].Proxy.getHoles(self.model[0], transform=True):
for wire in shape.Wires:
drillable = PathUtils.isDrillable(self.baseobject.Proxy, wire)
drillable = PathUtils.isDrillable(self.model[0].Proxy, wire)
if (drillable and obj.processCircles) or (not drillable and obj.processHoles):
f = Part.makeFace(wire, 'Part::FaceMakerSimple')
env = PathUtils.getEnvelope(self.baseobject.Shape, subshape=f, depthparams=self.depthparams)
env = PathUtils.getEnvelope(self.model[0].Shape, subshape=f, depthparams=self.depthparams)
shapes.append((env, True))
if obj.processPerimeter:
for shape in self.baseobject.Proxy.getOutlines(self.baseobject, transform=True):
for shape in self.model[0].Proxy.getOutlines(self.model[0], transform=True):
for wire in shape.Wires:
f = Part.makeFace(wire, 'Part::FaceMakerSimple')
env = PathUtils.getEnvelope(self.baseobject.Shape, subshape=f, depthparams=self.depthparams)
env = PathUtils.getEnvelope(self.model[0].Shape, subshape=f, depthparams=self.depthparams)
shapes.append((env, False))
PathLog.debug("%d shapes" % len(shapes))

View File

@@ -112,8 +112,11 @@ class StockFromBase(Stock):
obj.ExtZpos= 1.0
# placement is only tracked on creation
bb = shapeBoundBox(base)
obj.Placement = FreeCAD.Placement(FreeCAD.Vector(bb.XMin, bb.YMin, bb.ZMin), FreeCAD.Rotation())
bb = shapeBoundBox(base.Group)
if bb:
obj.Placement = FreeCAD.Placement(FreeCAD.Vector(bb.XMin, bb.YMin, bb.ZMin), FreeCAD.Rotation())
else:
PathLog.track(obj.Label, base.Label)
obj.Proxy = self
def __getstate__(self):
@@ -210,6 +213,7 @@ class StockCreateCylinder(Stock):
self.execute(obj)
def SetupStockObject(obj, stockType):
PathLog.track(obj.Label, stockType)
if FreeCAD.GuiUp and obj.ViewObject:
obj.addProperty('App::PropertyString', 'StockType', 'Stock', QtCore.QT_TRANSLATE_NOOP("PathStock", "Internal representation of stock type"))
obj.StockType = stockType
@@ -220,6 +224,7 @@ def SetupStockObject(obj, stockType):
obj.ViewObject.DisplayMode = 'Wireframe'
def CreateFromBase(job, neg=None, pos=None, placement=None):
PathLog.track(job.Label, neg, pos, placement)
base = job.Model if job and hasattr(job, 'Model') else None
if base:
base.Shape.tessellate(0.1)