Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNino van Hooff <ninovanhooff@gmail.com>2019-10-02 14:07:11 +0300
committerNino van Hooff <ninovanhooff@gmail.com>2019-10-02 14:09:37 +0300
commit95120300601c5a8391a3909c7291f95248d35052 (patch)
tree5d9b34864868740756dbdc8d030b1a056cb2066e /cura/OneAtATimeIterator.py
parent7bf2fa3b43d1ffe30af1f6161d37ceb8ed09d905 (diff)
Check for adhesion area collisions in one-at-a-time ordering
CURA-6785
Diffstat (limited to 'cura/OneAtATimeIterator.py')
-rw-r--r--cura/OneAtATimeIterator.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/cura/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py
index a61ce492a9..4d420f6d05 100644
--- a/cura/OneAtATimeIterator.py
+++ b/cura/OneAtATimeIterator.py
@@ -92,12 +92,24 @@ class OneAtATimeIterator(Iterator.Iterator):
score_b = sum(self._hit_map[self._original_node_list.index(b)])
return score_a - score_b
- # Checks if A can be printed before B
+ ## Checks if A can be printed before B
def _checkHit(self, a: SceneNode, b: SceneNode) -> bool:
if a == b:
return False
- overlap = a.callDecoration("getConvexHullBoundary").intersectsPolygon(b.callDecoration("getConvexHullHeadFull"))
+ a_hit_hull = a.callDecoration("getConvexHullBoundary")
+ b_hit_hull = b.callDecoration("getConvexHullHeadFull")
+ overlap = a_hit_hull.intersectsPolygon(b_hit_hull)
+
+ if overlap:
+ return True
+
+ # Adhesion areas must never overlap, regardless of printing order
+ # This would cause over-extrusion
+ a_hit_hull = a.callDecoration("getAdhesionArea")
+ b_hit_hull = b.callDecoration("getAdhesionArea")
+ overlap = a_hit_hull.intersectsPolygon(b_hit_hull)
+
if overlap:
return True
else: