Browse Source

Merge pull request #6021 from Bob-the-Kuhn/BUG-FIX--Switching-extruder-tool-change-Z-height

Bug Fix: Switching extruder tool change leaves Z in wrong position
Scott Lahteine 8 years ago
parent
commit
0b22069e82
1 changed files with 5 additions and 3 deletions
  1. 5
    3
      Marlin/Marlin_main.cpp

+ 5
- 3
Marlin/Marlin_main.cpp View File

@@ -7385,7 +7385,7 @@ inline void gcode_M503() {
7385 7385
       if (nozzle_timed_out)
7386 7386
         lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
7387 7387
 
7388
-      #if HAS_BUZZER 
7388
+      #if HAS_BUZZER
7389 7389
         filament_change_beep();
7390 7390
       #endif
7391 7391
 
@@ -7445,7 +7445,7 @@ inline void gcode_M503() {
7445 7445
     stepper.synchronize();
7446 7446
 
7447 7447
     #if defined(FILAMENT_CHANGE_EXTRUDE_LENGTH) && FILAMENT_CHANGE_EXTRUDE_LENGTH > 0
7448
-  
7448
+
7449 7449
       do {
7450 7450
         // "Wait for filament extrude"
7451 7451
         lcd_filament_change_show_message(FILAMENT_CHANGE_MESSAGE_EXTRUDE);
@@ -8033,6 +8033,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
8033 8033
                   z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0);
8034 8034
 
8035 8035
             // Always raise by some amount (destination copied from current_position earlier)
8036
+            float save_Z = destination[Z_AXIS];  // save Z for later on
8036 8037
             destination[Z_AXIS] += z_raise;
8037 8038
             planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
8038 8039
             stepper.synchronize();
@@ -8046,6 +8047,7 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
8046 8047
               planner.buffer_line_kinematic(destination, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
8047 8048
               stepper.synchronize();
8048 8049
             }
8050
+            destination[Z_AXIS] = save_Z;  // restore original Z position so the 'Move to the "old position"' is correct
8049 8051
           #endif
8050 8052
 
8051 8053
           /**
@@ -10306,7 +10308,7 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
10306 10308
   #else
10307 10309
     #define M600_TEST true
10308 10310
   #endif
10309
-             
10311
+
10310 10312
   if (M600_TEST && stepper_inactive_time && ELAPSED(ms, previous_cmd_ms + stepper_inactive_time)
10311 10313
       && !ignore_stepper_queue && !planner.blocks_queued()) {
10312 10314
     #if ENABLED(DISABLE_INACTIVE_X)

Loading…
Cancel
Save