FIX: fix the error travel and wipe path of wipe tower
jira: none Change-Id: Ib195cfc87a08f367e5d722b4af85cd33b1d1efdc
This commit is contained in:
parent
78b00bd0e3
commit
bb2b81dc99
|
@ -529,31 +529,27 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||||
// Process the custom change_filament_gcode. If it is empty, provide a simple Tn command to change the filament.
|
// Process the custom change_filament_gcode. If it is empty, provide a simple Tn command to change the filament.
|
||||||
// Otherwise, leave control to the user completely.
|
// Otherwise, leave control to the user completely.
|
||||||
std::string change_filament_gcode = gcodegen.config().change_filament_gcode.value;
|
std::string change_filament_gcode = gcodegen.config().change_filament_gcode.value;
|
||||||
// add nozzle change gcode into change filament gcode
|
|
||||||
{
|
|
||||||
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;
|
// add nozzle change gcode into change filament gcode
|
||||||
if (gcodegen.config().nozzle_diameter.size() > 1) {
|
std::string prefix_gcode = lift_gcode_after_printing_object;
|
||||||
prefix_gcode += nozzle_change_gcode_trans;
|
std::string nozzle_change_gcode_trans;
|
||||||
}
|
if (!tcr.nozzle_change_result.gcode.empty() && (gcodegen.config().nozzle_diameter.size() > 1)) {
|
||||||
change_filament_gcode = prefix_gcode + change_filament_gcode;
|
// 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);
|
||||||
|
prefix_gcode = nozzle_change_gcode_trans;
|
||||||
}
|
}
|
||||||
|
change_filament_gcode = prefix_gcode + change_filament_gcode;
|
||||||
|
|
||||||
if (! change_filament_gcode.empty()) {
|
if (! change_filament_gcode.empty()) {
|
||||||
DynamicConfig config;
|
DynamicConfig config;
|
||||||
|
@ -720,7 +716,7 @@ static std::vector<Vec2d> get_path_of_change_filament(const Print& print)
|
||||||
// Prepare a future wipe.
|
// Prepare a future wipe.
|
||||||
gcodegen.m_wipe.reset_path();
|
gcodegen.m_wipe.reset_path();
|
||||||
for (const Vec2f& wipe_pt : tcr.wipe_path)
|
for (const Vec2f& wipe_pt : tcr.wipe_path)
|
||||||
gcodegen.m_wipe.path.points.emplace_back(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt)));
|
gcodegen.m_wipe.path.points.emplace_back(wipe_tower_point_to_object_point(gcodegen, transform_wt_pt(wipe_pt) + plate_origin_2d));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Let the planner know we are traveling between objects.
|
// Let the planner know we are traveling between objects.
|
||||||
|
|
|
@ -1905,7 +1905,7 @@ WipeTower::ToolChangeResult WipeTower::tool_change_new(size_t new_tool)
|
||||||
const float &xl = cleaning_box.ld.x();
|
const float &xl = cleaning_box.ld.x();
|
||||||
const float &xr = cleaning_box.rd.x();
|
const float &xr = cleaning_box.rd.x();
|
||||||
|
|
||||||
Vec2f start_pos = m_nozzle_change_result.start_pos + Vec2f(0, m_perimeter_width);
|
Vec2f start_pos = m_nozzle_change_result.origin_start_pos + Vec2f(0, m_perimeter_width);
|
||||||
bool left_to_right = true;
|
bool left_to_right = true;
|
||||||
double tpu_travel_length = 5;
|
double tpu_travel_length = 5;
|
||||||
double e_flow = extrusion_flow(0.2);
|
double e_flow = extrusion_flow(0.2);
|
||||||
|
@ -2058,6 +2058,7 @@ WipeTower::NozzleChangeResult WipeTower::nozzle_change_new(int old_filament_id,
|
||||||
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));
|
||||||
|
|
||||||
result.start_pos = writer.start_pos_rotated();
|
result.start_pos = writer.start_pos_rotated();
|
||||||
|
result.origin_start_pos = initial_position;
|
||||||
result.end_pos = writer.pos();
|
result.end_pos = writer.pos();
|
||||||
result.gcode = writer.gcode();
|
result.gcode = writer.gcode();
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -42,9 +42,11 @@ public:
|
||||||
{
|
{
|
||||||
std::string gcode;
|
std::string gcode;
|
||||||
|
|
||||||
Vec2f start_pos;
|
Vec2f start_pos; // rotated
|
||||||
Vec2f end_pos;
|
Vec2f end_pos;
|
||||||
|
|
||||||
|
Vec2f origin_start_pos; // not rotated
|
||||||
|
|
||||||
std::vector<Vec2f> wipe_path;
|
std::vector<Vec2f> wipe_path;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue