From 21b9c0639db03519e09dd2ac432feed82fb5623a Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 14 Oct 2020 17:14:38 +0200 Subject: [PATCH] Exclude objects outside buildplate from OneAtATimeIterator CURA-7776 --- cura/OneAtATimeIterator.py | 9 ++++++--- plugins/CuraEngineBackend/StartSliceJob.py | 4 ---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index def0dac4fe..8bdddba554 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -27,10 +27,13 @@ class OneAtATimeIterator(Iterator.Iterator): if not issubclass(type(node), SceneNode): continue + # Node can't be printed, so don't bother sending it. + if getattr(node, "_outside_buildarea", False): + continue + if node.callDecoration("getConvexHull"): node_list.append(node) - if len(node_list) < 2: self._node_stack = node_list[:] return @@ -38,8 +41,8 @@ class OneAtATimeIterator(Iterator.Iterator): # Copy the list self._original_node_list = node_list[:] - ## Initialise the hit map (pre-compute all hits between all objects) - self._hit_map = [[self._checkHit(i,j) for i in node_list] for j in node_list] + # Initialise the hit map (pre-compute all hits between all objects) + self._hit_map = [[self._checkHit(i, j) for i in node_list] for j in node_list] # Check if we have to files that block each other. If this is the case, there is no solution! for a in range(0, len(node_list)): diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index bd42d81566..453907ffc0 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -205,10 +205,6 @@ class StartSliceJob(Job): for node in OneAtATimeIterator(self._scene.getRoot()): temp_list = [] - # Node can't be printed, so don't bother sending it. - if getattr(node, "_outside_buildarea", False): - continue - # Filter on current build plate build_plate_number = node.callDecoration("getBuildPlateNumber") if build_plate_number is not None and build_plate_number != self._build_plate_number: