mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-09 07:56:22 -06:00
xMerge branch 'master' of https://github.com/Ultimaker/PluggableCura
This commit is contained in:
commit
5e8cc90a3e
5 changed files with 72 additions and 12 deletions
|
@ -4,6 +4,7 @@ from UM.Scene.SceneNode import SceneNode
|
|||
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
||||
from UM.Preferences import Preferences
|
||||
from UM.Math.Vector import Vector
|
||||
from UM.Signal import Signal
|
||||
|
||||
from . import Cura_pb2
|
||||
from . import ProcessSlicedObjectListJob
|
||||
|
@ -17,6 +18,8 @@ class CuraEngineBackend(Backend):
|
|||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
Preferences.getInstance().addPreference('backend/location', '../PinkUnicornEngine/CuraEngine')
|
||||
|
||||
self._scene = Application.getInstance().getController().getScene()
|
||||
self._scene.sceneChanged.connect(self._onSceneChanged)
|
||||
|
||||
|
@ -33,8 +36,18 @@ class CuraEngineBackend(Backend):
|
|||
|
||||
self._center = None
|
||||
|
||||
self._slice_interval = 0.5
|
||||
|
||||
self._slicing = False
|
||||
self._restart = False
|
||||
|
||||
self.changeTimerFinished.connect(self._onChangeTimerFinished)
|
||||
self.backendConnected.connect(self._onBackendConnected)
|
||||
|
||||
def getEngineCommand(self):
|
||||
return [Preferences.getPreference("BackendLocation"), '--connect', "127.0.0.1:{0}".format(self._port)]
|
||||
return [Preferences.getInstance().getValue("backend/location"), '--connect', "127.0.0.1:{0}".format(self._port)]
|
||||
|
||||
changeTimerFinished = Signal()
|
||||
|
||||
def _onSceneChanged(self, source):
|
||||
if (type(source) is not SceneNode) or (source is self._scene.getRoot()):
|
||||
|
@ -59,6 +72,8 @@ class CuraEngineBackend(Backend):
|
|||
job.start()
|
||||
|
||||
def _onProgressMessage(self, message):
|
||||
if message.amount >= 0.99:
|
||||
self._slicing = False
|
||||
self.processingProgress.emit(message.amount)
|
||||
|
||||
def _onGCodeMessage(self, message):
|
||||
|
@ -83,12 +98,18 @@ class CuraEngineBackend(Backend):
|
|||
return
|
||||
|
||||
if self._changeTimer:
|
||||
return
|
||||
self._changeTimer.cancel()
|
||||
|
||||
self._changeTimer = threading.Timer(1, self._onChangeTimerFinished)
|
||||
self._changeTimer = threading.Timer(self._slice_interval, lambda: self.changeTimerFinished.emit())
|
||||
self._changeTimer.start()
|
||||
|
||||
def _onChangeTimerFinished(self):
|
||||
if self._slicing:
|
||||
self._slicing = False
|
||||
self._restart = True
|
||||
self._process.terminate()
|
||||
return
|
||||
|
||||
objects = []
|
||||
for node in DepthFirstIterator(self._scene.getRoot()):
|
||||
if type(node) is SceneNode and node.getMeshData():
|
||||
|
@ -98,6 +119,9 @@ class CuraEngineBackend(Backend):
|
|||
self._changeTimer = None
|
||||
return #No point in slicing an empty build plate
|
||||
|
||||
self._slicing = True
|
||||
self.processingProgress.emit(0.0)
|
||||
|
||||
self._sendSettings()
|
||||
|
||||
self._scene.acquireLock()
|
||||
|
@ -306,3 +330,8 @@ class CuraEngineBackend(Backend):
|
|||
s.value = str(value).encode('utf-8')
|
||||
|
||||
self._socket.sendMessage(msg)
|
||||
|
||||
def _onBackendConnected(self):
|
||||
if self._restart:
|
||||
self._onChanged()
|
||||
self._restart = False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue