Skip to content

Commit

Permalink
Pref: right extruder do not wait temper in the middle of bed when wor…
Browse files Browse the repository at this point in the history
…k in copy mode
  • Loading branch information
747lulu747 authored and scotthsl committed Feb 10, 2023
1 parent 1c21bcd commit c6c56a2
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 8 deletions.
12 changes: 12 additions & 0 deletions Marlin/src/gcode/motion/G0_G1.cpp
Expand Up @@ -35,7 +35,10 @@
#include "../../module/stepper.h"
#endif

#include "../../../snapmaker/module/print_control.h"

extern xyze_pos_t destination;
bool x_first_move = false;

#if ENABLED(VARIABLE_G0_FEEDRATE)
feedRate_t fast_move_feedrate = MMM_TO_MMS(G0_FEEDRATE);
Expand Down Expand Up @@ -71,7 +74,16 @@ void GcodeSuite::G0_G1(TERN_(HAS_FAST_MOVES, const bool fast_move/*=false*/)) {
#endif
#endif

/**
* @brief only x move then move the extruder
*
*/
float bf_x = destination[X_AXIS];
get_destination_from_command(); // Get X Y Z E F (and set cutter power)
if (bf_x != destination[X_AXIS] && print_control.first_start_gcode) {
print_control.first_start_gcode = false;
x_first_move = true;
}

#ifdef G0_FEEDRATE
if (fast_move) {
Expand Down
5 changes: 4 additions & 1 deletion Marlin/src/module/motion.cpp
Expand Up @@ -1358,7 +1358,10 @@ void prepare_line_to_destination() {

#endif // PREVENT_COLD_EXTRUSION || PREVENT_LENGTHY_EXTRUDE

if (TERN0(DUAL_X_CARRIAGE, dual_x_carriage_unpark())) return;
extern bool x_first_move;
if (x_first_move) {
if (TERN0(DUAL_X_CARRIAGE, dual_x_carriage_unpark())) return;
}

if (
#if UBL_SEGMENTED
Expand Down
4 changes: 2 additions & 2 deletions snapmaker/module/power_loss.cpp
Expand Up @@ -236,8 +236,8 @@ void PowerLoss::resume_print_env() {
// sync_plan_position();

if (system_service.get_source() != SYSTEM_STATUE_SCOURCE_Z_LIVE_OFFSET) {
idex_set_parked(true);
dual_x_carriage_unpark();
idex_set_parked(true);
dual_x_carriage_unpark();
motion_control.move_to_z(stash_data.position[Z_AXIS] + Z_DOWN_SAFE_DISTANCE, PRINT_TRAVEL_FEADRATE);
motion_control.move_to_xy(stash_data.position[X_AXIS], stash_data.position[Y_AXIS], PRINT_TRAVEL_FEADRATE);
motion_control.move_to_z(stash_data.position[Z_AXIS], PRINT_TRAVEL_FEADRATE);
Expand Down
13 changes: 8 additions & 5 deletions snapmaker/module/print_control.cpp
Expand Up @@ -233,6 +233,10 @@ ErrCode PrintControl::start() {
return PRINT_RESULT_START_ERR_E;
}

if (homing_needed()) {
motion_control.home();
}

// prepare toolhead
dual_x_carriage_mode = DXC_FULL_CONTROL_MODE;
if (mode_ >= PRINT_DUPLICATION_MODE) {
Expand All @@ -241,11 +245,10 @@ ErrCode PrintControl::start() {
duplicate_extruder_x_offset = (dual_x_carriage_mode == DXC_DUPLICATION_MODE) ? \
DUPLICATION_MODE_X_OFFSET : MIRRORED_MODE_X_OFFSET;
idex_set_mirrored_mode(dual_x_carriage_mode == DXC_MIRRORED_MODE);
motion_control.home_x();
}

if (homing_needed()) {
motion_control.home();
first_start_gcode = true;
extern bool x_first_move;
x_first_move = false;
// motion_control.home_x();
}

power_loss.stash_data.file_position = 0;
Expand Down
1 change: 1 addition & 0 deletions snapmaker/module/print_control.h
Expand Up @@ -79,6 +79,7 @@ class PrintControl {
bool req_set_work_time = false;
uint32_t work_start_time = 0;
bool is_calibretion_mode = false; // calibretion mode not save powerloss data
bool first_start_gcode = false;
};

extern PrintControl print_control;
Expand Down

0 comments on commit c6c56a2

Please sign in to comment.