Browse Source

Prevent modifier meshes from blocking one at a time slicing

CURA-6030
Jaime van Kessel 5 years ago
parent
commit
f7d0bcd0d4
1 changed files with 12 additions and 3 deletions
  1. 12 3
      cura/Scene/ConvexHullDecorator.py

+ 12 - 3
cura/Scene/ConvexHullDecorator.py

@@ -66,6 +66,10 @@ class ConvexHullDecorator(SceneNodeDecorator):
 
         node.boundingBoxChanged.connect(self._onChanged)
 
+        per_object_stack = node.callDecoration("getStack")
+        if per_object_stack:
+            per_object_stack.propertyChanged.connect(self._onSettingValueChanged)
+
         self._onChanged()
 
     ## Force that a new (empty) object is created upon copy.
@@ -76,7 +80,8 @@ class ConvexHullDecorator(SceneNodeDecorator):
     def getConvexHull(self) -> Optional[Polygon]:
         if self._node is None:
             return None
-
+        if self._node.callDecoration("isNonPrintingMesh"):
+            return None
         hull = self._compute2DConvexHull()
 
         if self._global_stack and self._node is not None and hull is not None:
@@ -106,7 +111,8 @@ class ConvexHullDecorator(SceneNodeDecorator):
     def getConvexHullHead(self) -> Optional[Polygon]:
         if self._node is None:
             return None
-
+        if self._node.callDecoration("isNonPrintingMesh"):
+            return None
         if self._global_stack:
             if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node):
                 head_with_fans = self._compute2DConvexHeadMin()
@@ -122,6 +128,9 @@ class ConvexHullDecorator(SceneNodeDecorator):
     def getConvexHullBoundary(self) -> Optional[Polygon]:
         if self._node is None:
             return None
+        
+        if self._node.callDecoration("isNonPrintingMesh"):
+            return None
 
         if self._global_stack:
             if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node):
@@ -398,4 +407,4 @@ class ConvexHullDecorator(SceneNodeDecorator):
     ##  Settings that change the convex hull.
     #
     #   If these settings change, the convex hull should be recalculated.
-    _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width"}
+    _influencing_settings = {"xy_offset", "xy_offset_layer_0", "mold_enabled", "mold_width", "anti_overhang_mesh", "infill_mesh", "cutting_mesh"}