Reserve WipeTower2 toolchange depth to match the printed purge

The planner reserved ramming rows gated only on enable_filament_ramming and
sized them with the SEMM 0.25s time step, while toolchange_Unload rams on
(semm && enable_filament_ramming) || filament_multitool_ramming with the
multitool time step. Disabling multitool ramming therefore left ~3 unprinted
rows per toolchange as blank bands in the tower. Without ramming the first
wipe line also needs reserved depth of its own (it no longer rides the last
ramming row), plus the y_step/2 offset the wipe start inherits from the
ramming start position - otherwise the tightened boxes truncate the ordered
purge at the box edge.
This commit is contained in:
SoftFever
2026-07-29 13:23:29 +08:00
parent bef47b2c70
commit 9292db2f9f
2 changed files with 27 additions and 6 deletions

View File

@@ -387,6 +387,11 @@ private:
// Computes the depth reserved for a toolchange (shared by plan_toolchange() and the
// rib-wall square-tower replanning in generate()).
WipeTowerInfo::ToolChange set_toolchange(size_t old_tool, size_t new_tool, float layer_height, float wipe_volume, bool first_layer_plan);
// Depth consumed before the first wipe row when no ramming is printed (the wipe
// still starts y_step/2 into the box, see toolchange_Unload()); 0 with ramming,
// whose planned rows already carry the slack for it.
float wipe_start_depth_offset(size_t old_tool) const;
};