|  |  | @ -322,16 +322,16 @@ static uint8_t target_extruder; | 
			
		
	
		
		
			
				
					
					|  |  |  | // Extruder offsets
 |  |  |  | // Extruder offsets
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #if EXTRUDERS > 1 |  |  |  | #if EXTRUDERS > 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |   #ifndef EXTRUDER_OFFSET_X |  |  |  |   #ifndef EXTRUDER_OFFSET_X | 
			
		
	
		
		
			
				
					
					|  |  |  |     #define EXTRUDER_OFFSET_X { 0 } |  |  |  |     #define EXTRUDER_OFFSET_X { 0 } // X offsets for each extruder
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   #endif |  |  |  |   #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |   #ifndef EXTRUDER_OFFSET_Y |  |  |  |   #ifndef EXTRUDER_OFFSET_Y | 
			
		
	
		
		
			
				
					
					|  |  |  |     #define EXTRUDER_OFFSET_Y { 0 } |  |  |  |     #define EXTRUDER_OFFSET_Y { 0 } // Y offsets for each extruder
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   #endif |  |  |  |   #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |   float extruder_offset[][EXTRUDERS] = { |  |  |  |   float extruder_offset[][EXTRUDERS] = { | 
			
		
	
		
		
			
				
					
					|  |  |  |     EXTRUDER_OFFSET_X, |  |  |  |     EXTRUDER_OFFSET_X, | 
			
		
	
		
		
			
				
					
					|  |  |  |     EXTRUDER_OFFSET_Y |  |  |  |     EXTRUDER_OFFSET_Y | 
			
		
	
		
		
			
				
					
					|  |  |  |     #if ENABLED(DUAL_X_CARRIAGE) |  |  |  |     #if ENABLED(DUAL_X_CARRIAGE) | 
			
		
	
		
		
			
				
					
					|  |  |  |       , { 0 } // supports offsets in XYZ plane
 |  |  |  |       , { 0 } // Z offsets for each extruder
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     #endif |  |  |  |     #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |   }; |  |  |  |   }; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | #endif | 
			
		
	
	
		
		
			
				
					|  |  | @ -5150,7 +5150,12 @@ inline void gcode_M206() { | 
			
		
	
		
		
			
				
					
					|  |  |  | #if EXTRUDERS > 1 |  |  |  | #if EXTRUDERS > 1 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   /**
 |  |  |  |   /**
 | 
			
		
	
		
		
			
				
					
					|  |  |  |    * M218 - set hotend offset (in mm), T<extruder_number> X<offset_on_X> Y<offset_on_Y> |  |  |  |    * M218 - set hotend offset (in mm) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    *   T<tool> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    *   X<xoffset> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    *   Y<yoffset> | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |    *   Z<zoffset> - Available with DUAL_X_CARRIAGE | 
			
		
	
		
		
			
				
					
					|  |  |  |    */ |  |  |  |    */ | 
			
		
	
		
		
			
				
					
					|  |  |  |   inline void gcode_M218() { |  |  |  |   inline void gcode_M218() { | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (setTargetedHotend(218)) return; |  |  |  |     if (setTargetedHotend(218)) return; | 
			
		
	
	
		
		
			
				
					|  |  | @ -6184,10 +6189,10 @@ inline void gcode_T(uint8_t tmp_extruder) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             // Offset extruder, make sure to apply the bed level rotation matrix
 |  |  |  |             // Offset extruder, make sure to apply the bed level rotation matrix
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             vector_3 tmp_offset_vec = vector_3(extruder_offset[X_AXIS][tmp_extruder], |  |  |  |             vector_3 tmp_offset_vec = vector_3(extruder_offset[X_AXIS][tmp_extruder], | 
			
		
	
		
		
			
				
					
					|  |  |  |                                                extruder_offset[Y_AXIS][tmp_extruder], |  |  |  |                                                extruder_offset[Y_AXIS][tmp_extruder], | 
			
		
	
		
		
			
				
					
					|  |  |  |                                                extruder_offset[Z_AXIS][tmp_extruder]), |  |  |  |                                                0), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                      act_offset_vec = vector_3(extruder_offset[X_AXIS][active_extruder], |  |  |  |                      act_offset_vec = vector_3(extruder_offset[X_AXIS][active_extruder], | 
			
		
	
		
		
			
				
					
					|  |  |  |                                                extruder_offset[Y_AXIS][active_extruder], |  |  |  |                                                extruder_offset[Y_AXIS][active_extruder], | 
			
		
	
		
		
			
				
					
					|  |  |  |                                                extruder_offset[Z_AXIS][active_extruder]), |  |  |  |                                                0), | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                      offset_vec = tmp_offset_vec - act_offset_vec; |  |  |  |                      offset_vec = tmp_offset_vec - act_offset_vec; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             #if ENABLED(DEBUG_LEVELING_FEATURE) |  |  |  |             #if ENABLED(DEBUG_LEVELING_FEATURE) | 
			
		
	
	
		
		
			
				
					|  |  | 
 |