Replaced job default-properties with setting spreadsheet and set expressions for heights and rapid speeds.

This commit is contained in:
Markus Lampert
2017-10-01 23:52:37 -07:00
parent 51ed2f752d
commit ead2eb4e46
3 changed files with 43 additions and 32 deletions

View File

@@ -123,7 +123,7 @@ class ObjectJob:
obj.setEditorMode('Operations', 2) # hide
obj.setEditorMode('Placement', 2)
self.initDefaultValues(obj)
self.setupSettings(obj)
obj.Base = createResourceClone(obj, base, 'Base', 'BaseGeometry')
obj.Proxy = self
@@ -138,18 +138,23 @@ class ObjectJob:
if obj.Stock.ViewObject:
obj.Stock.ViewObject.Visibility = False
def setSetting(self, obj, row, name, value, label):
labelCell = "B%d" % row
valueCell = "C%d" % row
obj.Settings.set(labelCell, label)
obj.Settings.set(valueCell, value)
obj.Settings.setAlias(valueCell, name)
def initDefaultValues(self, obj):
if not hasattr(obj, 'DefaultHorizRapid'):
obj.addProperty('App::PropertySpeed', 'DefaultHorizRapid', 'Defaults', QtCore.QT_TRANSLATE_NOOP('PathJob', 'Horizontal rapid feed rate for new tool controllers'))
if not hasattr(obj, 'DefaultVertRapid'):
obj.addProperty('App::PropertySpeed', 'DefaultVertRapid', 'Defaults', QtCore.QT_TRANSLATE_NOOP('PathJob', 'Vertical rapid feed rate for new tool controllers'))
if not hasattr(obj, 'DefaultSafeHeight'):
obj.addProperty('App::PropertyLength', 'DefaultSafeHeight', 'Defaults', QtCore.QT_TRANSLATE_NOOP('PathJob', 'Extra distance on top of StartDepth to set SafeHeight'))
obj.DefaultSafeHeight = 3.0
if not hasattr(obj, 'DefaultClearanceHeight'):
obj.addProperty('App::PropertyLength', 'DefaultClearanceHeight', 'Defaults', QtCore.QT_TRANSLATE_NOOP('PathJob', 'Extra distance on top of StartDepth to set ClearanceHeight'))
obj.DefaultClearanceHeight = 5.0
def setupSettings(self, obj):
if not hasattr(obj, 'Settings'):
obj.addProperty('App::PropertyLink', 'Settings', 'Base', QtCore.QT_TRANSLATE_NOOP('PathJob', 'Spreadsheet holding the settings for this job'))
obj.Settings = obj.Document.addObject('Spreadsheet::Sheet', 'Settings')
obj.Settings.set('A2', translate('PathJob', 'Tool Rapid Speeds'))
self.setSetting(obj, 3, 'DefaultHorizRapid', '0 mm/s', translate('PathJob', 'Default Horizontal Rapid'))
self.setSetting(obj, 4, 'DefaultVertRapid', '0 mm/s', translate('PathJob', 'Default Vertical Rapid'))
obj.Settings.set('A6', translate('PathJob', 'Operation Heights'))
self.setSetting(obj, 7, 'DefaultSafeHeight', '3 mm', translate('PathJob', 'Default Safe Height'))
self.setSetting(obj, 8, 'DefaultClearanceHeight', '5 mm', translate('PathJob', 'Default Clearance Height'))
def onDelete(self, obj, arg2=None):
'''Called by the view provider, there doesn't seem to be a callback on the obj itself.'''
@@ -180,6 +185,9 @@ class ObjectJob:
for tc in obj.ToolController:
doc.removeObject(tc.Name)
obj.ToolController = []
# Settings
doc.removeObject(obj.Settings.Name)
obj.Settings = None
def fixupResourceClone(self, obj, name, icon):
if not isResourceClone(obj, name, name) and not isArchPanelSheet(obj):
@@ -189,7 +197,7 @@ class ObjectJob:
def onDocumentRestored(self, obj):
self.fixupResourceClone(obj, 'Base', 'BaseGeometry')
self.initDefaultValues(obj)
self.setupSettings(obj)
def onChanged(self, obj, prop):
if prop == "PostProcessor" and obj.PostProcessor:
@@ -233,13 +241,13 @@ class ObjectJob:
obj.Stock = PathStock.CreateFromTemplate(obj, attrs.get(JobTemplate.Stock))
if attrs.get(JobTemplate.DefaultVertRapid):
obj.DefaultVertRapid = attrs[JobTemplate.DefaultVertRapid]
obj.Settings.DefaultVertRapid = attrs[JobTemplate.DefaultVertRapid]
if attrs.get(JobTemplate.DefaultHorizRapid):
obj.DefaultHorizRapid = attrs[JobTemplate.DefaultHorizRapid]
obj.Settings.DefaultHorizRapid = attrs[JobTemplate.DefaultHorizRapid]
if attrs.get(JobTemplate.DefaultSafeHeight):
obj.DefaultSafeHeight = attrs[JobTemplate.DefaultSafeHeight]
obj.Settings.DefaultSafeHeight = attrs[JobTemplate.DefaultSafeHeight]
if attrs.get(JobTemplate.DefaultClearanceHeight):
obj.DefaultClearanceHeight = attrs[JobTemplate.DefaultClearanceHeight]
obj.Settings.DefaultClearanceHeight = attrs[JobTemplate.DefaultClearanceHeight]
else:
PathLog.error(translate('PathJob', "Unsupported PathJob template version %s") % attrs.get(JobTemplate.Version))
tcs.append(PathToolController.Create())
@@ -260,10 +268,10 @@ class ObjectJob:
attrs[JobTemplate.GeometryTolerance] = str(obj.GeometryTolerance.Value)
if obj.Description:
attrs[JobTemplate.Description] = obj.Description
attrs[JobTemplate.DefaultVertRapid] = obj.DefaultVertRapid.UserString
attrs[JobTemplate.DefaultHorizRapid] = obj.DefaultHorizRapid.UserString
attrs[JobTemplate.DefaultSafeHeight] = obj.DefaultSafeHeight.UserString
attrs[JobTemplate.DefaultClearanceHeight] = obj.DefaultClearanceHeight.UserString
attrs[JobTemplate.DefaultVertRapid] = obj.Settings.DefaultVertRapid.UserString
attrs[JobTemplate.DefaultHorizRapid] = obj.Settings.DefaultHorizRapid.UserString
attrs[JobTemplate.DefaultSafeHeight] = obj.Settings.DefaultSafeHeight.UserString
attrs[JobTemplate.DefaultClearanceHeight] = obj.Settings.DefaultClearanceHeight.UserString
return attrs
def __getstate__(self):
@@ -289,8 +297,8 @@ class ObjectJob:
group = self.obj.ToolController
PathLog.info("addToolController(%s): %s" % (tc.Label, [t.Label for t in group]))
if tc.Name not in [str(t.Name) for t in group]:
tc.VertRapid = self.obj.DefaultVertRapid
tc.HorizRapid = self.obj.DefaultHorizRapid
tc.setExpression('VertRapid', "%s.DefaultVertRapid" % self.obj.Settings.Name)
tc.setExpression('HorizRapid', "%s.DefaultHorizRapid" % self.obj.Settings.Name)
group.append(tc)
self.obj.ToolController = group

