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-11-12 14:56:07 +0300
committerNino van Hooff <ninovanhooff@gmail.com>2019-11-12 14:56:07 +0300
commit558ed4b1e8f6a298db5b639ee39c2f49286bac7b (patch)
treeab27798c142dba7aa8f1824dc30c44f4b8fb93a6 /cura/Scene
parent254dde5b0542127e1d051e57a7e778638a88e6dc (diff)
Change shadows on buildplate for one-at-a-time printing
Inner: adhesion area Outer: full head In my opinion this allows the user to more easily see whether this object can be printed after another object.
Diffstat (limited to 'cura/Scene')
-rw-r--r--cura/Scene/ConvexHullDecorator.py11
-rw-r--r--cura/Scene/ConvexHullNode.py6
2 files changed, 14 insertions, 3 deletions
diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py
index d3bd3be61f..9a2a0b9c7a 100644
--- a/cura/Scene/ConvexHullDecorator.py
+++ b/cura/Scene/ConvexHullDecorator.py
@@ -175,10 +175,17 @@ class ConvexHullDecorator(SceneNodeDecorator):
self._convex_hull_node = None
return
- convex_hull = self.getConvexHull()
+ if self._global_stack \
+ and self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" \
+ and not self.hasGroupAsParent(self._node):
+ # In one-at-a-time mode, every printed object gets it's own adhesion
+ printing_area = self.getAdhesionArea()
+ else:
+ printing_area = self.getConvexHull()
+
if self._convex_hull_node:
self._convex_hull_node.setParent(None)
- hull_node = ConvexHullNode.ConvexHullNode(self._node, convex_hull, self._raft_thickness, root)
+ hull_node = ConvexHullNode.ConvexHullNode(self._node, printing_area, self._raft_thickness, root)
self._convex_hull_node = hull_node
def _onSettingValueChanged(self, key: str, property_name: str) -> None:
diff --git a/cura/Scene/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py
index 90bf536308..6aa71223e5 100644
--- a/cura/Scene/ConvexHullNode.py
+++ b/cura/Scene/ConvexHullNode.py
@@ -43,6 +43,7 @@ class ConvexHullNode(SceneNode):
# The node this mesh is "watching"
self._node = node
+ # Area of the head + fans for display as a shadow on the buildplate
self._convex_hull_head_mesh = None
self._node.decoratorsChanged.connect(self._onNodeDecoratorsChanged)
@@ -76,14 +77,17 @@ class ConvexHullNode(SceneNode):
if self.getParent():
if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate:
+ # The object itself (+ adhesion in one-at-a-time mode)
renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8)
if self._convex_hull_head_mesh:
+ # The full head. Rendered as a hint to the user: If this area overlaps another object A; this object
+ # cannot be printed after A, because the head would hit A while printing the current object
renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8)
return True
def _onNodeDecoratorsChanged(self, node: SceneNode) -> None:
- convex_hull_head = self._node.callDecoration("getConvexHullHead")
+ convex_hull_head = self._node.callDecoration("getConvexHullHeadFull")
if convex_hull_head:
convex_hull_head_builder = MeshBuilder()
convex_hull_head_builder.addConvexPolygon(convex_hull_head.getPoints(), self._mesh_height - self._thickness)