black reformat (setupsheet)
This commit is contained in:
@@ -45,21 +45,32 @@ def translate(context, text, disambig=None):
|
||||
class Template:
|
||||
# pylint: disable=no-init
|
||||
|
||||
HorizRapid = 'HorizRapid'
|
||||
VertRapid = 'VertRapid'
|
||||
CoolantMode = 'CoolantMode'
|
||||
SafeHeightOffset = 'SafeHeightOffset'
|
||||
SafeHeightExpression = 'SafeHeightExpression'
|
||||
ClearanceHeightOffset = 'ClearanceHeightOffset'
|
||||
ClearanceHeightExpression = 'ClearanceHeightExpression'
|
||||
StartDepthExpression = 'StartDepthExpression'
|
||||
FinalDepthExpression = 'FinalDepthExpression'
|
||||
StepDownExpression = 'StepDownExpression'
|
||||
Fixtures = 'Fixtures'
|
||||
OrderOutputBy = 'OrderOutputBy'
|
||||
SplitOutput = 'SplitOutput'
|
||||
HorizRapid = "HorizRapid"
|
||||
VertRapid = "VertRapid"
|
||||
CoolantMode = "CoolantMode"
|
||||
SafeHeightOffset = "SafeHeightOffset"
|
||||
SafeHeightExpression = "SafeHeightExpression"
|
||||
ClearanceHeightOffset = "ClearanceHeightOffset"
|
||||
ClearanceHeightExpression = "ClearanceHeightExpression"
|
||||
StartDepthExpression = "StartDepthExpression"
|
||||
FinalDepthExpression = "FinalDepthExpression"
|
||||
StepDownExpression = "StepDownExpression"
|
||||
Fixtures = "Fixtures"
|
||||
OrderOutputBy = "OrderOutputBy"
|
||||
SplitOutput = "SplitOutput"
|
||||
|
||||
All = [HorizRapid, VertRapid, CoolantMode, SafeHeightOffset, SafeHeightExpression, ClearanceHeightOffset, ClearanceHeightExpression, StartDepthExpression, FinalDepthExpression, StepDownExpression]
|
||||
All = [
|
||||
HorizRapid,
|
||||
VertRapid,
|
||||
CoolantMode,
|
||||
SafeHeightOffset,
|
||||
SafeHeightExpression,
|
||||
ClearanceHeightOffset,
|
||||
ClearanceHeightExpression,
|
||||
StartDepthExpression,
|
||||
FinalDepthExpression,
|
||||
StepDownExpression,
|
||||
]
|
||||
|
||||
|
||||
def _traverseTemplateAttributes(attrs, codec):
|
||||
@@ -82,46 +93,130 @@ def _traverseTemplateAttributes(attrs, codec):
|
||||
|
||||
|
||||
class SetupSheet:
|
||||
'''Property container object used by a Job to hold global reference values. '''
|
||||
"""Property container object used by a Job to hold global reference values."""
|
||||
|
||||
TemplateReference = '${SetupSheet}'
|
||||
TemplateReference = "${SetupSheet}"
|
||||
|
||||
DefaultSafeHeightOffset = '3 mm'
|
||||
DefaultClearanceHeightOffset = '5 mm'
|
||||
DefaultSafeHeightExpression = "OpStockZMax+${SetupSheet}.SafeHeightOffset"
|
||||
DefaultSafeHeightOffset = "3 mm"
|
||||
DefaultClearanceHeightOffset = "5 mm"
|
||||
DefaultSafeHeightExpression = "OpStockZMax+${SetupSheet}.SafeHeightOffset"
|
||||
DefaultClearanceHeightExpression = "OpStockZMax+${SetupSheet}.ClearanceHeightOffset"
|
||||
|
||||
DefaultStartDepthExpression = 'OpStartDepth'
|
||||
DefaultFinalDepthExpression = 'OpFinalDepth'
|
||||
DefaultStepDownExpression = 'OpToolDiameter'
|
||||
DefaultStartDepthExpression = "OpStartDepth"
|
||||
DefaultFinalDepthExpression = "OpFinalDepth"
|
||||
DefaultStepDownExpression = "OpToolDiameter"
|
||||
|
||||
DefaultCoolantModes = ['None', 'Flood', 'Mist']
|
||||
DefaultCoolantModes = ["None", "Flood", "Mist"]
|
||||
|
||||
def __init__(self, obj):
|
||||
self.obj = obj
|
||||
obj.addProperty('App::PropertySpeed', 'VertRapid', 'ToolController', translate('PathSetupSheet', 'Default speed for horizontal rapid moves.'))
|
||||
obj.addProperty('App::PropertySpeed', 'HorizRapid', 'ToolController', translate('PathSetupSheet', 'Default speed for vertical rapid moves.'))
|
||||
obj.addProperty(
|
||||
"App::PropertySpeed",
|
||||
"VertRapid",
|
||||
"ToolController",
|
||||
translate("PathSetupSheet", "Default speed for horizontal rapid moves."),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertySpeed",
|
||||
"HorizRapid",
|
||||
"ToolController",
|
||||
translate("PathSetupSheet", "Default speed for vertical rapid moves."),
|
||||
)
|
||||
|
||||
obj.addProperty('App::PropertyStringList', 'CoolantModes', 'CoolantMode', translate('PathSetupSheet', 'Coolant Modes'))
|
||||
obj.addProperty('App::PropertyEnumeration', 'CoolantMode', 'CoolantMode', translate('PathSetupSheet', 'Default coolant mode.'))
|
||||
obj.addProperty(
|
||||
"App::PropertyStringList",
|
||||
"CoolantModes",
|
||||
"CoolantMode",
|
||||
translate("PathSetupSheet", "Coolant Modes"),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyEnumeration",
|
||||
"CoolantMode",
|
||||
"CoolantMode",
|
||||
translate("PathSetupSheet", "Default coolant mode."),
|
||||
)
|
||||
|
||||
obj.addProperty('App::PropertyLength', 'SafeHeightOffset', 'OperationHeights', translate('PathSetupSheet', 'The usage of this field depends on SafeHeightExpression - by default its value is added to StartDepth and used for SafeHeight of an operation.'))
|
||||
obj.addProperty('App::PropertyString', 'SafeHeightExpression', 'OperationHeights', translate('PathSetupSheet', 'Expression set for the SafeHeight of new operations.'))
|
||||
obj.addProperty('App::PropertyLength', 'ClearanceHeightOffset', 'OperationHeights', translate('PathSetupSheet', 'The usage of this field depends on ClearanceHeightExpression - by default is value is added to StartDepth and used for ClearanceHeight of an operation.'))
|
||||
obj.addProperty('App::PropertyString', 'ClearanceHeightExpression', 'OperationHeights', translate('PathSetupSheet', 'Expression set for the ClearanceHeight of new operations.'))
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"SafeHeightOffset",
|
||||
"OperationHeights",
|
||||
translate(
|
||||
"PathSetupSheet",
|
||||
"The usage of this field depends on SafeHeightExpression - by default its value is added to StartDepth and used for SafeHeight of an operation.",
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyString",
|
||||
"SafeHeightExpression",
|
||||
"OperationHeights",
|
||||
translate(
|
||||
"PathSetupSheet", "Expression set for the SafeHeight of new operations."
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"ClearanceHeightOffset",
|
||||
"OperationHeights",
|
||||
translate(
|
||||
"PathSetupSheet",
|
||||
"The usage of this field depends on ClearanceHeightExpression - by default is value is added to StartDepth and used for ClearanceHeight of an operation.",
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyString",
|
||||
"ClearanceHeightExpression",
|
||||
"OperationHeights",
|
||||
translate(
|
||||
"PathSetupSheet",
|
||||
"Expression set for the ClearanceHeight of new operations.",
|
||||
),
|
||||
)
|
||||
|
||||
obj.addProperty('App::PropertyString', 'StartDepthExpression', 'OperationDepths', translate('PathSetupSheet', 'Expression used for StartDepth of new operations.'))
|
||||
obj.addProperty('App::PropertyString', 'FinalDepthExpression', 'OperationDepths', translate('PathSetupSheet', 'Expression used for FinalDepth of new operations.'))
|
||||
obj.addProperty('App::PropertyString', 'StepDownExpression', 'OperationDepths', translate('PathSetupSheet', 'Expression used for StepDown of new operations.'))
|
||||
obj.addProperty(
|
||||
"App::PropertyString",
|
||||
"StartDepthExpression",
|
||||
"OperationDepths",
|
||||
translate(
|
||||
"PathSetupSheet", "Expression used for StartDepth of new operations."
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyString",
|
||||
"FinalDepthExpression",
|
||||
"OperationDepths",
|
||||
translate(
|
||||
"PathSetupSheet", "Expression used for FinalDepth of new operations."
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyString",
|
||||
"StepDownExpression",
|
||||
"OperationDepths",
|
||||
translate(
|
||||
"PathSetupSheet", "Expression used for StepDown of new operations."
|
||||
),
|
||||
)
|
||||
|
||||
obj.SafeHeightOffset = self.decodeAttributeString(self.DefaultSafeHeightOffset)
|
||||
obj.ClearanceHeightOffset = self.decodeAttributeString(self.DefaultClearanceHeightOffset)
|
||||
obj.SafeHeightExpression = self.decodeAttributeString(self.DefaultSafeHeightExpression)
|
||||
obj.ClearanceHeightExpression = self.decodeAttributeString(self.DefaultClearanceHeightExpression)
|
||||
obj.SafeHeightOffset = self.decodeAttributeString(self.DefaultSafeHeightOffset)
|
||||
obj.ClearanceHeightOffset = self.decodeAttributeString(
|
||||
self.DefaultClearanceHeightOffset
|
||||
)
|
||||
obj.SafeHeightExpression = self.decodeAttributeString(
|
||||
self.DefaultSafeHeightExpression
|
||||
)
|
||||
obj.ClearanceHeightExpression = self.decodeAttributeString(
|
||||
self.DefaultClearanceHeightExpression
|
||||
)
|
||||
|
||||
obj.StartDepthExpression = self.decodeAttributeString(self.DefaultStartDepthExpression)
|
||||
obj.FinalDepthExpression = self.decodeAttributeString(self.DefaultFinalDepthExpression)
|
||||
obj.StepDownExpression = self.decodeAttributeString(self.DefaultStepDownExpression)
|
||||
obj.StartDepthExpression = self.decodeAttributeString(
|
||||
self.DefaultStartDepthExpression
|
||||
)
|
||||
obj.FinalDepthExpression = self.decodeAttributeString(
|
||||
self.DefaultFinalDepthExpression
|
||||
)
|
||||
obj.StepDownExpression = self.decodeAttributeString(
|
||||
self.DefaultStepDownExpression
|
||||
)
|
||||
|
||||
obj.CoolantModes = self.DefaultCoolantModes
|
||||
obj.CoolantMode = self.DefaultCoolantModes
|
||||
@@ -133,22 +228,34 @@ class SetupSheet:
|
||||
|
||||
def __setstate__(self, state):
|
||||
for obj in FreeCAD.ActiveDocument.Objects:
|
||||
if hasattr(obj, 'Proxy') and obj.Proxy == self:
|
||||
if hasattr(obj, "Proxy") and obj.Proxy == self:
|
||||
self.obj = obj
|
||||
break
|
||||
return None
|
||||
|
||||
def hasDefaultToolRapids(self):
|
||||
return PathGeom.isRoughly(self.obj.VertRapid.Value, 0) and PathGeom.isRoughly(self.obj.HorizRapid.Value, 0)
|
||||
return PathGeom.isRoughly(self.obj.VertRapid.Value, 0) and PathGeom.isRoughly(
|
||||
self.obj.HorizRapid.Value, 0
|
||||
)
|
||||
|
||||
def hasDefaultOperationHeights(self):
|
||||
if self.obj.SafeHeightOffset.UserString != FreeCAD.Units.Quantity(self.DefaultSafeHeightOffset).UserString:
|
||||
if (
|
||||
self.obj.SafeHeightOffset.UserString
|
||||
!= FreeCAD.Units.Quantity(self.DefaultSafeHeightOffset).UserString
|
||||
):
|
||||
return False
|
||||
if self.obj.ClearanceHeightOffset.UserString != FreeCAD.Units.Quantity(self.DefaultClearanceHeightOffset).UserString:
|
||||
if (
|
||||
self.obj.ClearanceHeightOffset.UserString
|
||||
!= FreeCAD.Units.Quantity(self.DefaultClearanceHeightOffset).UserString
|
||||
):
|
||||
return False
|
||||
if self.obj.SafeHeightExpression != self.decodeAttributeString(self.DefaultSafeHeightExpression):
|
||||
if self.obj.SafeHeightExpression != self.decodeAttributeString(
|
||||
self.DefaultSafeHeightExpression
|
||||
):
|
||||
return False
|
||||
if self.obj.ClearanceHeightExpression != self.decodeAttributeString(self.DefaultClearanceHeightExpression):
|
||||
if self.obj.ClearanceHeightExpression != self.decodeAttributeString(
|
||||
self.DefaultClearanceHeightExpression
|
||||
):
|
||||
return False
|
||||
return True
|
||||
|
||||
@@ -165,7 +272,7 @@ class SetupSheet:
|
||||
return self.obj.CoolantMode == "None"
|
||||
|
||||
def setFromTemplate(self, attrs):
|
||||
'''setFromTemplate(attrs) ... sets the default values from the given dictionary.'''
|
||||
"""setFromTemplate(attrs) ... sets the default values from the given dictionary."""
|
||||
for name in Template.All:
|
||||
if attrs.get(name) is not None:
|
||||
setattr(self.obj, name, attrs[name])
|
||||
@@ -180,15 +287,22 @@ class SetupSheet:
|
||||
prop = prototype.getProperty(propName)
|
||||
propertyName = OpPropertyName(opName, propName)
|
||||
propertyGroup = OpPropertyGroup(opName)
|
||||
prop.setupProperty(self.obj, propertyName, propertyGroup, prop.valueFromString(value))
|
||||
prop.setupProperty(
|
||||
self.obj,
|
||||
propertyName,
|
||||
propertyGroup,
|
||||
prop.valueFromString(value),
|
||||
)
|
||||
|
||||
def templateAttributes(self,
|
||||
includeRapids=True,
|
||||
includeCoolantMode=True,
|
||||
includeHeights=True,
|
||||
includeDepths=True,
|
||||
includeOps=None):
|
||||
'''templateAttributes(includeRapids, includeHeights, includeDepths) ... answers a dictionary with the default values.'''
|
||||
def templateAttributes(
|
||||
self,
|
||||
includeRapids=True,
|
||||
includeCoolantMode=True,
|
||||
includeHeights=True,
|
||||
includeDepths=True,
|
||||
includeOps=None,
|
||||
):
|
||||
"""templateAttributes(includeRapids, includeHeights, includeDepths) ... answers a dictionary with the default values."""
|
||||
attrs = {}
|
||||
|
||||
if includeRapids:
|
||||
@@ -199,15 +313,19 @@ class SetupSheet:
|
||||
attrs[Template.CoolantMode] = self.obj.CoolantMode
|
||||
|
||||
if includeHeights:
|
||||
attrs[Template.SafeHeightOffset] = self.obj.SafeHeightOffset.UserString
|
||||
attrs[Template.SafeHeightExpression] = self.obj.SafeHeightExpression
|
||||
attrs[Template.ClearanceHeightOffset] = self.obj.ClearanceHeightOffset.UserString
|
||||
attrs[Template.ClearanceHeightExpression] = self.obj.ClearanceHeightExpression
|
||||
attrs[Template.SafeHeightOffset] = self.obj.SafeHeightOffset.UserString
|
||||
attrs[Template.SafeHeightExpression] = self.obj.SafeHeightExpression
|
||||
attrs[
|
||||
Template.ClearanceHeightOffset
|
||||
] = self.obj.ClearanceHeightOffset.UserString
|
||||
attrs[
|
||||
Template.ClearanceHeightExpression
|
||||
] = self.obj.ClearanceHeightExpression
|
||||
|
||||
if includeDepths:
|
||||
attrs[Template.StartDepthExpression] = self.obj.StartDepthExpression
|
||||
attrs[Template.FinalDepthExpression] = self.obj.FinalDepthExpression
|
||||
attrs[Template.StepDownExpression] = self.obj.StepDownExpression
|
||||
attrs[Template.StepDownExpression] = self.obj.StepDownExpression
|
||||
|
||||
if includeOps:
|
||||
for opName in includeOps:
|
||||
@@ -216,13 +334,15 @@ class SetupSheet:
|
||||
for propName in op.properties():
|
||||
prop = OpPropertyName(opName, propName)
|
||||
if hasattr(self.obj, prop):
|
||||
settings[propName] = PathUtil.getPropertyValueString(self.obj, prop)
|
||||
settings[propName] = PathUtil.getPropertyValueString(
|
||||
self.obj, prop
|
||||
)
|
||||
attrs[opName] = settings
|
||||
|
||||
return attrs
|
||||
|
||||
def expressionReference(self):
|
||||
'''expressionReference() ... returns the string to be used in expressions'''
|
||||
"""expressionReference() ... returns the string to be used in expressions"""
|
||||
# Using the Name here and not the Label (both would be valid) because the Name 'fails early'.
|
||||
#
|
||||
# If there is a Name/Label conflict and an expression is bound to the Name we'll get an error
|
||||
@@ -244,23 +364,27 @@ class SetupSheet:
|
||||
return self.obj.Name
|
||||
|
||||
def encodeAttributeString(self, attr):
|
||||
'''encodeAttributeString(attr) ... return the encoded string of a template attribute.'''
|
||||
return PathUtil.toUnicode(attr.replace(self.expressionReference(), self.TemplateReference))
|
||||
"""encodeAttributeString(attr) ... return the encoded string of a template attribute."""
|
||||
return PathUtil.toUnicode(
|
||||
attr.replace(self.expressionReference(), self.TemplateReference)
|
||||
)
|
||||
|
||||
def decodeAttributeString(self, attr):
|
||||
'''decodeAttributeString(attr) ... return the decoded string of a template attribute.'''
|
||||
return PathUtil.toUnicode(attr.replace(self.TemplateReference, self.expressionReference()))
|
||||
"""decodeAttributeString(attr) ... return the decoded string of a template attribute."""
|
||||
return PathUtil.toUnicode(
|
||||
attr.replace(self.TemplateReference, self.expressionReference())
|
||||
)
|
||||
|
||||
def encodeTemplateAttributes(self, attrs):
|
||||
'''encodeTemplateAttributes(attrs) ... return a dictionary with all values encoded.'''
|
||||
"""encodeTemplateAttributes(attrs) ... return a dictionary with all values encoded."""
|
||||
return _traverseTemplateAttributes(attrs, self.encodeAttributeString)
|
||||
|
||||
def decodeTemplateAttributes(self, attrs):
|
||||
'''decodeTemplateAttributes(attrs) ... expand template attributes to reference the receiver where applicable.'''
|
||||
"""decodeTemplateAttributes(attrs) ... expand template attributes to reference the receiver where applicable."""
|
||||
return _traverseTemplateAttributes(attrs, self.decodeAttributeString)
|
||||
|
||||
def operationsWithSettings(self):
|
||||
'''operationsWithSettings() ... returns a list of operations which currently have some settings defined.'''
|
||||
"""operationsWithSettings() ... returns a list of operations which currently have some settings defined."""
|
||||
ops = []
|
||||
for name, value in PathUtil.keyValueIter(_RegisteredOps):
|
||||
for prop in value.registeredPropertyNames(name):
|
||||
@@ -283,23 +407,32 @@ class SetupSheet:
|
||||
|
||||
def onDocumentRestored(self, obj):
|
||||
|
||||
if not hasattr(obj, 'CoolantModes'):
|
||||
obj.addProperty('App::PropertyStringList', 'CoolantModes', 'CoolantMode', translate('PathSetupSheet', 'Coolant Modes'))
|
||||
if not hasattr(obj, "CoolantModes"):
|
||||
obj.addProperty(
|
||||
"App::PropertyStringList",
|
||||
"CoolantModes",
|
||||
"CoolantMode",
|
||||
translate("PathSetupSheet", "Coolant Modes"),
|
||||
)
|
||||
obj.CoolantModes = self.DefaultCoolantModes
|
||||
|
||||
if not hasattr(obj, 'CoolantMode'):
|
||||
obj.addProperty('App::PropertyEnumeration', 'CoolantMode', 'CoolantMode', translate('PathSetupSheet', 'Default coolant mode.'))
|
||||
if not hasattr(obj, "CoolantMode"):
|
||||
obj.addProperty(
|
||||
"App::PropertyEnumeration",
|
||||
"CoolantMode",
|
||||
"CoolantMode",
|
||||
translate("PathSetupSheet", "Default coolant mode."),
|
||||
)
|
||||
obj.CoolantMode = self.DefaultCoolantModes
|
||||
|
||||
|
||||
def Create(name='SetupSheet'):
|
||||
obj = FreeCAD.ActiveDocument.addObject('App::FeaturePython', name)
|
||||
def Create(name="SetupSheet"):
|
||||
obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython", name)
|
||||
obj.Proxy = SetupSheet(obj)
|
||||
return obj
|
||||
|
||||
|
||||
class _RegisteredOp(object):
|
||||
|
||||
def __init__(self, factory, properties):
|
||||
self.factory = factory
|
||||
self.properties = properties
|
||||
@@ -319,7 +452,7 @@ def RegisterOperation(name, objFactory, setupProperties):
|
||||
|
||||
|
||||
def OpNamePrefix(name):
|
||||
return name.replace('Path', '').replace(' ', '').replace('_', '')
|
||||
return name.replace("Path", "").replace(" ", "").replace("_", "")
|
||||
|
||||
|
||||
def OpPropertyName(opName, propName):
|
||||
|
||||
Reference in New Issue
Block a user