Merge branch 'mb-fix-flow-rates-min-max' of https://github.com/smartavionics/Cura

This commit is contained in:
Jaime van Kessel 2021-06-07 15:29:45 +02:00
commit dc8c5e4268
No known key found for this signature in database
GPG Key ID: 3710727397403C91

View File

@ -90,11 +90,12 @@ class SimulationView(CuraView):
self._max_feedrate = sys.float_info.min
self._min_feedrate = sys.float_info.max
self._max_feedrate_with_extrusion = sys.float_info.min
self._max_thickness = sys.float_info.min
self._min_thickness = sys.float_info.max
self._max_line_width = sys.float_info.min
self._min_line_width = sys.float_info.max
self._min_flow_rate = sys.float_info.max
self._max_flow_rate = sys.float_info.min
self._global_container_stack = None # type: Optional[ContainerStack]
self._proxy = None
@ -413,13 +414,12 @@ class SimulationView(CuraView):
return self._min_line_width
def getMaxFlowRate(self) -> float:
return self._max_line_width * self._max_thickness * self._max_feedrate_with_extrusion
return self._max_flow_rate
def getMinFlowRate(self) -> float:
min_flow_rate = self._min_line_width * self._min_thickness * self._min_feedrate
if abs(min_flow_rate - sys.float_info.max) < 10: # Some lenience due to floating point rounding.
if abs(self._min_flow_rate - sys.float_info.max) < 10: # Some lenience due to floating point rounding.
return 0.0 # If it's still max-float, there are no measurements. Use 0 then.
return min_flow_rate
return self._min_flow_rate
def calculateMaxLayers(self) -> None:
"""
@ -474,19 +474,21 @@ class SimulationView(CuraView):
# Before we start, save the old values so that we can tell if any of the spectrums need to change.
old_min_feedrate = self._min_feedrate
old_max_feedrate = self._max_feedrate
old_max_feedrate_with_extrusion = self._max_feedrate_with_extrusion
old_min_linewidth = self._min_line_width
old_max_linewidth = self._max_line_width
old_min_thickness = self._min_thickness
old_max_thickness = self._max_thickness
old_min_flow_rate = self._min_flow_rate
old_max_flow_rate = self._max_flow_rate
self._min_feedrate = sys.float_info.max
self._max_feedrate = sys.float_info.min
self._max_feedrate_with_extrusion = sys.float_info.min
self._min_line_width = sys.float_info.max
self._max_line_width = sys.float_info.min
self._min_thickness = sys.float_info.max
self._max_thickness = sys.float_info.min
self._min_flow_rate = sys.float_info.max
self._max_flow_rate = sys.float_info.min
# The colour scheme is only influenced by the visible lines, so filter the lines by if they should be visible.
visible_line_types = []
@ -522,10 +524,14 @@ class SimulationView(CuraView):
visible_feedrates = numpy.take(polyline.lineFeedrates, visible_indices)
visible_feedrates_with_extrusion = numpy.take(polyline.lineFeedrates, visible_indicies_with_extrusion)
visible_linewidths = numpy.take(polyline.lineWidths, visible_indices)
visible_linewidths_with_extrusion = numpy.take(polyline.lineWidths, visible_indicies_with_extrusion)
visible_thicknesses = numpy.take(polyline.lineThicknesses, visible_indices)
visible_thicknesses_with_extrusion = numpy.take(polyline.lineThicknesses, visible_indicies_with_extrusion)
self._max_feedrate = max(float(visible_feedrates.max()), self._max_feedrate)
if visible_feedrates_with_extrusion.size != 0:
self._max_feedrate_with_extrusion = max(float(visible_feedrates_with_extrusion.max()), self._max_feedrate_with_extrusion)
flow_rates = visible_feedrates_with_extrusion * visible_linewidths_with_extrusion * visible_thicknesses_with_extrusion
self._min_flow_rate = min(float(flow_rates.min()), self._min_flow_rate)
self._max_flow_rate = max(float(flow_rates.max()), self._max_flow_rate)
self._min_feedrate = min(float(visible_feedrates.min()), self._min_feedrate)
self._max_line_width = max(float(visible_linewidths.max()), self._max_line_width)
self._min_line_width = min(float(visible_linewidths.min()), self._min_line_width)
@ -539,7 +545,7 @@ class SimulationView(CuraView):
if old_min_feedrate != self._min_feedrate or old_max_feedrate != self._max_feedrate \
or old_min_linewidth != self._min_line_width or old_max_linewidth != self._max_line_width \
or old_min_thickness != self._min_thickness or old_max_thickness != self._max_thickness \
or old_max_feedrate_with_extrusion != self._max_feedrate_with_extrusion:
or old_min_flow_rate != self._min_flow_rate or old_max_flow_rate != self._max_flow_rate:
self.colorSchemeLimitsChanged.emit()
def calculateMaxPathsOnLayer(self, layer_num: int) -> None: