diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index adc64c5072..57209f2678 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -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: