mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Recalculate the start / end elements when the layer is changed instead of on render
About with larger models, about 30-40% of the time of the render was spent on this.
This commit is contained in:
parent
9de2b39d38
commit
0d7421140f
2 changed files with 37 additions and 25 deletions
|
@ -71,6 +71,8 @@ class SimulationView(CuraView):
|
|||
self._max_paths = 0
|
||||
self._current_path_num = 0
|
||||
self._minimum_path_num = 0
|
||||
self.start_elements_index = 0
|
||||
self.end_elements_index = 0
|
||||
self.currentLayerNumChanged.connect(self._onCurrentLayerNumChanged)
|
||||
|
||||
self._busy = False
|
||||
|
@ -243,6 +245,7 @@ class SimulationView(CuraView):
|
|||
self._minimum_layer_num = self._current_layer_num
|
||||
|
||||
self._startUpdateTopLayers()
|
||||
self.recalculateStartEndElements()
|
||||
|
||||
self.currentLayerNumChanged.emit()
|
||||
|
||||
|
@ -257,7 +260,7 @@ class SimulationView(CuraView):
|
|||
self._current_layer_num = self._minimum_layer_num
|
||||
|
||||
self._startUpdateTopLayers()
|
||||
|
||||
self.recalculateStartEndElements()
|
||||
self.currentLayerNumChanged.emit()
|
||||
|
||||
def setPath(self, value: int) -> None:
|
||||
|
@ -359,6 +362,24 @@ class SimulationView(CuraView):
|
|||
return 0.0 # If it's still max-float, there are no measurements. Use 0 then.
|
||||
return self._min_thickness
|
||||
|
||||
def recalculateStartEndElements(self):
|
||||
self.start_elements_index = 0
|
||||
self.end_elements_index = 0
|
||||
scene = self.getController().getScene()
|
||||
for node in DepthFirstIterator(scene.getRoot()): # type: ignore
|
||||
layer_data = node.callDecoration("getLayerData")
|
||||
if not layer_data:
|
||||
continue
|
||||
|
||||
# Found a the layer data!
|
||||
element_counts = layer_data.getElementCounts()
|
||||
for layer in sorted(element_counts.keys()):
|
||||
if layer == self._current_layer_num:
|
||||
break
|
||||
if self._minimum_layer_num > layer:
|
||||
self.start_elements_index += element_counts[layer]
|
||||
self.end_elements_index += element_counts[layer]
|
||||
|
||||
def getMaxThickness(self) -> float:
|
||||
return self._max_thickness
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue