Tile WipeTower2 purge rows contiguously across toolchange blocks

Without ramming, each purge block reserved one wipe pitch more than its
rows occupy (ceil+1 rounding plus the ram-geometry start offset), and the
wipe began a full pitch inside the block, leaving a blank band of exactly
two pitches between adjacent blocks. Plan the block as whole wipe rows,
start the first row so the row lattice continues across the block
boundary, and fill the reserved box instead of stopping at the ordered
volume, mirroring how the BBL WipeTower keeps planned depth identical to
printed rows. Ram-printing toolchanges (SEMM with ramming enabled,
multitool ramming) are unchanged.
This commit is contained in:
SoftFever
2026-07-29 16:37:06 +08:00
parent 9292db2f9f
commit 36bd453ac8
2 changed files with 28 additions and 23 deletions

View File

@@ -362,7 +362,8 @@ private:
const WipeTower::box_coordinates &cleaning_box,
float wipe_volume,
bool interface_layer,
bool priming = false);
bool priming = false,
bool fill_box = false);
Polygon generate_support_rib_wall(WipeTowerWriter2& writer,
@@ -387,11 +388,6 @@ 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;
};