Switched default values into Settings spreadsheet.

This commit is contained in:
Markus Lampert
2017-10-02 20:03:53 -07:00
parent ead2eb4e46
commit 87cf84151e
5 changed files with 51 additions and 162 deletions

View File

@@ -64,6 +64,14 @@ class JobTemplate:
DefaultSafeHeight = 'DefaultSafeHeight'
DefaultClearanceHeight = 'DefaultClearanceHeight'
class JobSetting:
'''Alias names for the official settings being used.'''
DefaultVertRapid = 'DefaultVertRapid'
DefaultHorizRapid = 'DefaultHorizRapid'
DefaultSafeHeight = 'DefaultSafeHeight'
DefaultClearanceHeight = 'DefaultClearanceHeight'
def isArchPanelSheet(obj):
return hasattr(obj, 'Proxy') and isinstance(obj.Proxy, ArchPanel.PanelSheet)
@@ -138,9 +146,10 @@ class ObjectJob:
if obj.Stock.ViewObject:
obj.Stock.ViewObject.Visibility = False
def setSetting(self, obj, row, name, value, label):
def createSetting(self, obj, row, name, value, label):
labelCell = "B%d" % row
valueCell = "C%d" % row
PathLog.info("createSetting(%d, %s, %s): %s" % (row, name, value, valueCell))
obj.Settings.set(labelCell, label)
obj.Settings.set(valueCell, value)
obj.Settings.setAlias(valueCell, name)
@@ -150,11 +159,11 @@ class ObjectJob:
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'))
self.createSetting(obj, 3, JobSetting.DefaultHorizRapid, '0 mm/s', translate('PathJob', 'Default Horizontal Rapid'))
self.createSetting(obj, 4, JobSetting.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'))
self.createSetting(obj, 7, JobSetting.DefaultSafeHeight, '3 mm', translate('PathJob', 'Default Safe Height'))
self.createSetting(obj, 8, JobSetting.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.'''
@@ -211,6 +220,11 @@ class ObjectJob:
return obj.Base.Objects[0]
return obj.Base
def updateSetting(self, obj, name, value):
cell = obj.Settings.getCellFromAlias(name)
PathLog.info("updateSetting(%s, %s): %s" % (name, value, cell))
self.obj.Settings.set(cell, value)
def setFromTemplateFile(self, obj, template):
'''setFromTemplateFile(obj, template) ... extract the properties from the given template file and assign to receiver.
This will also create any TCs stored in the template.'''
@@ -220,6 +234,15 @@ class ObjectJob:
attrs = json.load(fp)
if attrs.get(JobTemplate.Version) and 1 == int(attrs[JobTemplate.Version]):
if attrs.get(JobTemplate.DefaultVertRapid):
self.updateSetting(obj, JobSetting.DefaultVertRapid, attrs[JobTemplate.DefaultVertRapid])
if attrs.get(JobTemplate.DefaultHorizRapid):
self.updateSetting(obj, JobSetting.DefaultHorizRapid, attrs[JobTemplate.DefaultHorizRapid])
if attrs.get(JobTemplate.DefaultSafeHeight):
self.updateSetting(obj, JobSetting.DefaultSafeHeight, attrs[JobTemplate.DefaultSafeHeight])
if attrs.get(JobTemplate.DefaultClearanceHeight):
self.updateSetting(obj, JobSetting.DefaultClearanceHeight, attrs[JobTemplate.DefaultClearanceHeight])
if attrs.get(JobTemplate.GeometryTolerance):
obj.GeometryTolerance = float(attrs.get(JobTemplate.GeometryTolerance))
if attrs.get(JobTemplate.PostProcessor):
@@ -233,21 +256,11 @@ class ObjectJob:
if attrs.get(JobTemplate.Description):
obj.Description = attrs.get(JobTemplate.Description)
if attrs.get(JobTemplate.ToolController):
for tc in attrs.get(JobTemplate.ToolController):
tcs.append(PathToolController.FromTemplate(tc))
if attrs.get(JobTemplate.Stock):
obj.Stock = PathStock.CreateFromTemplate(obj, attrs.get(JobTemplate.Stock))
if attrs.get(JobTemplate.DefaultVertRapid):
obj.Settings.DefaultVertRapid = attrs[JobTemplate.DefaultVertRapid]
if attrs.get(JobTemplate.DefaultHorizRapid):
obj.Settings.DefaultHorizRapid = attrs[JobTemplate.DefaultHorizRapid]
if attrs.get(JobTemplate.DefaultSafeHeight):
obj.Settings.DefaultSafeHeight = attrs[JobTemplate.DefaultSafeHeight]
if attrs.get(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())
@@ -297,8 +310,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.setExpression('VertRapid', "%s.DefaultVertRapid" % self.obj.Settings.Name)
tc.setExpression('HorizRapid', "%s.DefaultHorizRapid" % self.obj.Settings.Name)
tc.setExpression('VertRapid', "%s.%s" % (self.obj.Settings.Name, JobSetting.DefaultVertRapid))
tc.setExpression('HorizRapid', "%s.%s" % (self.obj.Settings.Name, JobSetting.DefaultHorizRapid))
group.append(tc)
self.obj.ToolController = group

View File

@@ -480,13 +480,6 @@ class TaskPanel:
self.postProcessorDefaultTooltip = self.form.postProcessor.toolTip()
self.postProcessorArgsDefaultTooltip = self.form.postProcessorArguments.toolTip()
hicon = QtGui.QIcon.fromTheme('object-flip-horizontal')
vicon = QtGui.QIcon.fromTheme('object-flip-vertical')
iconSize = QtCore.QSize()
self.form.defaultRapidHorizontalIcon.setPixmap(hicon.pixmap(iconSize))
self.form.defaultRapidVerticalIcon.setPixmap(vicon.pixmap(iconSize))
self.vproxy.setupEditVisibility(self.obj)
self.stockFromBase = None
@@ -561,11 +554,6 @@ class TaskPanel:
self.updateTooltips()
self.stockEdit.getFields(self.obj)
PathGui.updateInputField(self.obj, 'DefaultSafeHeight', self.form.defaultHeightSafe)
PathGui.updateInputField(self.obj, 'DefaultClearanceHeight', self.form.defaultHeightClearance)
PathGui.updateInputField(self.obj, 'DefaultVertRapid', self.form.defaultRapidVertical)
PathGui.updateInputField(self.obj, 'DefaultHorizRapid', self.form.defaultRapidHorizontal)
self.obj.Proxy.execute(self.obj)
def selectComboBoxText(self, widget, text):
@@ -664,12 +652,6 @@ class TaskPanel:
self.updateToolController()
self.stockEdit.setFields(self.obj)
self.form.defaultRapidVertical.setText(self.obj.DefaultVertRapid.UserString)
self.form.defaultRapidHorizontal.setText(self.obj.DefaultHorizRapid.UserString)
self.form.defaultHeightSafe.setText(self.obj.DefaultSafeHeight.UserString)
self.form.defaultHeightClearance.setText(self.obj.DefaultClearanceHeight.UserString)
def setPostProcessorOutputFile(self):
filename = QtGui.QFileDialog.getSaveFileName(self.form, translate("Path_Job", "Select Output File"), None, translate("Path_Job", "All Files (*.*)"))
if filename and filename[0]:
@@ -1009,12 +991,6 @@ class TaskPanel:
self.form.moveToOrigin.clicked.connect(self.alignMoveToOrigin)
self.updateSelection()
# Defaults
self.form.defaultRapidVertical.editingFinished.connect(self.getFields)
self.form.defaultRapidHorizontal.editingFinished.connect(self.getFields)
self.form.defaultHeightSafe.editingFinished.connect(self.getFields)
self.form.defaultHeightClearance.editingFinished.connect(self.getFields)
# set active page
if activate in ['General', 'Base']:
self.form.setCurrentIndex(0)
@@ -1049,6 +1025,7 @@ def Create(base, template=None):
obj = PathJob.Create('Job', base, template)
ViewProvider(obj.ViewObject)
FreeCAD.ActiveDocument.commitTransaction()
obj.Document.recompute()
obj.ViewObject.Proxy.editObject(obj.Stock)
return obj
except:

View File

@@ -47,17 +47,20 @@ def translate(context, text, disambig=None):
class ToolControllerTemplate:
'''Attribute and sub element strings for template export/import.'''
Name = 'name'
Label = 'label'
ToolNumber = 'nr'
VertFeed = 'vfeed'
Expressions = 'xengine'
ExprExpr = 'expr'
ExprProp = 'prop'
HorizFeed = 'hfeed'
VertRapid = 'vrapid'
HorizRapid = 'hrapid'
SpindleSpeed = 'speed'
Label = 'label'
Name = 'name'
SpindleDir = 'dir'
SpindleSpeed = 'speed'
ToolNumber = 'nr'
Tool = 'tool'
Version = 'version'
VertFeed = 'vfeed'
VertRapid = 'vrapid'
class ToolController:
def __init__(self, obj, tool=1):
@@ -100,6 +103,9 @@ class ToolController:
obj.ToolNumber = int(template.get(ToolControllerTemplate.ToolNumber))
if template.get(ToolControllerTemplate.Tool):
obj.Tool.setFromTemplate(template.get(ToolControllerTemplate.Tool))
if template.get(ToolControllerTemplate.Expressions):
for exprDef in template.get(ToolControllerTemplate.Expressions):
obj.setExpression(exprDef[ToolControllerTemplate.ExprProp], exprDef[ToolControllerTemplate.ExprExpr])
else:
PathLog.error(translate('PathToolController', "Unsupported PathToolController template version %s") % template.get(ToolControllerTemplate.Version))
@@ -117,6 +123,13 @@ class ToolController:
attrs[ToolControllerTemplate.SpindleSpeed] = obj.SpindleSpeed
attrs[ToolControllerTemplate.SpindleDir] = obj.SpindleDir
attrs[ToolControllerTemplate.Tool] = obj.Tool.templateAttrs()
expressions = []
for expr in obj.ExpressionEngine:
PathLog.info('%s: %s' % (expr[0], expr[1]))
expressions.append({ToolControllerTemplate.ExprProp: expr[0], ToolControllerTemplate.ExprExpr: expr[1]})
if expressions:
PathLog.info('add expressions')
attrs[ToolControllerTemplate.Expressions] = expressions
return attrs
def execute(self, obj):