mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-11 08:19:02 +08:00
Slicing no longer occurs when a perObject setting is in error state
CURA-1288
This commit is contained in:
parent
ca218d7a1f
commit
c994cb6bef
@ -3,7 +3,6 @@
|
|||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
from string import Formatter
|
from string import Formatter
|
||||||
import traceback
|
|
||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
|
|
||||||
from UM.Job import Job
|
from UM.Job import Job
|
||||||
@ -59,7 +58,7 @@ class StartSliceJob(Job):
|
|||||||
self.setResult(StartJobResult.Error)
|
self.setResult(StartJobResult.Error)
|
||||||
return
|
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():
|
for key in stack.getAllKeys():
|
||||||
validation_state = stack.getProperty(key, "validationState")
|
validation_state = stack.getProperty(key, "validationState")
|
||||||
if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError):
|
if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError):
|
||||||
@ -69,6 +68,22 @@ class StartSliceJob(Job):
|
|||||||
|
|
||||||
Job.yieldThread()
|
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():
|
with self._scene.getSceneLock():
|
||||||
# Remove old layer data.
|
# Remove old layer data.
|
||||||
for node in DepthFirstIterator(self._scene.getRoot()):
|
for node in DepthFirstIterator(self._scene.getRoot()):
|
||||||
|
@ -32,7 +32,6 @@ class PerObjectSettingsTool(Tool):
|
|||||||
return selected_object_id
|
return selected_object_id
|
||||||
|
|
||||||
def getContainerID(self):
|
def getContainerID(self):
|
||||||
|
|
||||||
selected_object = Selection.getSelectedObject(0)
|
selected_object = Selection.getSelectedObject(0)
|
||||||
if selected_object.getParent().callDecoration("isGroup"):
|
if selected_object.getParent().callDecoration("isGroup"):
|
||||||
selected_object = selected_object.getParent()
|
selected_object = selected_object.getParent()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user