If buildplate has errors, slicing is not possible

CURA-2234
This commit is contained in:
Jaime van Kessel 2016-09-07 17:19:20 +02:00
parent 35168ddd5a
commit 9a84deb14e
2 changed files with 11 additions and 2 deletions

View file

@ -85,6 +85,8 @@ class BuildVolume(SceneNode):
ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged) ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderStackChanged)
self._onActiveExtruderStackChanged() self._onActiveExtruderStackChanged()
self._has_errors = False
def setWidth(self, width): def setWidth(self, width):
if width: self._width = width if width: self._width = width
@ -316,10 +318,13 @@ class BuildVolume(SceneNode):
if rebuild_me: if rebuild_me:
self.rebuild() self.rebuild()
def hasErrors(self):
return self._has_errors
def _updateDisallowedAreas(self): def _updateDisallowedAreas(self):
if not self._global_container_stack: if not self._global_container_stack:
return return
self._has_errors = False # Reset.
disallowed_areas = copy.deepcopy( disallowed_areas = copy.deepcopy(
self._global_container_stack.getProperty("machine_disallowed_areas", "value")) self._global_container_stack.getProperty("machine_disallowed_areas", "value"))
areas = [] areas = []
@ -424,7 +429,7 @@ class BuildVolume(SceneNode):
if not collision: if not collision:
areas.append(self._prime_tower_area) areas.append(self._prime_tower_area)
self._prime_tower_area = None self._prime_tower_area = None
self._has_errors = collision
self._disallowed_areas = areas self._disallowed_areas = areas
## Convenience function to calculate the size of the bed adhesion in directions x, y. ## Convenience function to calculate the size of the bed adhesion in directions x, y.

View file

@ -78,6 +78,10 @@ class StartSliceJob(Job):
self.setResult(StartJobResult.SettingError) self.setResult(StartJobResult.SettingError)
return return
if Application.getInstance().getBuildVolume().hasErrors():
self.setResult(StartJobResult.SettingError)
return
# Don't slice if there is a per object setting with an error value. # Don't slice if there is a per object setting with an error value.
for node in DepthFirstIterator(self._scene.getRoot()): for node in DepthFirstIterator(self._scene.getRoot()):
if type(node) is not SceneNode or not node.isSelectable(): if type(node) is not SceneNode or not node.isSelectable():