diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index b2df2563d0..4e1b2f6841 100644 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -69,6 +69,8 @@ class CuraEngineBackend(Backend): self._scene = Application.getInstance().getController().getScene() self._scene.sceneChanged.connect(self._onSceneChanged) + self._pauseSlicing = False + # Workaround to disable layer view processing if layer view is not active. self._layer_view_active = False Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged) @@ -399,7 +401,8 @@ class CuraEngineBackend(Backend): # # This indicates that we should probably re-slice soon. def _onChanged(self, *args, **kwargs): - self._change_timer.start() + if not self._pauseSlicing: + self._change_timer.start() ## Called when the back-end connects to the front-end. def _onBackendConnected(self): diff --git a/plugins/GCODEReader/GCODEReader.py b/plugins/GCODEReader/GCODEReader.py index 683355c9a3..6001edca67 100644 --- a/plugins/GCODEReader/GCODEReader.py +++ b/plugins/GCODEReader/GCODEReader.py @@ -48,6 +48,16 @@ class GCODEReader(MeshReader): scene_node.getBoundingBox = getBoundingBox scene_node.gcode = True + backend = Application.getInstance().getBackend() + backend._pauseSlicing = True + backend.backendStateChange.emit(0) + + mesh_builder = MeshBuilder() + mesh_builder.setFileName(file_name) + + mesh_builder.addCube(10,10,10) + + scene_node.setMeshData(mesh_builder.build()) layer_data = LayerDataBuilder.LayerDataBuilder() layer_count = 1 diff --git a/plugins/LayerView/LayerPass.py b/plugins/LayerView/LayerPass.py index cf3e5cd89a..287f3c3539 100644 --- a/plugins/LayerView/LayerPass.py +++ b/plugins/LayerView/LayerPass.py @@ -45,16 +45,11 @@ class LayerPass(RenderPass): tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay) for node in DepthFirstIterator(self._scene.getRoot()): - flag = False - try: - flag = node.gcode - except AttributeError: - pass if isinstance(node, ToolHandle): tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh()) - elif isinstance(node, SceneNode) and (node.getMeshData() or flag) and node.isVisible(): + elif isinstance(node, SceneNode) and (node.getMeshData()) and node.isVisible(): layer_data = node.callDecoration("getLayerData") if not layer_data: continue diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 50c13194f7..0736fe6dac 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -118,8 +118,14 @@ class LayerView(View): if type(node) is ConvexHullNode and not Selection.isSelected(node.getWatchedNode()): continue + flag = False + try: + flag = node.gcode + except AttributeError: + pass + if not node.render(renderer): - if node.getMeshData() and node.isVisible(): + if node.getMeshData() and node.isVisible() and not flag: renderer.queueNode(node, transparent = True, shader = self._ghost_shader) def setLayer(self, value): diff --git a/resources/qml/SaveButton.qml b/resources/qml/SaveButton.qml index 9b63fccf94..a25aae7a5e 100644 --- a/resources/qml/SaveButton.qml +++ b/resources/qml/SaveButton.qml @@ -14,6 +14,7 @@ Rectangle { property real progress: UM.Backend.progress; property int backendState: UM.Backend.state; + property bool backendPaused: UM.Backend.paused; property bool activity: Printer.getPlatformActivity; property int totalHeight: childrenRect.height + UM.Theme.getSize("default_margin").height property string fileBaseName @@ -24,6 +25,11 @@ Rectangle { return catalog.i18nc("@label:PrintjobStatus", "Please load a 3d model"); } + if (backendPaused) + { + return catalog.i18nc("@label:PrintjobStatus", "Slicing temporary disabled"); + } + switch(base.backendState) { case 1: