Skip to content

Commit

Permalink
Add back m_nominal_z to store main print_z as GcodeWriter::m_pos will…
Browse files Browse the repository at this point in the history
… be changed after parsing get_last_z_from_gcode
  • Loading branch information
SoftFever committed Oct 6, 2024
1 parent 7736cd1 commit cc90d79
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 4 deletions.
7 changes: 4 additions & 3 deletions src/libslic3r/GCode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4521,6 +4521,7 @@ std::string GCode::change_layer(coordf_t print_z)

m_need_change_layer_lift_z = true;

m_nominal_z = z;
m_writer.get_position().z() = z;

// forget last wiping path as wiping after raising Z is pointless
Expand Down Expand Up @@ -5095,7 +5096,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,

const auto get_sloped_z = [&sloped, this](double z_ratio) {
const auto height = sloped->height;
return lerp(m_writer.get_position().z() - height, m_writer.get_position().z(), z_ratio);
return lerp(m_nominal_z - height, m_nominal_z, z_ratio);
};

// go to first point of extrusion path
Expand Down Expand Up @@ -6011,7 +6012,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string
if (travel.size() == 2) {
// No extra movements emitted by avoid_crossing_perimeters, simply move to the end point with z change
const auto& dest2d = this->point_to_gcode(travel.points.back());
Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_writer.get_position().z() : z);
Vec3d dest3d(dest2d(0), dest2d(1), z == DBL_MAX ? m_nominal_z : z);
gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z);
m_need_change_layer_lift_z = false;
} else {
Expand All @@ -6021,7 +6022,7 @@ std::string GCode::travel_to(const Point& point, ExtrusionRole role, std::string
if (i == 1) {
// Lift to normal z at beginning
Vec2d dest2d = this->point_to_gcode(travel.points[i]);
Vec3d dest3d(dest2d(0), dest2d(1), m_writer.get_position().z());
Vec3d dest3d(dest2d(0), dest2d(1), m_nominal_z);
gcode += m_writer.travel_to_xyz(dest3d, comment, m_need_change_layer_lift_z);
m_need_change_layer_lift_z = false;
} else if (z != DBL_MAX && i == travel.size() - 1) {
Expand Down
4 changes: 3 additions & 1 deletion src/libslic3r/GCode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,8 @@ class GCode {
m_silent_time_estimator_enabled(false),
m_last_obj_copy(nullptr, Point(std::numeric_limits<coord_t>::max(), std::numeric_limits<coord_t>::max())),
// BBS
m_toolchange_count(0)
m_toolchange_count(0),
m_nominal_z(0.)
{}
~GCode() = default;

Expand Down Expand Up @@ -590,6 +591,7 @@ class GCode {
// BBS
Print* m_curr_print = nullptr;
unsigned int m_toolchange_count;
coordf_t m_nominal_z;
bool m_need_change_layer_lift_z = false;
int m_start_gcode_filament = -1;

Expand Down

0 comments on commit cc90d79

Please sign in to comment.