diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index a884bce89..7f9a28fd0 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -221,7 +221,8 @@ std::string Wipe::wipe(GCode& gcodegen, bool toolchange) //if first layer, ask for a bigger lift for travel to object, to be on the safe side static inline void set_extra_lift(const Layer& layer, const Print& print, GCodeWriter & writer, int extruder_id) { //if first layer, ask for a bigger lift for travel to object, to be on the safe side - if (layer.id() == 0 && print.config().retract_lift.get_at(extruder_id) != 0) { + if (layer.id() == 0 && + (print.config().retract_lift.get_at(extruder_id) != 0 || print.config().retract_lift_first_layer.get_at(extruder_id))) { //get biggest first layer height and set extra lift for first travel, to be safe. double extra_lift_value = 0; for (const PrintObject* obj : print.objects()) @@ -4173,8 +4174,9 @@ std::string GCode::retract(bool toolchange) } if (need_lift) if (m_writer.tool()->retract_length() > 0 - || m_config.use_firmware_retraction + || m_config.use_firmware_retraction || (!m_writer.tool_is_extruder() && m_writer.tool()->retract_lift() != 0) + || (BOOL_EXTRUDER_CONFIG(retract_lift_first_layer) && this->m_layer_index == 0) ) gcode += m_writer.lift(); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index adb8cf0fc..dd9880d0c 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3327,7 +3327,8 @@ void PrintConfigDef::init_fff_params() def->label = L("Enforce on first layer"); def->full_label = L("Enforce lift on first layer"); def->category = OptionCategory::extruders; - def->tooltip = L("Select this option to enforce z-lift on the first layer."); + def->tooltip = L("Select this option to enforce z-lift on the first layer." + "\nIf this is enabled and the lift value is 0 or deactivated, then every first move before each object will be lifted by the first layer height."); def->mode = comAdvanced; def->is_vector_extruder = true; def->set_default_value(new ConfigOptionBools{ false }); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 44b96352a..afaed1d7c 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2938,7 +2938,7 @@ void TabPrinter::toggle_options() // retract lift above / below only applies if using retract lift vec.resize(0); - vec = { "retract_lift_above", "retract_lift_below", "retract_lift_first_layer", "retract_lift_top" }; + vec = { "retract_lift_above", "retract_lift_below", "retract_lift_top" }; for (auto el : vec) { field = get_field(el, i); if (field)