diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 537ff7a295..5ee06d7108 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -305,6 +305,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of #define DISABLE_Y false #define DISABLE_Z false #define DISABLE_E false // For all extruders +#define DISABLE_UNSELECTED_E true //disable only not selected extruders and keep selected extruder active #define INVERT_X_DIR true // for Mendel set to false, for Orca set to true #define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index bfc71323fe..db53a02cb2 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -657,12 +657,24 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi if(block->steps_z != 0) enable_z(); #endif - // Enable all + // Enable extruder(s) if(block->steps_e != 0) { - enable_e0(); - enable_e1(); - enable_e2(); + if (DISABLE_UNSELECTED_E) //enable only selected extruder + { + switch(extruder) + { + case 0: enable_e0(); disable_e1(); disable_e2(); break; + case 1: disable_e0(); enable_e1(); disable_e2(); break; + case 2: disable_e0(); disable_e1(); enable_e2(); break; + } + } + else //enable all + { + enable_e0(); + enable_e1(); + enable_e2(); + } } if (block->steps_e == 0)