diff --git a/LayerView.py b/LayerView.py index c1039936fe..3e65876ad0 100644 --- a/LayerView.py +++ b/LayerView.py @@ -3,7 +3,6 @@ from UM.View.Renderer import Renderer from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Resources import Resources - ## View used to display g-code paths. class LayerView(View): def __init__(self): @@ -16,7 +15,6 @@ class LayerView(View): scene = self.getController().getScene() renderer = self.getRenderer() renderer.setRenderSelection(False) - self._num_layers = 0 if not self._material: self._material = renderer.createMaterial(Resources.getPath(Resources.ShadersLocation, 'basic.vert'), Resources.getPath(Resources.ShadersLocation, 'vertexcolor.frag')) @@ -27,13 +25,24 @@ class LayerView(View): if node.getMeshData() and node.isVisible(): try: layer_data = node.getMeshData().layerData - if self._num_layers < len(layer_data.getLayers()): - self._num_layers = len(layer_data.getLayers()) - except AttributeError: continue - renderer.queueNode(node, mesh = layer_data, material = self._material, mode = Renderer.RenderLines) + if self._layer_percentage < 100: + start = 0 + end_layer = round(len(layer_data.getLayers()) * (self._layer_percentage / 100)) + end = 0 + + element_counts = layer_data.getElementCounts() + for layer, counts in element_counts.items(): + end += sum(counts) * 2 + + if layer >= end_layer: + break + + renderer.queueNode(node, mesh = layer_data, material = self._material, mode = Renderer.RenderLines, start = start, end = end) + else: + renderer.queueNode(node, mesh = layer_data, material = self._material, mode = Renderer.RenderLines) def setLayer(self, value): self._layer_percentage = value