diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py index befb52ee5e..49e2befd28 100644 --- a/cura/PreviewPass.py +++ b/cura/PreviewPass.py @@ -84,29 +84,30 @@ class PreviewPass(RenderPass): # Fill up the batch with objects that can be sliced. for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. - if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): - per_mesh_stack = node.callDecoration("getStack") - if node.callDecoration("isNonThumbnailVisibleMesh"): - # Non printing mesh - continue - elif per_mesh_stack is not None and per_mesh_stack.getProperty("support_mesh", "value"): - # Support mesh - uniforms = {} - shade_factor = 0.6 - diffuse_color = node.getDiffuseColor() - diffuse_color2 = [ - diffuse_color[0] * shade_factor, - diffuse_color[1] * shade_factor, - diffuse_color[2] * shade_factor, - 1.0] - uniforms["diffuse_color"] = prettier_color(diffuse_color) - uniforms["diffuse_color_2"] = diffuse_color2 - batch_support_mesh.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) - else: - # Normal scene node - uniforms = {} - uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) - batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) + if hasattr(node, "_outside_buildarea") and not node._outside_buildarea: + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible(): + per_mesh_stack = node.callDecoration("getStack") + if node.callDecoration("isNonThumbnailVisibleMesh"): + # Non printing mesh + continue + elif per_mesh_stack is not None and per_mesh_stack.getProperty("support_mesh", "value"): + # Support mesh + uniforms = {} + shade_factor = 0.6 + diffuse_color = node.getDiffuseColor() + diffuse_color2 = [ + diffuse_color[0] * shade_factor, + diffuse_color[1] * shade_factor, + diffuse_color[2] * shade_factor, + 1.0] + uniforms["diffuse_color"] = prettier_color(diffuse_color) + uniforms["diffuse_color_2"] = diffuse_color2 + batch_support_mesh.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) + else: + # Normal scene node + uniforms = {} + uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) + batch.addItem(node.getWorldTransformation(), node.getMeshData(), uniforms = uniforms) self.bind() diff --git a/cura/Snapshot.py b/cura/Snapshot.py index b730c1fdcf..0410d8670d 100644 --- a/cura/Snapshot.py +++ b/cura/Snapshot.py @@ -48,12 +48,12 @@ class Snapshot: # determine zoom and look at bbox = None for node in DepthFirstIterator(root): - if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible() and not node.callDecoration("isNonThumbnailVisibleMesh"): - if bbox is None: - bbox = node.getBoundingBox() - else: - bbox = bbox + node.getBoundingBox() - + if hasattr(node, "_outside_buildarea") and not node._outside_buildarea: + if node.callDecoration("isSliceable") and node.getMeshData() and node.isVisible() and not node.callDecoration("isNonThumbnailVisibleMesh"): + if bbox is None: + bbox = node.getBoundingBox() + else: + bbox = bbox + node.getBoundingBox() # If there is no bounding box, it means that there is no model in the buildplate if bbox is None: return None