diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index 4b493caca8..2f97fc628a 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -223,13 +223,17 @@ class ObjectJob: doc.removeObject(obj.Model.Name) obj.Model = None - # Tool controllers don't depend on anything + # Tool controllers might refer to either legacy tool or toolbit PathLog.debug('taking down tool controller') for tc in obj.ToolController: + if hasattr(tc.Tool,"Proxy"): + PathUtil.clearExpressionEngine(tc.Tool) + doc.removeObject(tc.Tool.Name) PathUtil.clearExpressionEngine(tc) tc.Proxy.onDelete(tc) doc.removeObject(tc.Name) obj.ToolController = [] + # SetupSheet PathUtil.clearExpressionEngine(obj.SetupSheet) doc.removeObject(obj.SetupSheet.Name) @@ -351,8 +355,9 @@ class ObjectJob: return None def execute(self, obj): - obj.Path = obj.Operations.Path - self.getCycleTime() + if hasattr(obj, 'Operations'): + obj.Path = obj.Operations.Path + self.getCycleTime() def getCycleTime(self): seconds = 0 diff --git a/src/Mod/Path/PathScripts/PathToolController.py b/src/Mod/Path/PathScripts/PathToolController.py index 9ff19b9668..83695ce9a6 100644 --- a/src/Mod/Path/PathScripts/PathToolController.py +++ b/src/Mod/Path/PathScripts/PathToolController.py @@ -80,7 +80,7 @@ class ToolController: def onDelete(self, obj, arg2=None): # pylint: disable=unused-argument if not self.usesLegacyTool(obj): - if len(obj.Tool.InList) == 1: + if hasattr(obj.Tool, 'InList') and len(obj.Tool.InList) == 1: if hasattr(obj.Tool.Proxy, 'onDelete'): obj.Tool.Proxy.onDelete(obj.Tool) obj.Document.removeObject(obj.Tool.Name)