| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -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)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
 
 |