Slicing no longer occurs when a perObject setting is in error state

CURA-1288
This commit is contained in:
Jaime van Kessel 2016-06-02 14:19:39 +02:00
parent ca218d7a1f
commit c994cb6bef
2 changed files with 17 additions and 3 deletions

View File

@ -3,7 +3,6 @@
import numpy
from string import Formatter
import traceback
from enum import IntEnum
from UM.Job import Job
@ -59,7 +58,7 @@ class StartSliceJob(Job):
self.setResult(StartJobResult.Error)
return
#Don't slice if there is a setting with an error value.
# Don't slice if there is a setting with an error value.
for key in stack.getAllKeys():
validation_state = stack.getProperty(key, "validationState")
if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError):
@ -69,6 +68,22 @@ class StartSliceJob(Job):
Job.yieldThread()
# Don't slice if there is a per object setting with an error value.
for node in DepthFirstIterator(self._scene.getRoot()):
if type(node) is not SceneNode or not node.isSelectable():
continue
node_stack = node.callDecoration("getStack")
if node_stack:
for key in node_stack.getAllKeys():
validation_state = node_stack.getProperty(key, "validationState")
if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError):
Logger.log("w", "Per object setting %s is not valid, but %s. Aborting slicing.", key, validation_state)
self.setResult(StartJobResult.SettingError)
return
Job.yieldThread()
with self._scene.getSceneLock():
# Remove old layer data.
for node in DepthFirstIterator(self._scene.getRoot()):

View File

@ -32,7 +32,6 @@ class PerObjectSettingsTool(Tool):
return selected_object_id
def getContainerID(self):
selected_object = Selection.getSelectedObject(0)
if selected_object.getParent().callDecoration("isGroup"):
selected_object = selected_object.getParent()