Switched default values into Settings spreadsheet.
This commit is contained in:
@@ -115,7 +115,7 @@
|
||||
<string><html><head/><body><p>Enable to include the default values in the template.</p></body></html></string>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Defaults</string>
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
|
||||
@@ -393,120 +393,6 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
<string>Defaults</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Tool Rapid Speed</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_4">
|
||||
<item row="0" column="2">
|
||||
<widget class="Gui::InputField" name="defaultRapidHorizontal">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Rapid horizontal feed rate assigned to new Tool Controllers.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="defaultRapidHorizontalIcon">
|
||||
<property name="text">
|
||||
<string>Hori</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLabel" name="defaultRapidVerticalIcon">
|
||||
<property name="text">
|
||||
<string>Vert</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="Gui::InputField" name="defaultRapidVertical">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Rapid vertical feed rate assigned to new Tool Controllers.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_6">
|
||||
<property name="text">
|
||||
<string>Horizontal</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Vertical</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Operation Heights</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_5">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="text">
|
||||
<string>Safe Extra</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>Clearance Extra</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="defaultHeightSafe">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Extra height for Safe Heights, measured from the operations Start Depth.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="defaultHeightClearance">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Extra height for Clearance Heights, measured from the operations Start Depth.</p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>415</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabTools">
|
||||
<attribute name="title">
|
||||
<string>Tools</string>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user