|
@ -5325,7 +5325,7 @@ inline void gcode_M200() { |
|
|
if (volumetric_enabled) { |
|
|
if (volumetric_enabled) { |
|
|
filament_size[target_extruder] = code_value_linear_units(); |
|
|
filament_size[target_extruder] = code_value_linear_units(); |
|
|
// make sure all extruders have some sane value for the filament size
|
|
|
// make sure all extruders have some sane value for the filament size
|
|
|
for (int i = 0; i < COUNT(filament_size); i++) |
|
|
for (uint8_t i = 0; i < COUNT(filament_size); i++) |
|
|
if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; |
|
|
if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -6825,7 +6825,7 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
// <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower.
|
|
|
// <0 if the new nozzle is higher, >0 if lower. A bigger raise when lower.
|
|
|
float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder], |
|
|
float z_diff = hotend_offset[Z_AXIS][active_extruder] - hotend_offset[Z_AXIS][tmp_extruder], |
|
|
z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0); |
|
|
z_raise = 0.3 + (z_diff > 0.0 ? z_diff : 0.0); |
|
|
|
|
|
|
|
|
// Always raise by some amount
|
|
|
// Always raise by some amount
|
|
|
planner.buffer_line( |
|
|
planner.buffer_line( |
|
|
current_position[X_AXIS], |
|
|
current_position[X_AXIS], |
|
@ -6836,10 +6836,10 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
active_extruder |
|
|
active_extruder |
|
|
); |
|
|
); |
|
|
stepper.synchronize(); |
|
|
stepper.synchronize(); |
|
|
|
|
|
|
|
|
move_extruder_servo(active_extruder); |
|
|
move_extruder_servo(active_extruder); |
|
|
delay(500); |
|
|
delay(500); |
|
|
|
|
|
|
|
|
// Move back down, if needed
|
|
|
// Move back down, if needed
|
|
|
if (z_raise != z_diff) { |
|
|
if (z_raise != z_diff) { |
|
|
planner.buffer_line( |
|
|
planner.buffer_line( |
|
@ -6853,7 +6853,7 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
stepper.synchronize(); |
|
|
stepper.synchronize(); |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
/**
|
|
|
/**
|
|
|
* Set current_position to the position of the new nozzle. |
|
|
* Set current_position to the position of the new nozzle. |
|
|
* Offsets are based on linear distance, so we need to get |
|
|
* Offsets are based on linear distance, so we need to get |
|
@ -6906,7 +6906,7 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
current_position[Z_AXIS] += offset_vec.z; |
|
|
current_position[Z_AXIS] += offset_vec.z; |
|
|
|
|
|
|
|
|
#else // !AUTO_BED_LEVELING_FEATURE
|
|
|
#else // !AUTO_BED_LEVELING_FEATURE
|
|
|
|
|
|
|
|
|
float xydiff[2] = { |
|
|
float xydiff[2] = { |
|
|
hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], |
|
|
hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], |
|
|
hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder] |
|
|
hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder] |
|
@ -6930,7 +6930,7 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
#endif // MESH_BED_LEVELING
|
|
|
#endif // MESH_BED_LEVELING
|
|
|
|
|
|
|
|
|
#endif // !AUTO_BED_LEVELING_FEATURE
|
|
|
#endif // !AUTO_BED_LEVELING_FEATURE
|
|
|
|
|
|
|
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE) |
|
|
#if ENABLED(DEBUG_LEVELING_FEATURE) |
|
@ -6993,7 +6993,7 @@ inline void gcode_T(uint8_t tmp_extruder) { |
|
|
SERIAL_ECHOLNPGM("<<< gcode_T"); |
|
|
SERIAL_ECHOLNPGM("<<< gcode_T"); |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
SERIAL_ECHO_START; |
|
|
SERIAL_ECHO_START; |
|
|
SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER); |
|
|
SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER); |
|
|
SERIAL_PROTOCOLLN((int)active_extruder); |
|
|
SERIAL_PROTOCOLLN((int)active_extruder); |
|
@ -8695,6 +8695,6 @@ float calculate_volumetric_multiplier(float diameter) { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void calculate_volumetric_multipliers() { |
|
|
void calculate_volumetric_multipliers() { |
|
|
for (int i = 0; i < COUNT(filament_size); i++) |
|
|
for (uint8_t i = 0; i < COUNT(filament_size); i++) |
|
|
volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]); |
|
|
volumetric_multiplier[i] = calculate_volumetric_multiplier(filament_size[i]); |
|
|
} |
|
|
} |
|
|