mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-22 18:25:18 +00:00
Added EVENT_GCODE_PARK_Tx
This commit is contained in:
parent
37bc552f3b
commit
3b9dbbc4c6
@ -2798,7 +2798,10 @@
|
||||
/**
|
||||
* Extra G-code to run while executing tool-change commands. Can be used to use an additional
|
||||
* stepper motor (e.g., I axis in Configuration.h) to drive the tool-changer.
|
||||
*
|
||||
*/
|
||||
//#define EVENT_GCODE_PARK_T0 "G28 A\nG1 A0" // Extra G-code to run before executing tool-change command if T0 was active before the toolchange command
|
||||
//#define EVENT_GCODE_PARK_T1 "G1 A10" // Extra G-code to run before executing tool-change command if T1 was active before the toolchange command
|
||||
//#define EVENT_GCODE_TOOLCHANGE_T0 "G28 A\nG1 A0" // Extra G-code to run while executing tool-change command T0
|
||||
//#define EVENT_GCODE_TOOLCHANGE_T1 "G1 A10" // Extra G-code to run while executing tool-change command T1
|
||||
//#define EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN // Always execute above G-code sequences. Use with caution!
|
||||
|
@ -1436,11 +1436,57 @@ void tool_change(const uint8_t new_tool, bool no_move/*=false*/) {
|
||||
TERN_(HAS_FANMUX, fanmux_switch(active_extruder));
|
||||
|
||||
if (ENABLED(EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN) || !no_move) {
|
||||
#if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z,\
|
||||
EVENT_GCODE_PARK_T0, EVENT_GCODE_PARK_T1, EVENT_GCODE_PARK_T2, EVENT_GCODE_PARK_T3,\
|
||||
EVENT_GCODE_PARK_T4, EVENT_GCODE_PARK_T5, EVENT_GCODE_PARK_T6, EVENT_GCODE_PARK_T7)
|
||||
xyz_pos_t old_workspace_offset;
|
||||
#endif
|
||||
|
||||
#if ANY(EVENT_GCODE_PARK_T0, EVENT_GCODE_PARK_T1, EVENT_GCODE_PARK_T2, EVENT_GCODE_PARK_T3,\
|
||||
EVENT_GCODE_PARK_T4, EVENT_GCODE_PARK_T5, EVENT_GCODE_PARK_T6, EVENT_GCODE_PARK_T7)
|
||||
old_workspace_offset = workspace_offset;
|
||||
const xyz_pos_t &ho = hotend_offset[new_tool];
|
||||
TERN_(TC_GCODE_USE_GLOBAL_X, workspace_offset.x -= ho.x);
|
||||
TERN_(TC_GCODE_USE_GLOBAL_Y, workspace_offset.y -= ho.y);
|
||||
TERN_(TC_GCODE_USE_GLOBAL_Z, workspace_offset.z -= ho.z);
|
||||
#endif
|
||||
|
||||
switch (old_tool) {
|
||||
default: break;
|
||||
#ifdef EVENT_GCODE_PARK_T0
|
||||
case 0: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T0)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T1
|
||||
case 1: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T1)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T2
|
||||
case 2: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T2)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T3
|
||||
case 3: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T3)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T4
|
||||
case 4: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T4)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T5
|
||||
case 5: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T5)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T6
|
||||
case 6: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T6)); break;
|
||||
#endif
|
||||
#ifdef EVENT_GCODE_PARK_T7
|
||||
case 7: gcode.process_subcommands_now(F(EVENT_GCODE_PARK_T7)); break;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if ANY(EVENT_GCODE_PARK_T0, EVENT_GCODE_PARK_T1, EVENT_GCODE_PARK_T2, EVENT_GCODE_PARK_T3,\
|
||||
EVENT_GCODE_PARK_T4, EVENT_GCODE_PARK_T5, EVENT_GCODE_PARK_T6, EVENT_GCODE_PARK_T7)
|
||||
workspace_offset = old_workspace_offset;
|
||||
#endif
|
||||
|
||||
#if ANY(TC_GCODE_USE_GLOBAL_X, TC_GCODE_USE_GLOBAL_Y, TC_GCODE_USE_GLOBAL_Z)
|
||||
// G0/G1/G2/G3/G5 moves are relative to the active tool.
|
||||
// Shift the workspace to make custom moves relative to T0.
|
||||
xyz_pos_t old_workspace_offset;
|
||||
if (new_tool > 0) {
|
||||
old_workspace_offset = workspace_offset;
|
||||
const xyz_pos_t &he = hotend_offset[new_tool];
|
||||
|
Loading…
Reference in New Issue
Block a user