From 653b46d8255ba3e5751c77cc30b4b7ec1413559b Mon Sep 17 00:00:00 2001 From: Arjen Hiemstra Date: Wed, 4 Nov 2015 13:04:22 +0100 Subject: [PATCH] Properly report Layer data processing progress Contributes to CURA-224 --- .../ProcessSlicedObjectListJob.py | 35 +++++++++++++------ 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py b/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py index 02dcecb80b..0a9322b7cb 100644 --- a/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py +++ b/plugins/CuraEngineBackend/ProcessSlicedObjectListJob.py @@ -54,6 +54,20 @@ class ProcessSlicedObjectListJob(Job): mesh = MeshData() layer_data = LayerData.LayerData() + + #Add layerdata decorator to scene node to indicate that the node has layerdata + decorator = LayerDataDecorator.LayerDataDecorator() + decorator.setLayerData(layer_data) + new_node.addDecorator(decorator) + + new_node.setMeshData(mesh) + new_node.setParent(self._scene.getRoot()) + + layer_count = 0 + for object in self._message.objects: + layer_count += len(object.layers) + + current_layer = 0 for object in self._message.objects: try: node = objectIdMap[object.id] @@ -73,23 +87,24 @@ class ProcessSlicedObjectListJob(Job): points[:,2] *= -1 - points -= numpy.array(center) + points -= center layer_data.addPolygon(layer.id, polygon.type, points, polygon.line_width) + current_layer += 1 + progress = (current_layer / layer_count) * 100 + # TODO: Rebuild the layer data mesh once the layer has been processed. + # This needs some work in LayerData so we can add the new layers instead of recreating the entire mesh. + + if self._progress: + self._progress.setProgress(progress) # We are done processing all the layers we got from the engine, now create a mesh out of the data layer_data.build() - - #Add layerdata decorator to scene node to indicate that the node has layerdata - decorator = LayerDataDecorator.LayerDataDecorator() - decorator.setLayerData(layer_data) - new_node.addDecorator(decorator) - - new_node.setMeshData(mesh) - new_node.setParent(self._scene.getRoot()) - + if self._progress: + self._progress.setProgress(100) + view = Application.getInstance().getController().getActiveView() if view.getPluginId() == "LayerView": view.resetLayerData()