ENH: fix one bug which cause zero speed when flushing

filament_max_volumetric may be 0 which cause zero
flushing speed. Add protection for this issue.

Signed-off-by: salt.wei <salt.wei@bambulab.com>
Change-Id: I866b9d97c9c6d97122a4a2beaf508ce9c72ee3b2
This commit is contained in:
salt.wei 2022-08-08 15:39:55 +08:00 committed by Yifan Wu
parent 61c95431eb
commit 70313deaf0
3 changed files with 6 additions and 2 deletions

View file

@ -344,7 +344,9 @@ bool GCode::gcode_label_objects = false;
float purge_length = purge_volume / filament_area;
int old_filament_e_feedrate = gcode_writer.extruder() != nullptr ? (int)(60.0 * full_config.filament_max_volumetric_speed.get_at(previous_extruder_id) / filament_area) : 200;
old_filament_e_feedrate = old_filament_e_feedrate == 0 ? 100 : old_filament_e_feedrate;
int new_filament_e_feedrate = (int)(60.0 * full_config.filament_max_volumetric_speed.get_at(new_extruder_id) / filament_area);
new_filament_e_feedrate = new_filament_e_feedrate == 0 ? 100 : new_filament_e_feedrate;
config.set_key_value("max_layer_z", new ConfigOptionFloat(gcodegen.m_max_layer_z));
config.set_key_value("relative_e_axis", new ConfigOptionBool(RELATIVE_E_AXIS));
@ -3923,6 +3925,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
old_filament_temp = m_config.nozzle_temperature.get_at(previous_extruder_id);
wipe_volume = flush_matrix[previous_extruder_id * number_of_extruders + extruder_id];
old_filament_e_feedrate = (int)(60.0 * m_config.filament_max_volumetric_speed.get_at(previous_extruder_id) / filament_area);
old_filament_e_feedrate = old_filament_e_feedrate == 0 ? 100 : old_filament_e_feedrate;
}
else {
old_retract_length = 0.f;
@ -3933,6 +3936,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
}
float wipe_length = wipe_volume / filament_area;
int new_filament_e_feedrate = (int)(60.0 * m_config.filament_max_volumetric_speed.get_at(extruder_id) / filament_area);
new_filament_e_feedrate = new_filament_e_feedrate == 0 ? 100 : new_filament_e_feedrate;
DynamicConfig dyn_config;
dyn_config.set_key_value("previous_extruder", new ConfigOptionInt((int)(m_writer.extruder() != nullptr ? m_writer.extruder()->id() : -1)));