Merge pull request #7308 from thinkyhead/bf_cleanup_config_adv
Fixes for FWRETRACT
This commit is contained in:
		
						commit
						29eef360d0
					
				| @ -76,7 +76,8 @@ script: | ||||
|   - build_marlin | ||||
|   # | ||||
|   # Test 2 extruders (one MAX6675) and heated bed on basic RAMPS 1.4 | ||||
|   #  plus a "Fix Mounted" Probe with Safe Homing and some arc options | ||||
|   # Test a "Fix Mounted" Probe with Safe Homing, some arc options, | ||||
|   # linear bed leveling, M48, leveling debug, and firmware retraction. | ||||
|   # | ||||
|   - opt_set MOTHERBOARD BOARD_RAMPS_14_EEB | ||||
|   - opt_set EXTRUDERS 2 | ||||
| @ -84,12 +85,10 @@ script: | ||||
|   - opt_set TEMP_SENSOR_1 1 | ||||
|   - opt_set TEMP_SENSOR_BED 1 | ||||
|   - opt_enable PIDTEMPBED FIX_MOUNTED_PROBE Z_SAFE_HOMING ARC_P_CIRCLES CNC_WORKSPACE_PLANES | ||||
|   - opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS | ||||
|   - opt_enable BLINKM PCA9632 RGB_LED NEOPIXEL_RGBW_LED | ||||
|   - build_marlin | ||||
|   # | ||||
|   # ...with AUTO_BED_LEVELING_LINEAR, Z_MIN_PROBE_REPEATABILITY_TEST, and DEBUG_LEVELING_FEATURE | ||||
|   # | ||||
|   - opt_enable AUTO_BED_LEVELING_LINEAR Z_MIN_PROBE_REPEATABILITY_TEST DEBUG_LEVELING_FEATURE | ||||
|   - opt_enable_adv FWRETRACT | ||||
|   - opt_set ABL_GRID_POINTS_X 16 | ||||
|   - opt_set ABL_GRID_POINTS_Y 16 | ||||
|   - build_marlin | ||||
|  | ||||
| @ -189,6 +189,13 @@ | ||||
|     #define DEFAULT_KEEPALIVE_INTERVAL 2 | ||||
|   #endif | ||||
| 
 | ||||
|   /**
 | ||||
|    * Provide a MAX_AUTORETRACT for older configs | ||||
|    */ | ||||
|   #if ENABLED(FWRETRACT) && !defined(MAX_AUTORETRACT) | ||||
|     #define MAX_AUTORETRACT 99 | ||||
|   #endif | ||||
| 
 | ||||
|   /**
 | ||||
|    * MAX_STEP_FREQUENCY differs for TOSHIBA | ||||
|    */ | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -383,10 +383,15 @@ extern float soft_endstop_min[XYZ], soft_endstop_max[XYZ]; | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   extern bool autoretract_enabled; | ||||
|   extern bool retracted[EXTRUDERS]; // extruder[n].retracted
 | ||||
|   extern float retract_length, retract_length_swap, retract_feedrate_mm_s, retract_zlift; | ||||
|   extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate_mm_s; | ||||
|   extern bool autoretract_enabled;                 // M209 S - Autoretract switch
 | ||||
|   extern float retract_length,                     // M207 S - G10 Retract length
 | ||||
|                retract_feedrate_mm_s,              // M207 F - G10 Retract feedrate
 | ||||
|                retract_zlift,                      // M207 Z - G10 Retract hop size
 | ||||
|                retract_recover_length,             // M208 S - G11 Recover length
 | ||||
|                retract_recover_feedrate_mm_s,      // M208 F - G11 Recover feedrate
 | ||||
|                swap_retract_length,                // M207 W - G10 Swap Retract length
 | ||||
|                swap_retract_recover_length,        // M208 W - G11 Swap Recover length
 | ||||
|                swap_retract_recover_feedrate_mm_s; // M208 R - G11 Swap Recover feedrate
 | ||||
| #endif | ||||
| 
 | ||||
| // Print job timer
 | ||||
|  | ||||
| @ -557,20 +557,22 @@ static uint8_t target_extruder; | ||||
|           baricuda_e_to_p_pressure = 0; | ||||
| #endif | ||||
| 
 | ||||
| #if ENABLED(FWRETRACT) | ||||
| 
 | ||||
|   bool autoretract_enabled = false; | ||||
|   bool retracted[EXTRUDERS] = { false }; | ||||
|   bool retracted_swap[EXTRUDERS] = { false }; | ||||
| 
 | ||||
|   float retract_length = RETRACT_LENGTH; | ||||
|   float retract_length_swap = RETRACT_LENGTH_SWAP; | ||||
|   float retract_feedrate_mm_s = RETRACT_FEEDRATE; | ||||
|   float retract_zlift = RETRACT_ZLIFT; | ||||
|   float retract_recover_length = RETRACT_RECOVER_LENGTH; | ||||
|   float retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; | ||||
|   float retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE; | ||||
| 
 | ||||
| #if ENABLED(FWRETRACT)                      // Initialized by settings.load()...
 | ||||
|   bool autoretract_enabled,                 // M209 S - Autoretract switch
 | ||||
|        retracted[EXTRUDERS] = { false };    // Which extruders are currently retracted
 | ||||
|   float retract_length,                     // M207 S - G10 Retract length
 | ||||
