mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 15:07:28 -06:00
Display progress information during processing of layer data
Contributes to Asana issue 38547857084327
This commit is contained in:
parent
3faccd5b3e
commit
6b5c3d5878
2 changed files with 42 additions and 0 deletions
|
@ -7,18 +7,30 @@ from UM.Scene.SceneNode import SceneNode
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Mesh.MeshData import MeshData
|
from UM.Mesh.MeshData import MeshData
|
||||||
|
|
||||||
|
from UM.Message import Message
|
||||||
|
from UM.i18n import i18nCatalog
|
||||||
|
|
||||||
from . import LayerData
|
from . import LayerData
|
||||||
|
|
||||||
import numpy
|
import numpy
|
||||||
import struct
|
import struct
|
||||||
|
|
||||||
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
class ProcessSlicedObjectListJob(Job):
|
class ProcessSlicedObjectListJob(Job):
|
||||||
def __init__(self, message):
|
def __init__(self, message):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._message = message
|
self._message = message
|
||||||
self._scene = Application.getInstance().getController().getScene()
|
self._scene = Application.getInstance().getController().getScene()
|
||||||
|
|
||||||
|
self._progress = None
|
||||||
|
Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView":
|
||||||
|
self._progress = Message(catalog.i18nc("Layers View mode", "Layers"), 0, False, 0)
|
||||||
|
self._progress.show()
|
||||||
|
|
||||||
objectIdMap = {}
|
objectIdMap = {}
|
||||||
new_node = SceneNode()
|
new_node = SceneNode()
|
||||||
## Put all nodes in a dict identified by ID
|
## Put all nodes in a dict identified by ID
|
||||||
|
@ -38,6 +50,9 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
else:
|
else:
|
||||||
center = numpy.array([0.0, 0.0, 0.0])
|
center = numpy.array([0.0, 0.0, 0.0])
|
||||||
|
|
||||||
|
if self._progress:
|
||||||
|
self._progress.setProgress(2)
|
||||||
|
|
||||||
mesh = MeshData()
|
mesh = MeshData()
|
||||||
for object in self._message.objects:
|
for object in self._message.objects:
|
||||||
try:
|
try:
|
||||||
|
@ -63,9 +78,33 @@ class ProcessSlicedObjectListJob(Job):
|
||||||
|
|
||||||
layerData.addPolygon(layer.id, polygon.type, points, polygon.line_width)
|
layerData.addPolygon(layer.id, polygon.type, points, polygon.line_width)
|
||||||
|
|
||||||
|
if self._progress:
|
||||||
|
self._progress.setProgress(50)
|
||||||
|
|
||||||
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
# We are done processing all the layers we got from the engine, now create a mesh out of the data
|
||||||
layerData.build()
|
layerData.build()
|
||||||
mesh.layerData = layerData
|
mesh.layerData = layerData
|
||||||
|
|
||||||
|
if self._progress:
|
||||||
|
self._progress.setProgress(100)
|
||||||
|
|
||||||
new_node.setMeshData(mesh)
|
new_node.setMeshData(mesh)
|
||||||
new_node.setParent(self._scene.getRoot())
|
new_node.setParent(self._scene.getRoot())
|
||||||
|
|
||||||
|
view = Application.getInstance().getController().getActiveView()
|
||||||
|
if view.getPluginId() == "LayerView":
|
||||||
|
view.resetLayerData()
|
||||||
|
|
||||||
|
if self._progress:
|
||||||
|
self._progress.hide()
|
||||||
|
|
||||||
|
def _onActiveViewChanged(self):
|
||||||
|
if self.isRunning():
|
||||||
|
if Application.getInstance().getController().getActiveView().getPluginId() == "LayerView":
|
||||||
|
if not self._progress:
|
||||||
|
self._progress = Message(catalog.i18nc("Layers View mode", "Layers"), 0, False, 0)
|
||||||
|
self._progress.show()
|
||||||
|
else:
|
||||||
|
if self._progress:
|
||||||
|
self._progress.hide()
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@ class LayerView(View):
|
||||||
def getMaxLayers(self):
|
def getMaxLayers(self):
|
||||||
return self._max_layers
|
return self._max_layers
|
||||||
|
|
||||||
|
def resetLayerData(self):
|
||||||
|
self._current_layer_mesh = None
|
||||||
|
|
||||||
def beginRendering(self):
|
def beginRendering(self):
|
||||||
scene = self.getController().getScene()
|
scene = self.getController().getScene()
|
||||||
renderer = self.getRenderer()
|
renderer = self.getRenderer()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue