mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Disable slicing and platform physics when an operation is being performed
This prevents the model from jumping around during rotation/scale Fixes #56
This commit is contained in:
parent
bc055a8031
commit
72b1302f9e
2 changed files with 26 additions and 0 deletions
|
@ -24,8 +24,12 @@ class PlatformPhysics:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._controller = controller
|
self._controller = controller
|
||||||
self._controller.getScene().sceneChanged.connect(self._onSceneChanged)
|
self._controller.getScene().sceneChanged.connect(self._onSceneChanged)
|
||||||
|
self._controller.toolOperationStarted.connect(self._onToolOperationStarted)
|
||||||
|
self._controller.toolOperationStopped.connect(self._onToolOperationStopped)
|
||||||
self._build_volume = volume
|
self._build_volume = volume
|
||||||
|
|
||||||
|
self._enabled = True
|
||||||
|
|
||||||
self._change_timer = QTimer()
|
self._change_timer = QTimer()
|
||||||
self._change_timer.setInterval(100)
|
self._change_timer.setInterval(100)
|
||||||
self._change_timer.setSingleShot(True)
|
self._change_timer.setSingleShot(True)
|
||||||
|
@ -35,6 +39,9 @@ class PlatformPhysics:
|
||||||
self._change_timer.start()
|
self._change_timer.start()
|
||||||
|
|
||||||
def _onChangeTimerFinished(self):
|
def _onChangeTimerFinished(self):
|
||||||
|
if not self._enabled:
|
||||||
|
return
|
||||||
|
|
||||||
root = self._controller.getScene().getRoot()
|
root = self._controller.getScene().getRoot()
|
||||||
for node in BreadthFirstIterator(root):
|
for node in BreadthFirstIterator(root):
|
||||||
if node is root or type(node) is not SceneNode:
|
if node is root or type(node) is not SceneNode:
|
||||||
|
@ -93,3 +100,10 @@ class PlatformPhysics:
|
||||||
if node.getBoundingBox().intersectsBox(self._build_volume.getBoundingBox()) == AxisAlignedBox.IntersectionResult.FullIntersection:
|
if node.getBoundingBox().intersectsBox(self._build_volume.getBoundingBox()) == AxisAlignedBox.IntersectionResult.FullIntersection:
|
||||||
op = ScaleToBoundsOperation(node, self._build_volume.getBoundingBox())
|
op = ScaleToBoundsOperation(node, self._build_volume.getBoundingBox())
|
||||||
op.push()
|
op.push()
|
||||||
|
|
||||||
|
def _onToolOperationStarted(self, tool):
|
||||||
|
self._enabled = False
|
||||||
|
|
||||||
|
def _onToolOperationStopped(self, tool):
|
||||||
|
self._enabled = True
|
||||||
|
self._onChangeTimerFinished()
|
||||||
|
|
|
@ -59,6 +59,8 @@ class CuraEngineBackend(Backend):
|
||||||
self._save_polygons = True
|
self._save_polygons = True
|
||||||
self._report_progress = True
|
self._report_progress = True
|
||||||
|
|
||||||
|
self._enabled = True
|
||||||
|
|
||||||
self.backendConnected.connect(self._onBackendConnected)
|
self.backendConnected.connect(self._onBackendConnected)
|
||||||
|
|
||||||
def getEngineCommand(self):
|
def getEngineCommand(self):
|
||||||
|
@ -86,6 +88,9 @@ class CuraEngineBackend(Backend):
|
||||||
# If False, this method will do nothing when already slicing. True by default.
|
# If False, this method will do nothing when already slicing. True by default.
|
||||||
# - report_progress: True if the slicing progress should be reported, False if not. Default is True.
|
# - report_progress: True if the slicing progress should be reported, False if not. Default is True.
|
||||||
def slice(self, **kwargs):
|
def slice(self, **kwargs):
|
||||||
|
if not self._enabled:
|
||||||
|
return
|
||||||
|
|
||||||
if self._slicing:
|
if self._slicing:
|
||||||
if not kwargs.get("force_restart", True):
|
if not kwargs.get("force_restart", True):
|
||||||
return
|
return
|
||||||
|
@ -235,3 +240,10 @@ class CuraEngineBackend(Backend):
|
||||||
if self._restart:
|
if self._restart:
|
||||||
self._onChanged()
|
self._onChanged()
|
||||||
self._restart = False
|
self._restart = False
|
||||||
|
|
||||||
|
def _onToolOperationStarted(self, tool):
|
||||||
|
self._enabled = False
|
||||||
|
|
||||||
|
def _onToolOperationStopped(self, tool):
|
||||||
|
self._enabled = True
|
||||||
|
self._onChanged()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue