mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-13 07:29:03 +08:00
Rescale the current layer number based on the maximum layer
This makes sure we still have the top layer selected when we receive new data. Contributes to Asana issue 34806173176751
This commit is contained in:
parent
8db06b8305
commit
d9ad54cd0d
@ -18,10 +18,10 @@ class LayerView(View):
|
|||||||
self._material = None
|
self._material = None
|
||||||
self._num_layers = 0
|
self._num_layers = 0
|
||||||
self._layer_percentage = 0 # what percentage of layers need to be shown (SLider gives value between 0 - 100)
|
self._layer_percentage = 0 # what percentage of layers need to be shown (SLider gives value between 0 - 100)
|
||||||
self._current_layer_num = 0
|
|
||||||
self._proxy = LayerViewProxy.LayerViewProxy()
|
self._proxy = LayerViewProxy.LayerViewProxy()
|
||||||
self._controller.getScene().sceneChanged.connect(self._onSceneChanged)
|
self._controller.getScene().sceneChanged.connect(self._onSceneChanged)
|
||||||
self._max_layers = 10
|
self._max_layers = 10
|
||||||
|
self._current_layer_num = 10
|
||||||
|
|
||||||
def getCurrentLayer(self):
|
def getCurrentLayer(self):
|
||||||
return self._current_layer_num
|
return self._current_layer_num
|
||||||
@ -87,7 +87,7 @@ class LayerView(View):
|
|||||||
renderer.setRenderSelection(False)
|
renderer.setRenderSelection(False)
|
||||||
self._old_max_layers = self._max_layers
|
self._old_max_layers = self._max_layers
|
||||||
## Recalculate num max layers
|
## Recalculate num max layers
|
||||||
self._max_layers = 0
|
new_max_layers = 0
|
||||||
for node in DepthFirstIterator(scene.getRoot()):
|
for node in DepthFirstIterator(scene.getRoot()):
|
||||||
if not node.render(renderer):
|
if not node.render(renderer):
|
||||||
if node.getMeshData() and node.isVisible():
|
if node.getMeshData() and node.isVisible():
|
||||||
@ -95,11 +95,15 @@ class LayerView(View):
|
|||||||
layer_data = node.getMeshData().layerData
|
layer_data = node.getMeshData().layerData
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
continue
|
continue
|
||||||
if self._max_layers < len(layer_data.getLayers()):
|
if new_max_layers < len(layer_data.getLayers()):
|
||||||
self._max_layers = len(layer_data.getLayers())
|
new_max_layers = len(layer_data.getLayers())
|
||||||
|
|
||||||
if self._max_layers != self._old_max_layers:
|
if new_max_layers > 0 and new_max_layers != self._old_max_layers:
|
||||||
|
self._max_layers = new_max_layers
|
||||||
self.maxLayersChanged.emit()
|
self.maxLayersChanged.emit()
|
||||||
|
|
||||||
|
# This makes sure we update the current layer
|
||||||
|
self.setLayer(int(self._max_layers * (self._current_layer_num / self._old_max_layers)))
|
||||||
|
|
||||||
maxLayersChanged = Signal()
|
maxLayersChanged = Signal()
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ Item
|
|||||||
orientation: Qt.Vertical
|
orientation: Qt.Vertical
|
||||||
minimumValue: 0;
|
minimumValue: 0;
|
||||||
maximumValue: UM.LayerView.numLayers;
|
maximumValue: UM.LayerView.numLayers;
|
||||||
|
stepSize: 1
|
||||||
|
|
||||||
value: UM.LayerView.currentLayer
|
value: UM.LayerView.currentLayer
|
||||||
onValueChanged: UM.LayerView.setCurrentLayer(value)
|
onValueChanged: UM.LayerView.setCurrentLayer(value)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user