mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Don't use travel moves to calculate max flow
CURA-8196
This commit is contained in:
parent
9a7b19f8ac
commit
a9970800f6
1 changed files with 9 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue