diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 6d89ded72..0b6984e7a 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1457,7 +1457,7 @@ void GCode::_do_export(Print& print, FILE* file, ThumbnailsGeneratorCallback thu for (LayerToPrint <p : layers_to_print) { std::vector lrs; lrs.emplace_back(std::move(ltp)); - this->process_layer(file, print, print.m_print_statistics, lrs, tool_ordering.tools_for_layer(ltp.print_z()), nullptr, *print_object_instance_sequential_active - object.instances().data()); + this->process_layer(file, print, print.m_print_statistics, lrs, tool_ordering.tools_for_layer(ltp.print_z() + print.config().z_offset), nullptr, *print_object_instance_sequential_active - object.instances().data()); print.throw_if_canceled(); } #ifdef HAS_PRESSURE_EQUALIZER diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp index 4e874a1b2..449944bea 100644 --- a/src/slic3r/GUI/GUI_Preview.cpp +++ b/src/slic3r/GUI/GUI_Preview.cpp @@ -8,6 +8,7 @@ #include "OpenGLManager.hpp" #include "GLCanvas3D.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/PrintConfig.hpp" #include "DoubleSlider.hpp" #include "BitmapCache.hpp" @@ -653,7 +654,15 @@ wxBoxSizer* Preview::create_layers_slider_sizer() Bind(DoubleSlider::wxCUSTOMEVT_TICKSCHANGED, [this](wxEvent&) { Model& model = wxGetApp().plater()->model(); - model.custom_gcode_per_print_z = m_layers_slider->GetTicksValues(); + Info custom_gcode_per_print_z = m_layers_slider->GetTicksValues(); + //remove z-shift from gcode output + const float z_shift = wxGetApp().preset_bundle->printers.get_edited_preset().config.opt_float("z_offset"); + if (can_display_gcode() && z_shift != 0) { + for (CustomGCode::Item& tick : custom_gcode_per_print_z.gcodes) { + tick.print_z -= z_shift; + } + } + model.custom_gcode_per_print_z = custom_gcode_per_print_z; m_schedule_background_process(); #if ENABLE_PREVIEW_TYPE_CHANGE @@ -731,7 +740,15 @@ void Preview::update_layers_slider(const std::vector& layers_z, bool kee update_layers_slider_mode(); Plater* plater = wxGetApp().plater(); - CustomGCode::Info& ticks_info_from_model = plater->model().custom_gcode_per_print_z; + CustomGCode::Info ticks_info_from_model = plater->model().custom_gcode_per_print_z; + //add z-shift from gcode output + const float z_shift = wxGetApp().preset_bundle->printers.get_edited_preset().config.opt_float("z_offset"); + if (can_display_gcode() && z_shift != 0) { + for (CustomGCode::Item& tick : ticks_info_from_model.gcodes) { + tick.print_z += z_shift; + } + } + //check incoherencies check_layers_slider_values(ticks_info_from_model.gcodes, layers_z); m_layers_slider->SetSliderValues(layers_z);