diff --git a/CuraEngineBackend.py b/CuraEngineBackend.py index 244536e7c6..11c4ac85e4 100644 --- a/CuraEngineBackend.py +++ b/CuraEngineBackend.py @@ -20,8 +20,9 @@ class CuraEngineBackend(Backend): self._scene = Application.getInstance().getController().getScene() self._scene.sceneChanged.connect(self._onSceneChanged) - self._settings = Application.getInstance().getMachineSettings() - self._settings.settingChanged.connect(self._onSettingChanged) + self._settings = None + Application.getInstance().activeMachineChanged.connect(self._onActiveMachineChanged) + self._onActiveMachineChanged() self._changeTimer = None @@ -41,6 +42,15 @@ class CuraEngineBackend(Backend): self._onChanged() + def _onActiveMachineChanged(self): + if self._settings: + self._settings.settingChanged.disconnect(self._onSettingChanged) + + self._settings = Application.getInstance().getActiveMachine() + if self._settings: + self._settings.settingChanged.connect(self._onSettingChanged) + self._onChanged() + def _onSettingChanged(self, setting): self._onChanged() @@ -69,6 +79,9 @@ class CuraEngineBackend(Backend): self._socket.registerMessageType(6, Cura_pb2.SettingList) def _onChanged(self): + if not self._settings: + return + if self._changeTimer: return diff --git a/ProcessSlicedObjectListJob.py b/ProcessSlicedObjectListJob.py index 2819153758..7cb5fa6760 100644 --- a/ProcessSlicedObjectListJob.py +++ b/ProcessSlicedObjectListJob.py @@ -22,7 +22,7 @@ class ProcessSlicedObjectListJob(Job): if type(node) is SceneNode and node.getMeshData(): objectIdMap[id(node)] = node - layerHeight = Application.getInstance().getMachineSettings().getSettingValueByKey('layer_height') + layerHeight = Application.getInstance().getActiveMachine().getSettingValueByKey('layer_height') for object in self._message.objects: mesh = objectIdMap[object.id].getMeshData()