View File

@@ -156,6 +156,9 @@ class ViewProvider:
children.append(self.obj.Base)
if self.obj.Stock:
children.append(self.obj.Stock)
if hasattr(self.obj, 'Settings'):
# when loading a job that didn't have settings they might not've been created yet
children.append(self.obj.Settings)
return children
def onDelete(self, vobj, arg2=None):

View File

@@ -216,7 +216,7 @@ class ObjectOp(object):
def setDefaultValues(self, obj):
'''setDefaultValues(obj) ... base implementation.
Do not overwrite, overwrite opSetDefaultValues() instead.'''
PathUtils.addToJob(obj)
job = PathUtils.addToJob(obj)
obj.Active = True
@@ -235,8 +235,8 @@ class ObjectOp(object):
obj.StepDown = 1.0
if FeatureHeights & features:
obj.ClearanceHeight = 10.0
obj.SafeHeight = 8.0
obj.setExpression('SafeHeight', "%s.DefaultSafeHeight+StartDepth" % job.Settings.Name)
obj.setExpression('ClearanceHeight', "%s.DefaultClearanceHeight+StartDepth" % job.Settings.Name)
if FeatureStartPoint & features:
obj.UseStartPoint = False
@@ -330,12 +330,12 @@ class ObjectOp(object):
if obj.StartDepth.Value < zmax:
safeDepths = False
clearance = obj.StartDepth.Value + self.job.DefaultClearanceHeight.Value
safe = obj.StartDepth.Value + self.job.DefaultSafeHeight.Value
if hasattr(obj, 'ClearanceHeight') and not PathGeom.isRoughly(clearance, obj.ClearanceHeight.Value):
obj.ClearanceHeight = clearance
if hasattr(obj, 'SafeHeight') and not PathGeom.isRoughly(safe, obj.SafeHeight.Value):
obj.SafeHeight = safe
#clearance = obj.StartDepth.Value + self.job.Settings.DefaultClearanceHeight.Value
#safe = obj.StartDepth.Value + self.job.Settings.DefaultSafeHeight.Value
#if hasattr(obj, 'ClearanceHeight') and not PathGeom.isRoughly(clearance, obj.ClearanceHeight.Value):
# obj.ClearanceHeight = clearance
#if hasattr(obj, 'SafeHeight') and not PathGeom.isRoughly(safe, obj.SafeHeight.Value):
# obj.SafeHeight = safe
return safeDepths