1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- from UM.Scene.SceneNodeDecorator import SceneNodeDecorator
- from UM.Application import Application
- class ConvexHullDecorator(SceneNodeDecorator):
- def __init__(self):
- super().__init__()
- self._convex_hull = None
-
- # In case of printing all at once this is the same as the convex hull. For one at the time this is the area without the head.
- self._convex_hull_boundary = None
-
- # In case of printing all at once this is the same as the convex hull. For one at the time this is area with full head
- self._convex_hull_head = None
-
- self._convex_hull_node = None
- self._convex_hull_job = None
- self._profile = None
- Application.getInstance().getMachineManager().activeProfileChanged.connect(self._onActiveProfileChanged)
- Application.getInstance().getMachineManager().activeMachineInstanceChanged.connect(self._onActiveMachineInstanceChanged)
- self._onActiveProfileChanged()
- ## Force that a new (empty) object is created upon copy.
- def __deepcopy__(self, memo):
- copy = ConvexHullDecorator()
- return copy
- def getConvexHull(self):
- return self._convex_hull
-
- def getConvexHullHead(self):
- if not self._convex_hull_head:
- return self.getConvexHull()
- return self._convex_hull_head
-
- def getConvexHullBoundary(self):
- if not self._convex_hull_boundary:
- return self.getConvexHull()
- return self._convex_hull_boundary
-
- def setConvexHullBoundary(self, hull):
- self._convex_hull_boundary = hull
-
- def setConvexHullHead(self, hull):
- self._convex_hull_head = hull
-
- def setConvexHull(self, hull):
- self._convex_hull = hull
-
- def getConvexHullJob(self):
- return self._convex_hull_job
-
- def setConvexHullJob(self, job):
- self._convex_hull_job = job
-
- def getConvexHullNode(self):
- return self._convex_hull_node
-
- def setConvexHullNode(self, node):
- self._convex_hull_node = node
-
- def _onActiveProfileChanged(self):
- if self._profile:
- self._profile.settingValueChanged.disconnect(self._onSettingValueChanged)
- self._profile = Application.getInstance().getMachineManager().getWorkingProfile()
- if self._profile:
- self._profile.settingValueChanged.connect(self._onSettingValueChanged)
- def _onActiveMachineInstanceChanged(self):
- if self._convex_hull_job:
- self._convex_hull_job.cancel()
- self.setConvexHull(None)
- if self._convex_hull_node:
- self._convex_hull_node.setParent(None)
- self._convex_hull_node = None
- def _onSettingValueChanged(self, setting):
- if setting == "print_sequence":
- if self._convex_hull_job:
- self._convex_hull_job.cancel()
- self.setConvexHull(None)
- if self._convex_hull_node:
- self._convex_hull_node.setParent(None)
- self._convex_hull_node = None
|