diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index a5765d9fd..fc1a74df4 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -8587,23 +8587,32 @@ Sigma_Exit: ### M702 - Unload filament G32: Undock Z Probe sled #### Usage - M702 [ C ] + M702 [ U | Z ] #### Parameters - - `C` - Unload just current filament - - without any parameters unload all filaments + - `U` - Retract distance for removal (manual reload). Default value is 0. + - `Z` - Move the Z axis by this distance. Default value MIN_Z_FOR_UNLOAD. */ - case 702: - { - if (code_seen('C')) { - if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! if "C" unload current filament; if mmu is not present no action is performed - } - else { - if(MMU2::mmu2.Enabled()) MMU2::mmu2.unload(); //! unload current filament - else unload_filament(); - } - } - break; + case 702: + { + // TODO: Implement U parameter + + if (code_seen('Z')) + { + float z_target = code_value(); + raise_z_above(z_target, false); + } else { + raise_z_above(MIN_Z_FOR_UNLOAD, false); + } + + if (MMU2::mmu2.Enabled()) + { + MMU2::mmu2.unload(); + } else { + unload_filament(); + } + } + break; /*! ### M704 - Load to MMU