FIX: some gcode path errors of wipe tower

jira: none
Change-Id: Ic669e95ecc32a232676c86e89fa1a6fe092efa36
This commit is contained in:
zhimin.zeng 2024-12-26 18:07:39 +08:00 committed by lane.wei
parent 49b9bc8461
commit 1fe49fb2d1
2 changed files with 8 additions and 5 deletions

View File

@ -2081,7 +2081,11 @@ WipeTower::ToolChangeResult WipeTower::finish_layer_new(bool extrude_perimeter,
// BBS: speed up perimeter speed to 90mm/s for non-first layer
float feedrate = first_layer ? std::min(m_first_layer_speed * 60.f, 5400.f) : std::min(60.0f * m_filpar[m_current_tool].max_e_speed / m_extrusion_flow, 5400.f);
box_coordinates fill_box(Vec2f(m_perimeter_width, m_perimeter_width), m_wipe_tower_width - 2 * m_perimeter_width, m_wipe_tower_depth - 2 * m_perimeter_width);
float fill_box_depth = m_wipe_tower_depth - 2 * m_perimeter_width;
if (m_wipe_tower_blocks.size() == 1) {
fill_box_depth = m_layer_info->depth - 2 * m_perimeter_width;
}
box_coordinates fill_box(Vec2f(m_perimeter_width, m_perimeter_width), m_wipe_tower_width - 2 * m_perimeter_width, fill_box_depth);
writer.set_initial_position((m_left_to_right ? fill_box.ru : fill_box.lu), m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation);
@ -2212,7 +2216,7 @@ WipeTower::ToolChangeResult WipeTower::finish_layer_new(bool extrude_perimeter,
return construct_tcr(writer, false, m_current_tool, true, 0.f);
}
WipeTower::ToolChangeResult WipeTower::finish_block(int filament_id, bool extrude_perimeter, bool extrude_fill)
WipeTower::ToolChangeResult WipeTower::finish_block(const WipeTowerBlock &block, int filament_id, bool extrude_perimeter, bool extrude_fill)
{
WipeTowerWriter writer(m_layer_height, m_perimeter_width, m_gcode_flavor, m_filpar);
writer.set_extrusion_flow(m_extrusion_flow)
@ -2228,7 +2232,6 @@ WipeTower::ToolChangeResult WipeTower::finish_block(int filament_id, bool extrud
float feedrate = first_layer ? std::min(m_first_layer_speed * 60.f, 5400.f) : std::min(60.0f * m_filpar[filament_id].max_e_speed / m_extrusion_flow, 5400.f);
box_coordinates fill_box(Vec2f(0, 0), 0, 0);
WipeTower::WipeTowerBlock &block = get_block_by_category(m_filpar[filament_id].category);
fill_box = box_coordinates(Vec2f(m_perimeter_width, block.cur_depth), m_wipe_tower_width - 2 * m_perimeter_width, block.start_depth + block.layer_depths[m_cur_layer_id] - block.cur_depth - m_perimeter_width);
writer.set_initial_position((m_left_to_right ? fill_box.ru : fill_box.lu), m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation);
@ -2797,7 +2800,7 @@ void WipeTower::generate_new(std::vector<std::vector<WipeTower::ToolChangeResult
finish_layer_filament = block.last_nozzle_change_id;
}
ToolChangeResult finish_block_tcr = finish_block(finish_layer_filament, false, layer.extruder_fill);
ToolChangeResult finish_block_tcr = finish_block(block, finish_layer_filament, false, layer.extruder_fill);
bool has_inserted = false;
{

View File

@ -341,7 +341,7 @@ public:
ToolChangeResult tool_change_new(size_t new_tool);
NozzleChangeResult nozzle_change_new(int old_filament_id, int new_filament_id);
ToolChangeResult finish_layer_new(bool extrude_perimeter = true, bool extrude_fill = true, bool extrude_fill_wall = true);
ToolChangeResult finish_block(int filament_id, bool extrude_perimeter = true, bool extrude_fill = true);
ToolChangeResult finish_block(const WipeTowerBlock &block, int filament_id, bool extrude_perimeter = true, bool extrude_fill = true);
void toolchange_wipe_new(WipeTowerWriter &writer, const box_coordinates &cleaning_box, float wipe_length);
private: