Don't use travel moves to calculate max flow

CURA-8196
This commit is contained in:
Jaime van Kessel 2021-05-19 11:03:29 +02:00
parent 9a7b19f8ac
commit a9970800f6
No known key found for this signature in database
GPG key ID: 3710727397403C91

View file

@ -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)