mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-07-20 03:14:30 +08:00
Fix of #8530: Pressure equalizer unintentionally decelerates before ironing.
This is the follow-up to: 39404be75a723bde17add6acab7beba237821ebc
This commit is contained in:
parent
9168b60463
commit
394494b3ac
@ -520,6 +520,11 @@ void PressureEqualizer::adjust_volumetric_rate()
|
|||||||
for (; !m_gcode_lines[idx_prev].extruding() && idx_prev != fist_line_idx; --idx_prev);
|
for (; !m_gcode_lines[idx_prev].extruding() && idx_prev != fist_line_idx; --idx_prev);
|
||||||
if (!m_gcode_lines[idx_prev].extruding())
|
if (!m_gcode_lines[idx_prev].extruding())
|
||||||
break;
|
break;
|
||||||
|
// Don't decelerate before ironing.
|
||||||
|
if (m_gcode_lines[line_idx].extrusion_role == erIroning) {
|
||||||
|
line_idx = idx_prev;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
// Volumetric extrusion rate at the start of the succeding segment.
|
// Volumetric extrusion rate at the start of the succeding segment.
|
||||||
float rate_succ = m_gcode_lines[line_idx].volumetric_extrusion_rate_start;
|
float rate_succ = m_gcode_lines[line_idx].volumetric_extrusion_rate_start;
|
||||||
// What is the gradient of the extrusion rate between idx_prev and idx?
|
// What is the gradient of the extrusion rate between idx_prev and idx?
|
||||||
@ -559,6 +564,8 @@ void PressureEqualizer::adjust_volumetric_rate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start;
|
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start;
|
||||||
|
// Don't store feed rate for ironing.
|
||||||
|
if (line.extrusion_role != erIroning)
|
||||||
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start;
|
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -572,6 +579,11 @@ void PressureEqualizer::adjust_volumetric_rate()
|
|||||||
for (; !m_gcode_lines[idx_next].extruding() && idx_next != last_line_idx; ++idx_next);
|
for (; !m_gcode_lines[idx_next].extruding() && idx_next != last_line_idx; ++idx_next);
|
||||||
if (!m_gcode_lines[idx_next].extruding())
|
if (!m_gcode_lines[idx_next].extruding())
|
||||||
break;
|
break;
|
||||||
|
// Don't accelerate after ironing.
|
||||||
|
if (m_gcode_lines[line_idx].extrusion_role == erIroning) {
|
||||||
|
line_idx = idx_next;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
float rate_prec = m_gcode_lines[line_idx].volumetric_extrusion_rate_end;
|
float rate_prec = m_gcode_lines[line_idx].volumetric_extrusion_rate_end;
|
||||||
// What is the gradient of the extrusion rate between idx_prev and idx?
|
// What is the gradient of the extrusion rate between idx_prev and idx?
|
||||||
line_idx = idx_next;
|
line_idx = idx_next;
|
||||||
@ -608,6 +620,8 @@ void PressureEqualizer::adjust_volumetric_rate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end;
|
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end;
|
||||||
|
// Don't store feed rate for ironing.
|
||||||
|
if (line.extrusion_role != erIroning)
|
||||||
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end;
|
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user