Extracted Job Settings into their own implementation file.
This commit is contained in:
@@ -27,6 +27,7 @@ import Draft
|
||||
import FreeCAD
|
||||
import PathScripts.PathIconViewProvider as PathIconViewProvider
|
||||
import PathScripts.PathLog as PathLog
|
||||
import PathScripts.PathSettings as PathSettings
|
||||
import PathScripts.PathStock as PathStock
|
||||
import PathScripts.PathToolController as PathToolController
|
||||
import PathScripts.PathUtil as PathUtil
|
||||
@@ -64,14 +65,6 @@ 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)
|
||||
|
||||
@@ -146,24 +139,11 @@ class ObjectJob:
|
||||
if obj.Stock.ViewObject:
|
||||
obj.Stock.ViewObject.Visibility = False
|
||||
|
||||
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)
|
||||
|
||||
def setupSettings(self, obj):
|
||||
self.settings = PathSettings.Settings(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.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.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'))
|
||||
self.settings.setup()
|
||||
|
||||
def onDelete(self, obj, arg2=None):
|
||||
'''Called by the view provider, there doesn't seem to be a callback on the obj itself.'''
|
||||
@@ -220,11 +200,6 @@ 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.'''
|
||||
@@ -235,13 +210,13 @@ class ObjectJob:
|
||||
|
||||
if attrs.get(JobTemplate.Version) and 1 == int(attrs[JobTemplate.Version]):
|
||||
if attrs.get(JobTemplate.DefaultVertRapid):
|
||||
self.updateSetting(obj, JobSetting.DefaultVertRapid, attrs[JobTemplate.DefaultVertRapid])
|
||||
self.settings.updateSetting(PathSettings.Default.VertRapid, attrs[JobTemplate.DefaultVertRapid])
|
||||
if attrs.get(JobTemplate.DefaultHorizRapid):
|
||||
self.updateSetting(obj, JobSetting.DefaultHorizRapid, attrs[JobTemplate.DefaultHorizRapid])
|
||||
self.settings.updateSetting(PathSettings.Default.HorizRapid, attrs[JobTemplate.DefaultHorizRapid])
|
||||
if attrs.get(JobTemplate.DefaultSafeHeight):
|
||||
self.updateSetting(obj, JobSetting.DefaultSafeHeight, attrs[JobTemplate.DefaultSafeHeight])
|
||||
self.settings.updateSetting(PathSettings.Default.SafeHeight, attrs[JobTemplate.DefaultSafeHeight])
|
||||
if attrs.get(JobTemplate.DefaultClearanceHeight):
|
||||
self.updateSetting(obj, JobSetting.DefaultClearanceHeight, attrs[JobTemplate.DefaultClearanceHeight])
|
||||
self.settings.updateSetting(PathSettings.Default.ClearanceHeight, attrs[JobTemplate.DefaultClearanceHeight])
|
||||
|
||||
if attrs.get(JobTemplate.GeometryTolerance):
|
||||
obj.GeometryTolerance = float(attrs.get(JobTemplate.GeometryTolerance))
|
||||
@@ -281,10 +256,10 @@ class ObjectJob:
|
||||
attrs[JobTemplate.GeometryTolerance] = str(obj.GeometryTolerance.Value)
|
||||
if obj.Description:
|
||||
attrs[JobTemplate.Description] = obj.Description
|
||||
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
|
||||
attrs[JobTemplate.DefaultVertRapid] = obj.Settings.DefaultVertRapid
|
||||
attrs[JobTemplate.DefaultHorizRapid] = obj.Settings.DefaultHorizRapid
|
||||
attrs[JobTemplate.DefaultSafeHeight] = obj.Settings.DefaultSafeHeight
|
||||
attrs[JobTemplate.DefaultClearanceHeight] = obj.Settings.DefaultClearanceHeight
|
||||
return attrs
|
||||
|
||||
def __getstate__(self):
|
||||
@@ -310,8 +285,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.%s" % (self.obj.Settings.Name, JobSetting.DefaultVertRapid))
|
||||
tc.setExpression('HorizRapid', "%s.%s" % (self.obj.Settings.Name, JobSetting.DefaultHorizRapid))
|
||||
tc.setExpression('VertRapid', "%s.%s" % (self.obj.Settings.Name, PathSettings.Default.VertRapid))
|
||||
tc.setExpression('HorizRapid', "%s.%s" % (self.obj.Settings.Name, PathSettings.Default.HorizRapid))
|
||||
group.append(tc)
|
||||
self.obj.ToolController = group
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
import FreeCAD
|
||||
import Path
|
||||
import PathScripts.PathLog as PathLog
|
||||
import PathScripts.PathSettings as PathSettings
|
||||
import PathScripts.PathUtil as PathUtil
|
||||
import PathScripts.PathUtils as PathUtils
|
||||
|
||||
@@ -235,8 +236,8 @@ class ObjectOp(object):
|
||||
obj.StepDown = 1.0
|
||||
|
||||
if FeatureHeights & features:
|
||||
obj.setExpression('SafeHeight', "%s.DefaultSafeHeight+StartDepth" % job.Settings.Name)
|
||||
obj.setExpression('ClearanceHeight', "%s.DefaultClearanceHeight+StartDepth" % job.Settings.Name)
|
||||
obj.setExpression('SafeHeight', "%s.%s+StartDepth" % (job.Settings.Name, PathSettings.Default.SafeHeight))
|
||||
obj.setExpression('ClearanceHeight', "%s.%s+StartDepth" % (job.Settings.Name, PathSettings.Default.ClearanceHeight))
|
||||
|
||||
if FeatureStartPoint & features:
|
||||
obj.UseStartPoint = False
|
||||
|
||||
78
src/Mod/Path/PathScripts/PathSettings.py
Normal file
78
src/Mod/Path/PathScripts/PathSettings.py
Normal file
@@ -0,0 +1,78 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# ***************************************************************************
|
||||
# * *
|
||||
# * Copyright (c) 2017 sliptonic <shopinthewoods@gmail.com> *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or modify *
|
||||
# * it under the terms of the GNU Lesser General Public License (LGPL) *
|
||||
# * as published by the Free Software Foundation; either version 2 of *
|
||||
# * the License, or (at your option) any later version. *
|
||||
# * for detail see the LICENCE text file. *
|
||||
# * *
|
||||
# * This program is distributed in the hope that it will be useful, *
|
||||
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
# * GNU Library General Public License for more details. *
|
||||
# * *
|
||||
# * You should have received a copy of the GNU Library General Public *
|
||||
# * License along with this program; if not, write to the Free Software *
|
||||
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
||||
# * USA *
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
|
||||
import FreeCAD
|
||||
import Path
|
||||
import PathScripts.PathLog as PathLog
|
||||
import PySide
|
||||
|
||||
__title__ = "Settings for a Job."
|
||||
__author__ = "sliptonic (Brad Collette)"
|
||||
__url__ = "http://www.freecadweb.org"
|
||||
__doc__ = "A container for all default values and job specific configuration values."
|
||||
|
||||
if False:
|
||||
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
|
||||
PathLog.trackModule()
|
||||
else:
|
||||
PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule())
|
||||
|
||||
def translate(context, text, disambig=None):
|
||||
return PySide.QtCore.QCoreApplication.translate(context, text, disambig)
|
||||
|
||||
class Default:
|
||||
HorizRapid = 'DefaultHorizRapid'
|
||||
VertRapid = 'DefaultVertRapid'
|
||||
SafeHeight = 'DefaultSafeHeight'
|
||||
ClearanceHeight = 'DefaultClearanceHeight'
|
||||
|
||||
class Settings:
|
||||
|
||||
def __init__(self, obj):
|
||||
self.obj = obj
|
||||
|
||||
def setup(self):
|
||||
self.obj.Settings = self.obj.Document.addObject('Spreadsheet::Sheet', 'Settings')
|
||||
self.obj.Settings.set('A2', translate('PathSettings', 'Tool Rapid Speeds'))
|
||||
self.createSetting(3, Default.HorizRapid, '0 mm/s', translate('PathSettings', 'Horizontal'), translate('PathSettings', 'Default speed for horizzontal rapid moves.'))
|
||||
self.createSetting(4, Default.VertRapid, '0 mm/s', translate('PathSettings', 'Vertical'), translate('PathSettings', 'Default speed for vertical rapid moves.'))
|
||||
self.obj.Settings.set('A6', translate('PathSettings', 'Operation Heights'))
|
||||
self.createSetting(7, Default.SafeHeight, '3 mm', translate('PathSettings', 'Safe Height'), translate('PathSettings', 'Default value added to StartDepth used for the safe height.'))
|
||||
self.createSetting(8, Default.ClearanceHeight, '5 mm', translate('PathSettings', 'Clearance Height'), translate('PathSettings', 'Default value added to StartDepth used for the clearance height.'))
|
||||
|
||||
def updateSetting(self, name, value):
|
||||
cell = self.obj.Settings.getCellFromAlias(name)
|
||||
PathLog.debug("updateSetting(%s, %s): %s" % (name, value, cell))
|
||||
self.obj.Settings.set(cell, value)
|
||||
|
||||
def createSetting(self, row, name, value, label, desc):
|
||||
labelCell = "B%d" % row
|
||||
valueCell = "C%d" % row
|
||||
descCell = "D%d" % row
|
||||
PathLog.debug("createSetting(%d, %s, %s): %s" % (row, name, value, valueCell))
|
||||
self.obj.Settings.set(labelCell, label)
|
||||
self.obj.Settings.set(valueCell, value)
|
||||
self.obj.Settings.setAlias(valueCell, name)
|
||||
self.obj.Settings.set(descCell, desc)
|
||||
|
||||
Reference in New Issue
Block a user