[2.0.x] Fix change filament for delta machines (#9295)

This commit is contained in:
Thomas Moore 2018-01-22 10:21:42 -06:00 committed by Scott Lahteine
parent 62ecc74e76
commit 3db35ba9be
5 changed files with 31 additions and 12 deletions

View file

@ -119,7 +119,7 @@ static bool ensure_safe_temperature(const AdvancedPauseMode mode=ADVANCED_PAUSE_
static void do_pause_e_move(const float &length, const float &fr) {
set_destination_from_current();
destination[E_AXIS] += length / planner.e_factor[active_extruder];
buffer_line_to_destination(fr);
planner.buffer_line_kinematic(destination, fr, active_extruder);
stepper.synchronize();
set_current_from_destination();
}
@ -336,6 +336,9 @@ bool pause_print(const float &retract, const point_t &park_point, const float &u
if (retract && thermalManager.hotEnoughToExtrude(active_extruder))
do_pause_e_move(retract, PAUSE_PARK_RETRACT_FEEDRATE);
#if ENABLED(NO_MOTION_BEFORE_HOMING)
if (!axis_unhomed_error())
#endif
// Park the nozzle by moving up by z_lift and then moving to (x_pos, y_pos)
Nozzle::park(2, park_point);

View file

@ -41,7 +41,7 @@
* L[distance] - Extrude distance for insertion, for the specified extruder
*
*/
inline void GcodeSuite::M603() {
void GcodeSuite::M603() {
if (get_target_extruder_from_command()) return;

View file

@ -50,6 +50,11 @@
void GcodeSuite::M701() {
point_t park_point = NOZZLE_PARK_POINT;
#if ENABLED(NO_MOTION_BEFORE_HOMING)
// Only raise Z if the machine is homed
if (axis_unhomed_error()) park_point.z = 0;
#endif
if (get_target_extruder_from_command()) return;
// Z axis lift
@ -107,6 +112,11 @@ void GcodeSuite::M701() {
void GcodeSuite::M702() {
point_t park_point = NOZZLE_PARK_POINT;
#if ENABLED(NO_MOTION_BEFORE_HOMING)
// Only raise Z if the machine is homed
if (axis_unhomed_error()) park_point.z = 0;
#endif
if (get_target_extruder_from_command()) return;
// Z axis lift

View file

@ -633,17 +633,17 @@ void GcodeSuite::process_parsed_command() {
#endif
#if ENABLED(ADVANCED_PAUSE_FEATURE)
case 600: // M600: Pause for filament change
M600();
break;
case 600: M600(); break; // M600: Pause for Filament Change
case 603: M603(); break; // M603: Configure Filament Change
#endif // ADVANCED_PAUSE_FEATURE
#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
case 605: M605(); break; // M605: Set Dual X Carriage movement mode
#endif
#if ENABLED(MK2_MULTIPLEXER)
case 702: M702(); break; // M702: Unload all extruders
#if ENABLED(FILAMENT_LOAD_UNLOAD_GCODES)
case 701: M701(); break; // M701: Load Filament
case 702: M702(); break; // M702: Unload Filament
#endif
#if ENABLED(LIN_ADVANCE)

View file

@ -1250,6 +1250,12 @@
#endif
#endif
// Nozzle park
#if ENABLED(NOZZLE_PARK_FEATURE) && ENABLED(DELTA)
#undef NOZZLE_PARK_Z_FEEDRATE
#define NOZZLE_PARK_Z_FEEDRATE NOZZLE_PARK_XY_FEEDRATE
#endif
// Force SDCARD_SORT_ALPHA to be enabled for Graphical LCD on LPC1768
// because of a bug in the shared SPI implementation. (See #8122)
#if defined(TARGET_LPC1768) && ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)