Add Lift Z only Above/Below, On Surface (e.g. Only on Top) (#1562)

* Added config options for Enforce Lift Z (from SS, doesn't affect Gcode
yet)

* working, minus first layer override; also fixed m_last_extrusion_role not being set

* fixed logic to match SS

* minimize to just one config

* removed first layer override

* Cleaned up logic, working as intended

* added lift above z, lift below z; somehow broke filament overrides

* fixed overrides not working, but lift above/below and enforce don't override

* fixed filament overrides

---------

Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
Jason M-H 2023-07-22 09:07:13 -04:00 committed by GitHub
parent 777c7c68f9
commit 7a3971eca5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 127 additions and 22 deletions

View file

@ -2560,7 +2560,10 @@ void TabFilament::add_filament_overrides_page()
for (const std::string opt_key : { "filament_retraction_length",
"filament_z_hop",
"filament_z_hop_types",
"filament_z_hop_types",
"filament_retract_lift_above",
"filament_retract_lift_below",
"filament_retract_lift_enforce",
"filament_retraction_speed",
"filament_deretraction_speed",
"filament_retract_restart_extra",
@ -2594,7 +2597,10 @@ void TabFilament::update_filament_overrides_page()
std::vector<std::string> opt_keys = { "filament_retraction_length",
"filament_z_hop",
"filament_z_hop_types",
"filament_z_hop_types",
"filament_retract_lift_above",
"filament_retract_lift_below",
"filament_retract_lift_enforce",
"filament_retraction_speed",
"filament_deretraction_speed",
"filament_retract_restart_extra",
@ -3507,6 +3513,11 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/)
optgroup->append_single_option_line("wipe_distance", "", extruder_idx);
optgroup->append_single_option_line("retract_before_wipe", "", extruder_idx);
optgroup = page->new_optgroup(L("Lift Z Enforcement"), L"param_retraction", -1, true);
optgroup->append_single_option_line("retract_lift_above", "", extruder_idx);
optgroup->append_single_option_line("retract_lift_below", "", extruder_idx);
optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx);
optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction", -1, true);
optgroup->append_single_option_line("retract_length_toolchange", "", extruder_idx);
optgroup->append_single_option_line("retract_restart_extra_toolchange", "", extruder_idx);
@ -3707,6 +3718,12 @@ void TabPrinter::toggle_options()
for (auto el : vec)
toggle_option(el, retraction, i);
// retract lift above / below + enforce only applies if using retract lift
vec.resize(0);
vec = {"retract_lift_above", "retract_lift_below", "retract_lift_enforce"};
for (auto el : vec)
toggle_option(el, retraction && (m_config->opt_float("z_hop", i) > 0), i);
// some options only apply when not using firmware retraction
vec.resize(0);
vec = { "retraction_speed", "deretraction_speed", "retract_before_wipe", "retract_restart_extra", "wipe", "wipe_distance" };