Fix up Dual X switch blocks
This commit is contained in:
parent
2495ab7af2
commit
0115e495fe
1 changed files with 43 additions and 37 deletions
|
@ -6948,6 +6948,9 @@ inline void gcode_M503() {
|
|||
stepper.synchronize();
|
||||
if (code_seen('S')) dual_x_carriage_mode = (DualXMode)code_value_byte();
|
||||
switch (dual_x_carriage_mode) {
|
||||
case DXC_FULL_CONTROL_MODE:
|
||||
case DXC_AUTO_PARK_MODE:
|
||||
break;
|
||||
case DXC_DUPLICATION_MODE:
|
||||
if (code_seen('X')) duplicate_extruder_x_offset = max(code_value_axis_units(X_AXIS), X2_MIN_POS - x_home_pos(0));
|
||||
if (code_seen('R')) duplicate_extruder_temp_offset = code_value_temp_diff();
|
||||
|
@ -6962,9 +6965,6 @@ inline void gcode_M503() {
|
|||
SERIAL_CHAR(',');
|
||||
SERIAL_ECHOLN(hotend_offset[Y_AXIS][1]);
|
||||
break;
|
||||
case DXC_FULL_CONTROL_MODE:
|
||||
case DXC_AUTO_PARK_MODE:
|
||||
break;
|
||||
default:
|
||||
dual_x_carriage_mode = DEFAULT_DUAL_X_CARRIAGE_MODE;
|
||||
break;
|
||||
|
@ -7254,9 +7254,9 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
|
|||
if (DEBUGGING(LEVELING)) {
|
||||
SERIAL_ECHOPGM("Dual X Carriage Mode ");
|
||||
switch (dual_x_carriage_mode) {
|
||||
case DXC_DUPLICATION_MODE: SERIAL_ECHOLNPGM("DXC_DUPLICATION_MODE"); break;
|
||||
case DXC_AUTO_PARK_MODE: SERIAL_ECHOLNPGM("DXC_AUTO_PARK_MODE"); break;
|
||||
case DXC_FULL_CONTROL_MODE: SERIAL_ECHOLNPGM("DXC_FULL_CONTROL_MODE"); break;
|
||||
case DXC_AUTO_PARK_MODE: SERIAL_ECHOLNPGM("DXC_AUTO_PARK_MODE"); break;
|
||||
case DXC_DUPLICATION_MODE: SERIAL_ECHOLNPGM("DXC_DUPLICATION_MODE"); break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -8974,7 +8974,11 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
|||
*/
|
||||
inline bool prepare_move_to_destination_dualx() {
|
||||
if (active_extruder_parked) {
|
||||
if (dual_x_carriage_mode == DXC_DUPLICATION_MODE && active_extruder == 0) {
|
||||
switch (dual_x_carriage_mode) {
|
||||
case DXC_FULL_CONTROL_MODE:
|
||||
break;
|
||||
case DXC_DUPLICATION_MODE:
|
||||
if (active_extruder == 0) {
|
||||
// move duplicate extruder into correct duplication position.
|
||||
planner.set_position_mm(
|
||||
LOGICAL_X_POSITION(inactive_extruder_x_pos),
|
||||
|
@ -8989,7 +8993,8 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
|||
extruder_duplication_enabled = true;
|
||||
active_extruder_parked = false;
|
||||
}
|
||||
else if (dual_x_carriage_mode == DXC_AUTO_PARK_MODE) { // handle unparking of head
|
||||
break;
|
||||
case DXC_AUTO_PARK_MODE:
|
||||
if (current_position[E_AXIS] == destination[E_AXIS]) {
|
||||
// This is a travel move (with no extrusion)
|
||||
// Skip it, but keep track of the current position
|
||||
|
@ -9007,6 +9012,7 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
|||
planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], raised_parked_position[Z_AXIS], current_position[E_AXIS], PLANNER_XY_FEEDRATE(), active_extruder);
|
||||
planner.buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
|
||||
active_extruder_parked = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
Reference in a new issue