diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index dc3d0ef0d0..7c0328d11b 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -90,6 +90,7 @@ 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 @@ -412,7 +413,7 @@ class SimulationView(CuraView): return self._min_line_width def getMaxFlowRate(self) -> float: - return self._max_line_width * self._max_thickness * self._max_feedrate + return self._max_line_width * self._max_thickness * self._max_feedrate_with_extrusion def getMinFlowRate(self) -> float: min_flow_rate = self._min_line_width * self._min_thickness * self._min_feedrate @@ -480,6 +481,7 @@ class SimulationView(CuraView): 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 @@ -487,6 +489,7 @@ class SimulationView(CuraView): # The colour scheme is only influenced by the visible lines, so filter the lines by if they should be visible. visible_line_types = [] + visible_line_types_with_extrusion = [] if self.getShowSkin(): # Actually "shell". visible_line_types.append(LayerPolygon.SkinType) visible_line_types.append(LayerPolygon.Inset0Type) @@ -499,6 +502,7 @@ class SimulationView(CuraView): visible_line_types.append(LayerPolygon.SupportType) visible_line_types.append(LayerPolygon.SupportInfillType) visible_line_types.append(LayerPolygon.SupportInterfaceType) + visible_line_types_with_extrusion = visible_line_types.copy() # Copy before travel moves are added if self.getShowTravelMoves(): visible_line_types.append(LayerPolygon.MoveCombingType) visible_line_types.append(LayerPolygon.MoveRetractionType) @@ -512,12 +516,16 @@ class SimulationView(CuraView): for polyline in layer_data.getLayer(layer_index).polygons: is_visible = numpy.isin(polyline.types, visible_line_types) visible_indices = numpy.where(is_visible)[0] + visible_indicies_with_extrusion = numpy.where(numpy.isin(polyline.types, visible_line_types_with_extrusion))[0] if visible_indices.size == 0: # No items to take maximum or minimum of. continue 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_thicknesses = numpy.take(polyline.lineThicknesses, visible_indices) 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) 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)