FIX: fix the error retract of nozzle change
jira: none Change-Id: I4773307263cbbca0955dd44bbf046e45d91f1b5f
This commit is contained in:
parent
120c7cd48c
commit
0d55524fca
|
@ -515,11 +515,6 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string nozzle_change_gcode_trans;
|
|
||||||
if (!tcr.nozzle_change_result.gcode.empty()) {
|
|
||||||
nozzle_change_gcode_trans = transform_gcode(tcr.nozzle_change_result.gcode, tcr.start_pos, wipe_tower_offset, wipe_tower_rotation);
|
|
||||||
}
|
|
||||||
|
|
||||||
//BBS: increase toolchange count
|
//BBS: increase toolchange count
|
||||||
gcodegen.m_toolchange_count++;
|
gcodegen.m_toolchange_count++;
|
||||||
|
|
||||||
|
@ -532,6 +527,23 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||||
std::string toolchange_gcode_str;
|
std::string toolchange_gcode_str;
|
||||||
std::string change_filament_gcode = gcodegen.config().change_filament_gcode.value;
|
std::string change_filament_gcode = gcodegen.config().change_filament_gcode.value;
|
||||||
|
|
||||||
|
std::string nozzle_change_gcode_trans;
|
||||||
|
if (!tcr.nozzle_change_result.gcode.empty()) {
|
||||||
|
// move to start_pos before nozzle change
|
||||||
|
std::string start_pos_str;
|
||||||
|
start_pos_str = gcodegen.travel_to(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(tcr.nozzle_change_result.start_pos) + plate_origin_2d), erMixed,
|
||||||
|
"Move to nozzle change start pos");
|
||||||
|
check_add_eol(start_pos_str);
|
||||||
|
nozzle_change_gcode_trans += start_pos_str;
|
||||||
|
nozzle_change_gcode_trans += gcodegen.unretract();
|
||||||
|
nozzle_change_gcode_trans += transform_gcode(tcr.nozzle_change_result.gcode, tcr.nozzle_change_result.start_pos, wipe_tower_offset, wipe_tower_rotation);
|
||||||
|
gcodegen.set_last_pos(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(tcr.nozzle_change_result.end_pos) + plate_origin_2d));
|
||||||
|
gcodegen.m_wipe.reset_path();
|
||||||
|
for (const Vec2f &wipe_pt : tcr.nozzle_change_result.wipe_path)
|
||||||
|
gcodegen.m_wipe.path.points.emplace_back(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt) + plate_origin_2d));
|
||||||
|
nozzle_change_gcode_trans += gcodegen.retract(true, false);
|
||||||
|
}
|
||||||
|
|
||||||
std::string prefix_gcode = lift_gcode_after_printing_object;
|
std::string prefix_gcode = lift_gcode_after_printing_object;
|
||||||
if (gcodegen.config().nozzle_diameter.size() > 1) {
|
if (gcodegen.config().nozzle_diameter.size() > 1) {
|
||||||
prefix_gcode += nozzle_change_gcode_trans;
|
prefix_gcode += nozzle_change_gcode_trans;
|
||||||
|
|
|
@ -993,9 +993,6 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change(int old_filament_id, int
|
||||||
(new_filament_id != (unsigned int) (-1) ? wipe_depth + m_depth_traversed - m_perimeter_width : m_wipe_tower_depth - m_perimeter_width));
|
(new_filament_id != (unsigned int) (-1) ? wipe_depth + m_depth_traversed - m_perimeter_width : m_wipe_tower_depth - m_perimeter_width));
|
||||||
|
|
||||||
Vec2f initial_position = cleaning_box.ld + Vec2f(0.f, m_depth_traversed);
|
Vec2f initial_position = cleaning_box.ld + Vec2f(0.f, m_depth_traversed);
|
||||||
writer.travel(initial_position, 30000);
|
|
||||||
writer.append("G1 Z" + std::to_string(m_z_pos) + "\n");
|
|
||||||
writer.append("G1 E2 F1800\n");
|
|
||||||
writer.set_initial_position(initial_position, m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation);
|
writer.set_initial_position(initial_position, m_wipe_tower_width, m_wipe_tower_depth, m_internal_rotation);
|
||||||
|
|
||||||
const float &xl = cleaning_box.ld.x();
|
const float &xl = cleaning_box.ld.x();
|
||||||
|
@ -1032,6 +1029,8 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change(int old_filament_id, int
|
||||||
|
|
||||||
m_depth_traversed += nozzle_change_line_count * dy;
|
m_depth_traversed += nozzle_change_line_count * dy;
|
||||||
|
|
||||||
|
NozzleChangeResult result;
|
||||||
|
|
||||||
if (is_tpu_filament(m_current_tool))
|
if (is_tpu_filament(m_current_tool))
|
||||||
{
|
{
|
||||||
bool left_to_right = !m_left_to_right;
|
bool left_to_right = !m_left_to_right;
|
||||||
|
@ -1056,30 +1055,16 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change(int old_filament_id, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
auto float_to_string_with_precision = [](float value, int precision) {
|
result.wipe_path.push_back(writer.pos());
|
||||||
std::ostringstream out;
|
|
||||||
out << std::fixed << std::setprecision(precision) << value;
|
|
||||||
return out.str();
|
|
||||||
};
|
|
||||||
|
|
||||||
float wipe_distance = 2;
|
|
||||||
Vec2f wipe_pos = writer.pos();
|
|
||||||
if (m_left_to_right) {
|
if (m_left_to_right) {
|
||||||
wipe_pos.x() -= wipe_distance;
|
result.wipe_path.push_back(Vec2f(0, writer.y()));
|
||||||
} else {
|
} else {
|
||||||
wipe_pos.x() += wipe_distance;
|
result.wipe_path.push_back(Vec2f(m_wipe_tower_width, writer.y()));
|
||||||
}
|
}
|
||||||
writer.append("; WIPE_START\n");
|
|
||||||
writer.extrude_explicit(wipe_pos, -2);
|
|
||||||
writer.append("; WIPE_END\n");
|
|
||||||
|
|
||||||
std::string lift_gcode = "G2 Z" + float_to_string_with_precision(m_z_pos + 0.4, 3) + " I0.86 J0.86 P1 F10000\n";
|
|
||||||
writer.append(lift_gcode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.append(format_nozzle_change_line(false, old_filament_id, new_filament_id));
|
writer.append(format_nozzle_change_line(false, old_filament_id, new_filament_id));
|
||||||
|
|
||||||
NozzleChangeResult result;
|
|
||||||
result.start_pos = initial_position;
|
result.start_pos = initial_position;
|
||||||
result.end_pos = writer.pos();
|
result.end_pos = writer.pos();
|
||||||
result.gcode = writer.gcode();
|
result.gcode = writer.gcode();
|
||||||
|
|
Loading…
Reference in New Issue