Merge pull request #4204 from thinkyhead/rc_fix_gcode_t_position
Additional patches for gcode_T position change
This commit is contained in:
		
						commit
						d70197f514
					
				| @ -6501,6 +6501,13 @@ inline void gcode_T(uint8_t tmp_extruder) { | |||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|  |     if (DEBUGGING(LEVELING)) { | ||||||
|  |       SERIAL_ECHOLNPGM(">>> gcode_T"); | ||||||
|  |       DEBUG_POS("BEFORE", current_position); | ||||||
|  |     } | ||||||
|  |   #endif | ||||||
|  | 
 | ||||||
|   #if HOTENDS > 1 |   #if HOTENDS > 1 | ||||||
| 
 | 
 | ||||||
|     float old_feedrate = feedrate; |     float old_feedrate = feedrate; | ||||||
| @ -6583,11 +6590,6 @@ inline void gcode_T(uint8_t tmp_extruder) { | |||||||
|         // Z software endstop. But this is technically correct (and
 |         // Z software endstop. But this is technically correct (and
 | ||||||
|         // there is no viable alternative).
 |         // there is no viable alternative).
 | ||||||
|         //
 |         //
 | ||||||
|         float xydiff[2] = { |  | ||||||
|           hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], |  | ||||||
|           hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder] |  | ||||||
|         }; |  | ||||||
| 
 |  | ||||||
|         #if ENABLED(AUTO_BED_LEVELING_FEATURE) |         #if ENABLED(AUTO_BED_LEVELING_FEATURE) | ||||||
|           // 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(hotend_offset[X_AXIS][tmp_extruder], |           vector_3 tmp_offset_vec = vector_3(hotend_offset[X_AXIS][tmp_extruder], | ||||||
| @ -6600,31 +6602,29 @@ inline void gcode_T(uint8_t tmp_extruder) { | |||||||
| 
 | 
 | ||||||
|           #if ENABLED(DEBUG_LEVELING_FEATURE) |           #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|             if (DEBUGGING(LEVELING)) { |             if (DEBUGGING(LEVELING)) { | ||||||
|               SERIAL_ECHOLNPGM(">>> gcode_T"); |  | ||||||
|               tmp_offset_vec.debug("tmp_offset_vec"); |               tmp_offset_vec.debug("tmp_offset_vec"); | ||||||
|               act_offset_vec.debug("act_offset_vec"); |               act_offset_vec.debug("act_offset_vec"); | ||||||
|               offset_vec.debug("offset_vec (BEFORE)"); |               offset_vec.debug("offset_vec (BEFORE)"); | ||||||
|               DEBUG_POS("BEFORE rotation", current_position); |  | ||||||
|             } |             } | ||||||
|           #endif |           #endif | ||||||
| 
 | 
 | ||||||
|           offset_vec.apply_rotation(planner.bed_level_matrix.transpose(planner.bed_level_matrix)); |           offset_vec.apply_rotation(planner.bed_level_matrix.transpose(planner.bed_level_matrix)); | ||||||
| 
 | 
 | ||||||
|           // Adjust the current position
 |  | ||||||
|           current_position[X_AXIS] += offset_vec.x; |  | ||||||
|           current_position[Y_AXIS] += offset_vec.y; |  | ||||||
|           current_position[Z_AXIS] += offset_vec.z; |  | ||||||
| 
 |  | ||||||
|           #if ENABLED(DEBUG_LEVELING_FEATURE) |           #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|             if (DEBUGGING(LEVELING)) { |             if (DEBUGGING(LEVELING)) offset_vec.debug("offset_vec (AFTER)"); | ||||||
|               offset_vec.debug("offset_vec (AFTER)"); |  | ||||||
|               DEBUG_POS("AFTER rotation", current_position); |  | ||||||
|               SERIAL_ECHOLNPGM("<<< gcode_T"); |  | ||||||
|             } |  | ||||||
|           #endif |           #endif | ||||||
| 
 | 
 | ||||||
|  |           // Adjustments to the current position
 | ||||||
|  |           float xydiff[2] = { offset_vec.x, offset_vec.y }; | ||||||
|  |           current_position[Z_AXIS] += offset_vec.z; | ||||||
|  | 
 | ||||||
|         #else // !AUTO_BED_LEVELING_FEATURE
 |         #else // !AUTO_BED_LEVELING_FEATURE
 | ||||||
| 
 | 
 | ||||||
|  |           float xydiff[2] = { | ||||||
|  |             hotend_offset[X_AXIS][tmp_extruder] - hotend_offset[X_AXIS][active_extruder], | ||||||
|  |             hotend_offset[Y_AXIS][tmp_extruder] - hotend_offset[Y_AXIS][active_extruder] | ||||||
|  |           }; | ||||||
|  | 
 | ||||||
|           #if ENABLED(MESH_BED_LEVELING) |           #if ENABLED(MESH_BED_LEVELING) | ||||||
| 
 | 
 | ||||||
|             if (mbl.active()) { |             if (mbl.active()) { | ||||||
| @ -6635,12 +6635,11 @@ inline void gcode_T(uint8_t tmp_extruder) { | |||||||
| 
 | 
 | ||||||
|           #endif // MESH_BED_LEVELING
 |           #endif // MESH_BED_LEVELING
 | ||||||
| 
 | 
 | ||||||
|  |         #endif // !AUTO_BED_LEVELING_FEATURE
 | ||||||
|  | 
 | ||||||
|         // The newly-selected extruder XY is actually at...
 |         // The newly-selected extruder XY is actually at...
 | ||||||
|         current_position[X_AXIS] += xydiff[X_AXIS]; |         current_position[X_AXIS] += xydiff[X_AXIS]; | ||||||
|         current_position[Y_AXIS] += xydiff[Y_AXIS]; |         current_position[Y_AXIS] += xydiff[Y_AXIS]; | ||||||
| 
 |  | ||||||
|         #endif // !AUTO_BED_LEVELING_FEATURE
 |  | ||||||
| 
 |  | ||||||
|         for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) { |         for (uint8_t i = X_AXIS; i <= Y_AXIS; i++) { | ||||||
|           position_shift[i] += xydiff[i]; |           position_shift[i] += xydiff[i]; | ||||||
|           update_software_endstops((AxisEnum)i); |           update_software_endstops((AxisEnum)i); | ||||||
| @ -6674,6 +6673,13 @@ inline void gcode_T(uint8_t tmp_extruder) { | |||||||
| 
 | 
 | ||||||
|   #endif |   #endif | ||||||
| 
 | 
 | ||||||
|  |   #if ENABLED(DEBUG_LEVELING_FEATURE) | ||||||
|  |     if (DEBUGGING(LEVELING)) { | ||||||
|  |       DEBUG_POS("AFTER", current_position); | ||||||
|  |       SERIAL_ECHOLNPGM("<<< gcode_T"); | ||||||
|  |     } | ||||||
|  |   #endif | ||||||
|  | 
 | ||||||
|   SERIAL_ECHO_START; |   SERIAL_ECHO_START; | ||||||
|   SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER); |   SERIAL_ECHOPGM(MSG_ACTIVE_EXTRUDER); | ||||||
|   SERIAL_PROTOCOLLN((int)active_extruder); |   SERIAL_PROTOCOLLN((int)active_extruder); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user