allow retract_lift_first_layer even when 0 lift to activate extra lift for first move before each object on first layer

supermerill/SuperSlicer#1575
This commit is contained in:
supermerill 2021-09-27 13:06:21 +02:00
parent f711601a66
commit b16ecbfcb1
3 changed files with 7 additions and 4 deletions

View File

@ -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();

View File

@ -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 });

View File

@ -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)