|         retract_feedrate_mm_s,              // M207 F - G10 Retract feedrate
 | ||||
|         retract_zlift,                      // M207 Z - G10 Retract hop size
 | ||||
|         retract_recover_length,             // M208 S - G11 Recover length
 | ||||
|         retract_recover_feedrate_mm_s,      // M208 F - G11 Recover feedrate
 | ||||
|         swap_retract_length,                // M207 W - G10 Swap Retract length
 | ||||
|         swap_retract_recover_length,        // M208 W - G11 Swap Recover length
 | ||||
|         swap_retract_recover_feedrate_mm_s; // M208 R - G11 Swap Recover feedrate
 | ||||
|   #if EXTRUDERS > 1 | ||||
|     bool retracted_swap[EXTRUDERS] = { false }; // Which extruders are swap-retracted
 | ||||
|   #else | ||||
|     constexpr bool retracted_swap[1] = { false }; | ||||
|   #endif | ||||
| #endif // FWRETRACT
 | ||||
| 
 | ||||
| #if HAS_POWER_SWITCH | ||||
| @ -3100,55 +3102,126 @@ static void homeaxis(const AxisEnum axis) { | ||||
| 
 | ||||
| #if ENABLED(FWRETRACT) | ||||
| 
 | ||||
|   void retract(const bool retracting, const bool swapping = false) { | ||||
|   /**
 | ||||
|    * Retract or recover according to firmware settings | ||||
|    * | ||||
|    * This function handles retract/recover moves for G10 and G11, | ||||
|    * plus auto-retract moves sent from G0/G1 when E-only moves are done. | ||||
|    * | ||||
|    * To simplify the logic, doubled retract/recover moves are ignored. | ||||
|    * | ||||
|    * Note: Z lift is done transparently to the planner. Aborting | ||||
|    *       a print between G10 and G11 may corrupt the Z position. | ||||
|    * | ||||
|    * Note: Auto-retract will apply the set Z hop in addition to any Z hop | ||||
|    *       included in the G-code. Use M207 Z0 to to prevent double hop. | ||||
|    */ | ||||
|   void retract(const bool retracting | ||||
|     #if EXTRUDERS > 1 | ||||
|       , bool swapping = false | ||||
|     #endif | ||||
|   ) { | ||||
| 
 | ||||
|     static float hop_height; | ||||
|     static float hop_height,        // Remember where the Z height started
 | ||||
|                  hop_amount = 0.0;  // Total amount lifted, for use in recover
 | ||||
| 
 | ||||
|     if (retracting == retracted[active_extruder]) return; | ||||
|     // Simply never allow two retracts or recovers in a row
 | ||||
|     if (retracted[active_extruder] == retracting) return; | ||||
| 
 | ||||
|     #if EXTRUDERS < 2 | ||||
|       bool swapping = false; | ||||
|     #endif | ||||
|     if (!retracting) swapping = retracted_swap[active_extruder]; | ||||
| 
 | ||||
|     /* // debugging
 | ||||
|       SERIAL_ECHOLNPAIR("retracting ", retracting); | ||||
|       SERIAL_ECHOLNPAIR("swapping ", swapping); | ||||
|       SERIAL_ECHOLNPAIR("active extruder ", active_extruder); | ||||
|       for (uint8_t i = 0; i < EXTRUDERS; ++i) { | ||||
|         SERIAL_ECHOPAIR("retracted[", i); | ||||
|         SERIAL_ECHOLNPAIR("] ", retracted[i]); | ||||
|         SERIAL_ECHOPAIR("retracted_swap[", i); | ||||
|         SERIAL_ECHOLNPAIR("] ", retracted_swap[i]); | ||||
|       } | ||||
|       SERIAL_ECHOLNPAIR("current_position[z] ", current_position[Z_AXIS]); | ||||
|       SERIAL_ECHOLNPAIR("hop_amount ", hop_amount); | ||||
|     //*/
 | ||||
| 
 | ||||
|     const bool has_zhop = retract_zlift > 0.01;     // Is there a hop set?
 | ||||
| 
 | ||||
|     const float old_feedrate_mm_s = feedrate_mm_s; | ||||
|     const int16_t old_flow = flow_percentage[active_extruder]; | ||||
| 
 | ||||
|     // Don't apply flow multiplication to retract/recover
 | ||||
|     flow_percentage[active_extruder] = 100; | ||||
| 
 | ||||
|     // The current position will be the destination for E and Z moves
 | ||||
|     set_destination_to_current(); | ||||
| 
 | ||||
|     if (retracting) { | ||||
|       // Remember the Z height since G-code may include its own Z-hop
 | ||||
|       // For best results turn off Z hop if G-code already includes it
 | ||||
|       hop_height = destination[Z_AXIS]; | ||||
| 
 | ||||
|       // Retract by moving from a faux E position back to the current E position
 | ||||
|       feedrate_mm_s = retract_feedrate_mm_s; | ||||
|       current_position[E_AXIS] += (swapping ? retract_length_swap : retract_length) / volumetric_multiplier[active_extruder]; | ||||
|       current_position[E_AXIS] += (swapping ? swap_retract_length : retract_length) / volumetric_multiplier[active_extruder]; | ||||
|       sync_plan_position_e(); | ||||
|       prepare_move_to_destination(); | ||||
| 
 | ||||
|       if (retract_zlift > 0.01) { | ||||
|         hop_height = current_position[Z_AXIS]; | ||||
|         // Pretend current position is lower
 | ||||
|         current_position[Z_AXIS] -= retract_zlift; | ||||
|         SYNC_PLAN_POSITION_KINEMATIC(); | ||||
|         // Raise up to the old current_position
 | ||||
|         prepare_move_to_destination(); | ||||
|       // Is a Z hop set, and has the hop not yet been done?
 | ||||
|       if (has_zhop) { | ||||
|         hop_amount += retract_zlift;                // Carriage is raised for retraction hop
 | ||||
|         current_position[Z_AXIS] -= retract_zlift;  // Pretend current pos is lower. Next move raises Z.
 | ||||
|         SYNC_PLAN_POSITION_KINEMATIC();             // Set the planner to the new position
 | ||||
|         prepare_move_to_destination();              // Raise up to the old current pos
 | ||||
|       } | ||||
|     } | ||||
|     else { | ||||
| 
 | ||||
|       // If the height hasn't been lowered, undo the Z hop
 | ||||
|       if (retract_zlift > 0.01 && hop_height <= current_position[Z_AXIS]) { | ||||
|         // Pretend current position is higher. Z will lower on the next move
 | ||||
|         current_position[Z_AXIS] += retract_zlift; | ||||
|         SYNC_PLAN_POSITION_KINEMATIC(); | ||||
|         // Lower Z
 | ||||
|         prepare_move_to_destination(); | ||||
|       // If a hop was done and Z hasn't changed, undo the Z hop
 | ||||
|       if (hop_amount && NEAR(hop_height, destination[Z_AXIS])) { | ||||
|         current_position[Z_AXIS] += hop_amount;     // Pretend current pos is higher. Next move lowers Z.
 | ||||
|         SYNC_PLAN_POSITION_KINEMATIC();             // Set the planner to the new position
 | ||||
|         prepare_move_to_destination();              // Lower to the old current pos
 | ||||
|         hop_amount = 0.0; | ||||
|       } | ||||
| 
 | ||||
|       feedrate_mm_s = retract_recover_feedrate_mm_s; | ||||
|       const float move_e = swapping ? retract_length_swap + retract_recover_length_swap : retract_length + retract_recover_length; | ||||
|       // A retract multiplier has been added here to get faster swap recovery
 | ||||
|       feedrate_mm_s = swapping ? swap_retract_recover_feedrate_mm_s : retract_recover_feedrate_mm_s; | ||||
| 
 | ||||
|       const float move_e = swapping ? swap_retract_length + swap_retract_recover_length : retract_length + retract_recover_length; | ||||
|       current_position[E_AXIS] -= move_e / volumetric_multiplier[active_extruder]; | ||||
|       sync_plan_position_e(); | ||||
| 
 | ||||
|       // Recover E
 | ||||
|       prepare_move_to_destination(); | ||||
|       prepare_move_to_destination();  // Recover E
 | ||||
|     } | ||||
| 
 | ||||
|     // Restore flow and feedrate
 | ||||
|     flow_percentage[active_extruder] = old_flow; | ||||
|     feedrate_mm_s = old_feedrate_mm_s; | ||||
| 
 | ||||
|     // The active extruder is now retracted or recovered
 | ||||
|     retracted[active_extruder] = retracting; | ||||
| 
 | ||||
|     // If swap retract/recover then update the retracted_swap flag too
 | ||||
|     #if EXTRUDERS > 1 | ||||
|       if (swapping) retracted_swap[active_extruder] = retracting; | ||||
|     #endif | ||||
| 
 | ||||
|     /* // debugging
 | ||||
|       SERIAL_ECHOLNPAIR("retracting ", retracting); | ||||
|       SERIAL_ECHOLNPAIR("swapping ", swapping); | ||||
|       SERIAL_ECHOLNPAIR("active_extruder ", active_extruder); | ||||
|       for (uint8_t i = 0; i < EXTRUDERS; ++i) { | ||||
|         SERIAL_ECHOPAIR("retracted[", i); | ||||
|         SERIAL_ECHOLNPAIR("] ", retracted[i]); | ||||
|         SERIAL_ECHOPAIR("retracted_swap[", i); | ||||
|         SERIAL_ECHOLNPAIR("] ", retracted_swap[i]); | ||||
|       } | ||||
|       SERIAL_ECHOLNPAIR("current_position[z] ", current_position[Z_AXIS]); | ||||
|       SERIAL_ECHOLNPAIR("hop_amount ", hop_amount); | ||||
|     //*/
 | ||||
| 
 | ||||
|   } // retract()
 | ||||
| 
 | ||||
| #endif // FWRETRACT
 | ||||
| @ -3277,18 +3350,18 @@ inline void gcode_G0_G1( | ||||
|     gcode_get_destination(); // For X Y Z E F
 | ||||
| 
 | ||||
|     #if ENABLED(FWRETRACT) | ||||
| 
 | ||||
|       if (autoretract_enabled && !(parser.seen('X') || parser.seen('Y') || parser.seen('Z')) && parser.seen('E')) { | ||||
|         const float echange = destination[E_AXIS] - current_position[E_AXIS]; | ||||
|         // Is this move an attempt to retract or recover?
 | ||||
|         if ((echange < -(MIN_RETRACT) && !retracted[active_extruder]) || (echange > MIN_RETRACT && retracted[active_extruder])) { | ||||
|           current_position[E_AXIS] = destination[E_AXIS]; // hide the slicer-generated retract/recover from calculations
 | ||||
|           sync_plan_position_e();  // AND from the planner
 | ||||
|           retract(!retracted[active_extruder]); | ||||
|           return; | ||||
|       if (MIN_AUTORETRACT <= MAX_AUTORETRACT) { | ||||
|         // When M209 Autoretract is enabled, convert E-only moves to firmware retract/recover moves
 | ||||
|         if (autoretract_enabled && parser.seen('E') && !(parser.seen('X') || parser.seen('Y') || parser.seen('Z'))) { | ||||
|           const float echange = destination[E_AXIS] - current_position[E_AXIS]; | ||||
|           // Is this a retract or recover move?
 | ||||
|           if (WITHIN(FABS(echange), MIN_AUTORETRACT, MAX_AUTORETRACT) && retracted[active_extruder] == (echange > 0.0)) { | ||||
|             current_position[E_AXIS] = destination[E_AXIS]; // Hide a G1-based retract/recover from calculations
 | ||||
|             sync_plan_position_e();                         // AND from the planner
 | ||||
|             return retract(echange < 0.0);                  // Firmware-based retract/recover (double-retract ignored)
 | ||||
|           } | ||||
|         } | ||||
|       } | ||||
| 
 | ||||
|     #endif // FWRETRACT
 | ||||
| 
 | ||||
|     #if IS_SCARA | ||||
| @ -8486,7 +8559,7 @@ inline void gcode_M205() { | ||||
|    * M207: Set firmware retraction values | ||||
|    * | ||||
|    *   S[+units]    retract_length | ||||
|    *   W[+units]    retract_length_swap (multi-extruder) | ||||
|    *   W[+units]    swap_retract_length (multi-extruder) | ||||
|    *   F[units/min] retract_feedrate_mm_s | ||||
|    *   Z[units]     retract_zlift | ||||
|    */ | ||||
| @ -8494,24 +8567,22 @@ inline void gcode_M205() { | ||||
|     if (parser.seen('S')) retract_length = parser.value_axis_units(E_AXIS); | ||||
|     if (parser.seen('F')) retract_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS)); | ||||
|     if (parser.seen('Z')) retract_zlift = parser.value_linear_units(); | ||||
|     #if EXTRUDERS > 1 | ||||
|       if (parser.seen('W')) retract_length_swap = parser.value_axis_units(E_AXIS); | ||||
|     #endif | ||||
|     if (parser.seen('W')) swap_retract_length = parser.value_axis_units(E_AXIS); | ||||
|   } | ||||
| 
 | ||||
|   /**
 | ||||
|    * M208: Set firmware un-retraction values | ||||
|    * | ||||
|    *   S[+units]    retract_recover_length (in addition to M207 S*) | ||||
|    *   W[+units]    retract_recover_length_swap (multi-extruder) | ||||
|    *   W[+units]    swap_retract_recover_length (multi-extruder) | ||||
|    *   F[units/min] retract_recover_feedrate_mm_s | ||||
|    *   R[units/min] swap_retract_recover_feedrate_mm_s | ||||
|    */ | ||||
|   inline void gcode_M208() { | ||||
|     if (parser.seen('S')) retract_recover_length = parser.value_axis_units(E_AXIS); | ||||
|     if (parser.seen('F')) retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS)); | ||||
|     #if EXTRUDERS > 1 | ||||
|       if (parser.seen('W')) retract_recover_length_swap = parser.value_axis_units(E_AXIS); | ||||
|     #endif | ||||
|     if (parser.seen('R')) swap_retract_recover_feedrate_mm_s = MMM_TO_MMS(parser.value_axis_units(E_AXIS)); | ||||
|     if (parser.seen('W')) swap_retract_recover_length = parser.value_axis_units(E_AXIS); | ||||
|   } | ||||
| 
 | ||||
|   /**
 | ||||
| @ -8520,9 +8591,11 @@ inline void gcode_M205() { | ||||
|    *   moves will be classified as retraction. | ||||
|    */ | ||||
|   inline void gcode_M209() { | ||||
|     if (parser.seen('S')) { | ||||
|       autoretract_enabled = parser.value_bool(); | ||||
|       for (int i = 0; i < EXTRUDERS; i++) retracted[i] = false; | ||||
|     if (MIN_AUTORETRACT <= MAX_AUTORETRACT) { | ||||
|       if (parser.seen('S')) { | ||||
|         autoretract_enabled = parser.value_bool(); | ||||
|         for (uint8_t i = 0; i < EXTRUDERS; i++) retracted[i] = false; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| @ -10987,7 +11060,7 @@ void process_next_command() { | ||||
|           gcode_M208(); | ||||
|           break; | ||||
|         case 209: // M209: Turn Automatic Retract Detection on/off
 | ||||
|           gcode_M209(); | ||||
|           if (MIN_AUTORETRACT <= MAX_AUTORETRACT) gcode_M209(); | ||||
|           break; | ||||
|       #endif // FWRETRACT
 | ||||
| 
 | ||||
|  | ||||
| @ -206,6 +206,8 @@ | ||||
|   #error "Replace SLED_PIN with SOL1_PIN (applies to both Z_PROBE_SLED and SOLENOID_PROBE)." | ||||
| #elif defined(CONTROLLERFAN_PIN) | ||||
|   #error "CONTROLLERFAN_PIN is now CONTROLLER_FAN_PIN, enabled with USE_CONTROLLER_FAN. Please update your Configuration_adv.h." | ||||
| #elif defined(MIN_RETRACT) | ||||
|   #error "MIN_RETRACT is now MIN_AUTORETRACT and MAX_AUTORETRACT. Please update your Configuration_adv.h." | ||||
| #endif | ||||
| 
 | ||||
| /**
 | ||||
|  | ||||
| @ -36,7 +36,7 @@ | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #define EEPROM_VERSION "V39" | ||||
| #define EEPROM_VERSION "V40" | ||||
| 
 | ||||
| // Change EEPROM version if these are changed:
 | ||||
| #define EEPROM_OFFSET 100 | ||||
| @ -125,44 +125,45 @@ | ||||
|  * DOGLCD:                                          2 bytes | ||||
|  *  502  M250 C    lcd_contrast                     (uint16_t) | ||||
|  * | ||||
|  * FWRETRACT:                                       29 bytes | ||||
|  * FWRETRACT:                                       33 bytes | ||||
|  *  504  M209 S    autoretract_enabled              (bool) | ||||
|  *  505  M207 S    retract_length                   (float) | ||||
|  *  509  M207 W    retract_length_swap              (float) | ||||
|  *  513  M207 F    retract_feedrate_mm_s            (float) | ||||
|  *  517  M207 Z    retract_zlift                    (float) | ||||
|  *  521  M208 S    retract_recover_length           (float) | ||||
|  *  525  M208 W    retract_recover_length_swap      (float) | ||||
|  *  529  M208 F    retract_recover_feedrate_mm_s    (float) | ||||
|  *  509  M207 F    retract_feedrate_mm_s            (float) | ||||
|  *  513  M207 Z    retract_zlift                    (float) | ||||
|  *  517  M208 S    retract_recover_length           (float) | ||||
|  *  521  M208 F    retract_recover_feedrate_mm_s    (float) | ||||
|  *  525  M207 W    swap_retract_length              (float) | ||||
|  *  529  M208 W    swap_retract_recover_length      (float) | ||||
|  *  533  M208 R    swap_retract_recover_feedrate_mm_s (float) | ||||
|  * | ||||
|  * Volumetric Extrusion:                            21 bytes | ||||
|  *  533  M200 D    volumetric_enabled               (bool) | ||||
|  *  534  M200 T D  filament_size                    (float x5) (T0..3) | ||||
|  *  537  M200 D    volumetric_enabled               (bool) | ||||
|  *  538  M200 T D  filament_size                    (float x5) (T0..3) | ||||
|  * | ||||
|  * HAVE_TMC2130:                                    20 bytes | ||||
|  *  554  M906 X    Stepper X current                (uint16_t) | ||||
|  *  556  M906 Y    Stepper Y current                (uint16_t) | ||||
|  *  558  M906 Z    Stepper Z current                (uint16_t) | ||||
|  *  560  M906 X2   Stepper X2 current               (uint16_t) | ||||
|  *  562  M906 Y2   Stepper Y2 current               (uint16_t) | ||||
|  *  564  M906 Z2   Stepper Z2 current               (uint16_t) | ||||
|  *  566  M906 E0   Stepper E0 current               (uint16_t) | ||||
|  *  568  M906 E1   Stepper E1 current               (uint16_t) | ||||
|  *  570  M906 E2   Stepper E2 current               (uint16_t) | ||||
|  *  572  M906 E3   Stepper E3 current               (uint16_t) | ||||
|  *  576  M906 E4   Stepper E4 current               (uint16_t) | ||||
|  *  558  M906 X    Stepper X current                (uint16_t) | ||||
|  *  560  M906 Y    Stepper Y current                (uint16_t) | ||||
|  *  562  M906 Z    Stepper Z current                (uint16_t) | ||||
|  *  564  M906 X2   Stepper X2 current               (uint16_t) | ||||
|  *  566  M906 Y2   Stepper Y2 current               (uint16_t) | ||||
|  *  568  M906 Z2   Stepper Z2 current               (uint16_t) | ||||
|  *  570  M906 E0   Stepper E0 current               (uint16_t) | ||||
|  *  572  M906 E1   Stepper E1 current               (uint16_t) | ||||
|  *  574  M906 E2   Stepper E2 current               (uint16_t) | ||||
|  *  576  M906 E3   Stepper E3 current               (uint16_t) | ||||
|  *  580  M906 E4   Stepper E4 current               (uint16_t) | ||||
|  * | ||||
|  * LIN_ADVANCE:                                     8 bytes | ||||
|  *  580  M900 K    extruder_advance_k               (float) | ||||
|  *  584  M900 WHD  advance_ed_ratio                 (float) | ||||
|  *  584  M900 K    extruder_advance_k               (float) | ||||
|  *  588  M900 WHD  advance_ed_ratio                 (float) | ||||
|  * | ||||
|  * HAS_MOTOR_CURRENT_PWM: | ||||
|  *  588  M907 X    Stepper XY current               (uint32_t) | ||||
|  *  592  M907 Z    Stepper Z current                (uint32_t) | ||||
|  *  596  M907 E    Stepper E current                (uint32_t) | ||||
|  *  592  M907 X    Stepper XY current               (uint32_t) | ||||
|  *  596  M907 Z    Stepper Z current                (uint32_t) | ||||
|  *  600  M907 E    Stepper E current                (uint32_t) | ||||
|  * | ||||
|  *  600                                Minimum end-point | ||||
|  * 1921 (600 + 36 + 9 + 288 + 988)     Maximum end-point | ||||
|  *  604                                Minimum end-point | ||||
|  * 1925 (604 + 36 + 9 + 288 + 988)     Maximum end-point | ||||
|  * | ||||
|  * ======================================================================== | ||||
|  * meshes_begin (between max and min end-point, directly above) | ||||
| @ -520,26 +521,26 @@ void MarlinSettings::postprocess() { | ||||
|     #endif | ||||
|     EEPROM_WRITE(lcd_contrast); | ||||
| 
 | ||||
|     #if ENABLED(FWRETRACT) | ||||
|       EEPROM_WRITE(autoretract_enabled); | ||||
|       EEPROM_WRITE(retract_length); | ||||
|       #if EXTRUDERS > 1 | ||||
|         EEPROM_WRITE(retract_length_swap); | ||||
|       #else | ||||
|         dummy = 0.0f; | ||||
|         EEPROM_WRITE(dummy); | ||||
|       #endif | ||||
|       EEPROM_WRITE(retract_feedrate_mm_s); | ||||
|       EEPROM_WRITE(retract_zlift); | ||||
|       EEPROM_WRITE(retract_recover_length); | ||||
|       #if EXTRUDERS > 1 | ||||
|         EEPROM_WRITE(retract_recover_length_swap); | ||||
|       #else | ||||
|         dummy = 0.0f; | ||||
|         EEPROM_WRITE(dummy); | ||||
|       #endif | ||||
|       EEPROM_WRITE(retract_recover_feedrate_mm_s); | ||||
|     #endif // FWRETRACT
 | ||||
|     #if DISABLED(FWRETRACT) | ||||
|       const bool autoretract_enabled = false; | ||||
|       const float retract_length = 3, | ||||
|                   retract_feedrate_mm_s = 45, | ||||
|                   retract_zlift = 0, | ||||
|                   retract_recover_length = 0, | ||||
|                   retract_recover_feedrate_mm_s = 0, | ||||
|                   swap_retract_length = 13, | ||||
|                   swap_retract_recover_length = 0, | ||||
|                   swap_retract_recover_feedrate_mm_s = 8; | ||||
|     #endif | ||||
|     EEPROM_WRITE(autoretract_enabled); | ||||
|     EEPROM_WRITE(retract_length); | ||||
|     EEPROM_WRITE(retract_feedrate_mm_s); | ||||
|     EEPROM_WRITE(retract_zlift); | ||||
|     EEPROM_WRITE(retract_recover_length); | ||||
|     EEPROM_WRITE(retract_recover_feedrate_mm_s); | ||||
|     EEPROM_WRITE(swap_retract_length); | ||||
|     EEPROM_WRITE(swap_retract_recover_length); | ||||
|     EEPROM_WRITE(swap_retract_recover_feedrate_mm_s); | ||||
| 
 | ||||
|     EEPROM_WRITE(volumetric_enabled); | ||||
| 
 | ||||
| @ -620,7 +621,7 @@ void MarlinSettings::postprocess() { | ||||
|       EEPROM_WRITE(val); | ||||
|     #else | ||||
|       val = 0; | ||||
|       for (uint8_t q = 0; q < 11; ++q) EEPROM_WRITE(val); | ||||
|       for (uint8_t q = 11; q--;) EEPROM_WRITE(val); | ||||
|     #endif | ||||
| 
 | ||||
|     //
 | ||||
| @ -701,6 +702,7 @@ void MarlinSettings::postprocess() { | ||||
|     } | ||||
|     else { | ||||
|       float dummy = 0; | ||||
|       bool dummyb; | ||||
| 
 | ||||
|       working_crc = 0; //clear before reading first "real data"
 | ||||
| 
 | ||||
| @ -830,7 +832,6 @@ void MarlinSettings::postprocess() { | ||||
|         EEPROM_READ(ubl.state.z_offset); | ||||
|         EEPROM_READ(ubl.state.storage_slot); | ||||
|       #else | ||||
|         bool dummyb; | ||||
|         uint8_t dummyui8; | ||||
|         EEPROM_READ(dummyb); | ||||
|         EEPROM_READ(dummy); | ||||
| @ -915,21 +916,17 @@ void MarlinSettings::postprocess() { | ||||
|       #if ENABLED(FWRETRACT) | ||||
|         EEPROM_READ(autoretract_enabled); | ||||
|         EEPROM_READ(retract_length); | ||||
|         #if EXTRUDERS > 1 | ||||
|           EEPROM_READ(retract_length_swap); | ||||
|         #else | ||||
|           EEPROM_READ(dummy); | ||||
|         #endif | ||||
|         EEPROM_READ(retract_feedrate_mm_s); | ||||
|         EEPROM_READ(retract_zlift); | ||||
|         EEPROM_READ(retract_recover_length); | ||||
|         #if EXTRUDERS > 1 | ||||
|           EEPROM_READ(retract_recover_length_swap); | ||||
|         #else | ||||
|           EEPROM_READ(dummy); | ||||
|         #endif | ||||
|         EEPROM_READ(retract_recover_feedrate_mm_s); | ||||
|       #endif // FWRETRACT
 | ||||
|         EEPROM_READ(swap_retract_length); | ||||
|         EEPROM_READ(swap_retract_recover_length); | ||||
|         EEPROM_READ(swap_retract_recover_feedrate_mm_s); | ||||
|       #else | ||||
|         EEPROM_READ(dummyb); | ||||
|         for (uint8_t q=8; q--;) EEPROM_READ(dummy); | ||||
|       #endif | ||||
| 
 | ||||
|       EEPROM_READ(volumetric_enabled); | ||||
| 
 | ||||
| @ -1291,17 +1288,14 @@ void MarlinSettings::reset() { | ||||
|   #if ENABLED(FWRETRACT) | ||||
|     autoretract_enabled = false; | ||||
|     retract_length = RETRACT_LENGTH; | ||||
|     #if EXTRUDERS > 1 | ||||
|       retract_length_swap = RETRACT_LENGTH_SWAP; | ||||
|     #endif | ||||
|     retract_feedrate_mm_s = RETRACT_FEEDRATE; | ||||
|     retract_zlift = RETRACT_ZLIFT; | ||||
|     retract_recover_length = RETRACT_RECOVER_LENGTH; | ||||
|     #if EXTRUDERS > 1 | ||||
|       retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP; | ||||
|     #endif | ||||
|     retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE; | ||||
|   #endif | ||||
|     swap_retract_length = RETRACT_LENGTH_SWAP; | ||||
|     swap_retract_recover_length = RETRACT_RECOVER_LENGTH_SWAP; | ||||
|     swap_retract_recover_feedrate_mm_s = RETRACT_RECOVER_FEEDRATE_SWAP; | ||||
|   #endif // FWRETRACT
 | ||||
| 
 | ||||
|   volumetric_enabled = | ||||
|     #if ENABLED(VOLUMETRIC_DEFAULT_ON) | ||||
| @ -1753,9 +1747,7 @@ void MarlinSettings::reset() { | ||||
|       } | ||||
|       CONFIG_ECHO_START; | ||||
|       SERIAL_ECHOPAIR("  M207 S", LINEAR_UNIT(retract_length)); | ||||
|       #if EXTRUDERS > 1 | ||||
|         SERIAL_ECHOPAIR(" W", LINEAR_UNIT(retract_length_swap)); | ||||
|       #endif | ||||
|       SERIAL_ECHOPAIR(" W", LINEAR_UNIT(swap_retract_length)); | ||||
|       SERIAL_ECHOPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(retract_feedrate_mm_s))); | ||||
|       SERIAL_ECHOLNPAIR(" Z", LINEAR_UNIT(retract_zlift)); | ||||
| 
 | ||||
| @ -1765,14 +1757,12 @@ void MarlinSettings::reset() { | ||||
|       } | ||||
|       CONFIG_ECHO_START; | ||||
|       SERIAL_ECHOPAIR("  M208 S", LINEAR_UNIT(retract_recover_length)); | ||||
|       #if EXTRUDERS > 1 | ||||
|         SERIAL_ECHOPAIR(" W", LINEAR_UNIT(retract_recover_length_swap)); | ||||
|       #endif | ||||
|       SERIAL_ECHOPAIR(" W", LINEAR_UNIT(swap_retract_recover_length)); | ||||
|       SERIAL_ECHOLNPAIR(" F", MMS_TO_MMM(LINEAR_UNIT(retract_recover_feedrate_mm_s))); | ||||
| 
 | ||||
|       if (!forReplay) { | ||||
|         CONFIG_ECHO_START; | ||||
|         SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries"); | ||||
|         SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret E-only moves as retract/recover"); | ||||
|       } | ||||
|       CONFIG_ECHO_START; | ||||
|       SERIAL_ECHOLNPAIR("  M209 S", autoretract_enabled ? 1 : 0); | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -740,7 +740,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -750,7 +750,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -754,7 +754,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -764,7 +764,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 35             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -760,7 +760,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -770,7 +770,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -770,7 +770,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -780,7 +780,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -762,7 +762,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -772,7 +772,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -761,7 +761,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -771,7 +771,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -759,7 +759,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -769,7 +769,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -759,7 +759,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -769,7 +769,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -759,7 +759,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -769,7 +769,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -757,7 +757,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -767,7 +767,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -764,7 +764,7 @@ | ||||
|  * Use M207 and M208 to define parameters for retract / recover. | ||||
|  * | ||||
|  * Use M209 to enable or disable auto-retract. | ||||
|  * With auto-retract enabled, all G1 E moves over the MIN_RETRACT length | ||||
|  * With auto-retract enabled, all G1 E moves within the set range | ||||
|  * will be converted to firmware-based retract/recover moves. | ||||
|  * | ||||
|  * Be sure to turn off auto-retract during filament change. | ||||
| @ -774,7 +774,8 @@ | ||||
|  */ | ||||
| //#define FWRETRACT  // ONLY PARTIALLY TESTED
 | ||||
| #if ENABLED(FWRETRACT) | ||||
|   #define MIN_RETRACT 0.1                 // A retract/recover of this length or longer can be converted to auto-retract
 | ||||
|   #define MIN_AUTORETRACT 0.1             // When auto-retract is on, convert E moves of this length and over
 | ||||
|   #define MAX_AUTORETRACT 10.0            // Upper limit for auto-retract conversion
 | ||||
|   #define RETRACT_LENGTH 3                // Default retract length (positive mm)
 | ||||
|   #define RETRACT_LENGTH_SWAP 13          // Default swap retract length (positive mm), for extruder change
 | ||||
|   #define RETRACT_FEEDRATE 45             // Default feedrate for retracting (mm/s)
 | ||||
|  | ||||
| @ -134,11 +134,11 @@ | ||||
| #define MSG_KILLED                          _UxGT("已杀掉")  //"KILLED. "
 | ||||
| #define MSG_STOPPED                         _UxGT("已停止")  //"STOPPED. "
 | ||||
| #define MSG_CONTROL_RETRACT                 _UxGT("回抽长度mm")  //"Retract mm" retract_length, retract length (positive mm)
 | ||||
| #define MSG_CONTROL_RETRACT_SWAP            _UxGT("换手回抽长度mm")  //"Swap Re.mm" retract_length_swap, swap retract length (positive mm), for extruder change
 | ||||
| #define MSG_CONTROL_RETRACT_SWAP            _UxGT("换手回抽长度mm")  //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
 | ||||
| #define MSG_CONTROL_RETRACTF                _UxGT("回抽速率mm/s")  //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
 | ||||
| #define MSG_CONTROL_RETRACT_ZLIFT           _UxGT("Hop mm")  //"Hop mm" retract_zlift, retract Z-lift
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER         _UxGT("回抽恢复长度mm")  //"UnRet +mm" retract_recover_length, additional recover length (mm, added to retract length when recovering)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("换手回抽恢复长度mm")  //"S UnRet+mm" retract_recover_length_swap, additional swap recover length (mm, added to retract length when recovering from extruder change)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("换手回抽恢复长度mm")  //"S UnRet+mm" swap_retract_recover_length, additional swap recover length (mm, added to retract length when recovering from extruder change)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("回抽恢复后进料速率mm/s")  //"UnRet  V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
 | ||||
| #define MSG_AUTORETRACT                     _UxGT("自动抽回")  //"AutoRetr." autoretract_enabled,
 | ||||
| #define MSG_FILAMENTCHANGE                  _UxGT("更换丝料")  //"Change filament"
 | ||||
|  | ||||
| @ -134,11 +134,11 @@ | ||||
| #define MSG_KILLED                          _UxGT("已殺掉")  //"KILLED. "
 | ||||
| #define MSG_STOPPED                         _UxGT("已停止")  //"STOPPED. "
 | ||||
| #define MSG_CONTROL_RETRACT                 _UxGT("回抽長度mm")  //"Retract mm" retract_length, retract length (positive mm)
 | ||||
| #define MSG_CONTROL_RETRACT_SWAP            _UxGT("換手回抽長度mm")  //"Swap Re.mm" retract_length_swap, swap retract length (positive mm), for extruder change
 | ||||
| #define MSG_CONTROL_RETRACT_SWAP            _UxGT("換手回抽長度mm")  //"Swap Re.mm" swap_retract_length, swap retract length (positive mm), for extruder change
 | ||||
| #define MSG_CONTROL_RETRACTF                _UxGT("回抽速率mm/s")  //"Retract  V" retract_feedrate_mm_s, feedrate for retracting (mm/s)
 | ||||
| #define MSG_CONTROL_RETRACT_ZLIFT           _UxGT("Hop mm")  //"Hop mm" retract_zlift, retract Z-lift
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER         _UxGT("回抽恢複長度mm")  //"UnRet +mm" retract_recover_length, additional recover length (mm, added to retract length when recovering)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("換手回抽恢複長度mm")  //"S UnRet+mm" retract_recover_length_swap, additional swap recover length (mm, added to retract length when recovering from extruder change)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVER_SWAP    _UxGT("換手回抽恢複長度mm")  //"S UnRet+mm" swap_retract_recover_length, additional swap recover length (mm, added to retract length when recovering from extruder change)
 | ||||
| #define MSG_CONTROL_RETRACT_RECOVERF        _UxGT("回抽恢複後進料速率mm/s")  //"UnRet  V" retract_recover_feedrate_mm_s, feedrate for recovering from retraction (mm/s)
 | ||||
| #define MSG_AUTORETRACT                     _UxGT("自動抽回")  //"AutoRetr." autoretract_enabled,
 | ||||
| #define MSG_FILAMENTCHANGE                  _UxGT("更換絲料")  //"Change filament"
 | ||||
|  | ||||
| @ -3380,13 +3380,13 @@ void kill_screen(const char* lcd_msg) { | ||||
|       MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled); | ||||
|       MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100); | ||||
|       #if EXTRUDERS > 1 | ||||
|         MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &retract_length_swap, 0, 100); | ||||
|         MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_SWAP, &swap_retract_length, 0, 100); | ||||
|       #endif | ||||
|       MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACTF, &retract_feedrate_mm_s, 1, 999); | ||||
|       MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_ZLIFT, &retract_zlift, 0, 999); | ||||
|       MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER, &retract_recover_length, -100, 100); | ||||
|       #if EXTRUDERS > 1 | ||||
|         MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &retract_recover_length_swap, -100, 100); | ||||
|         MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT_RECOVER_SWAP, &swap_retract_recover_length, -100, 100); | ||||
|       #endif | ||||
|       MENU_ITEM_EDIT(float3, MSG_CONTROL_RETRACT_RECOVERF, &retract_recover_feedrate_mm_s, 1, 999); | ||||
|       END_MENU(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user