|
@@ -6587,29 +6587,29 @@ inline void gcode_T(uint8_t tmp_extruder) {
|
6587
|
6587
|
// No extra case for AUTO_BED_LEVELING_FEATURE in DUAL_X_CARRIAGE. Does that mean they don't work together?
|
6588
|
6588
|
#else // !DUAL_X_CARRIAGE
|
6589
|
6589
|
|
6590
|
|
- //
|
6591
|
|
- // Set current_position to the position of the new nozzle.
|
6592
|
|
- // Offsets are based on linear distance, so we need to get
|
6593
|
|
- // the resulting position in coordinate space.
|
6594
|
|
- //
|
6595
|
|
- // - With grid or 3-point leveling, offset XYZ by a tilted vector
|
6596
|
|
- // - With mesh leveling, update Z for the new position
|
6597
|
|
- // - Otherwise, just use the raw linear distance
|
6598
|
|
- //
|
6599
|
|
- // Software endstops are altered here too. Consider a case where:
|
6600
|
|
- // E0 at X=0 ... E1 at X=10
|
6601
|
|
- // When we switch to E1 now X=10, but E1 can't move left.
|
6602
|
|
- // To express this we apply the change in XY to the software endstops.
|
6603
|
|
- // E1 can move farther right than E0, so the right limit is extended.
|
6604
|
|
- //
|
6605
|
|
- // Note that we don't adjust the Z software endstops. Why not?
|
6606
|
|
- // Consider a case where Z=0 (here) and switching to E1 makes Z=1
|
6607
|
|
- // because the bed is 1mm lower at the new position. As long as
|
6608
|
|
- // the first nozzle is out of the way, the carriage should be
|
6609
|
|
- // allowed to move 1mm lower. This technically "breaks" the
|
6610
|
|
- // Z software endstop. But this is technically correct (and
|
6611
|
|
- // there is no viable alternative).
|
6612
|
|
- //
|
|
6590
|
+ /**
|
|
6591
|
+ * Set current_position to the position of the new nozzle.
|
|
6592
|
+ * Offsets are based on linear distance, so we need to get
|
|
6593
|
+ * the resulting position in coordinate space.
|
|
6594
|
+ *
|
|
6595
|
+ * - With grid or 3-point leveling, offset XYZ by a tilted vector
|
|
6596
|
+ * - With mesh leveling, update Z for the new position
|
|
6597
|
+ * - Otherwise, just use the raw linear distance
|
|
6598
|
+ *
|
|
6599
|
+ * Software endstops are altered here too. Consider a case where:
|
|
6600
|
+ * E0 at X=0 ... E1 at X=10
|
|
6601
|
+ * When we switch to E1 now X=10, but E1 can't move left.
|
|
6602
|
+ * To express this we apply the change in XY to the software endstops.
|
|
6603
|
+ * E1 can move farther right than E0, so the right limit is extended.
|
|
6604
|
+ *
|
|
6605
|
+ * Note that we don't adjust the Z software endstops. Why not?
|
|
6606
|
+ * Consider a case where Z=0 (here) and switching to E1 makes Z=1
|
|
6607
|
+ * because the bed is 1mm lower at the new position. As long as
|
|
6608
|
+ * the first nozzle is out of the way, the carriage should be
|
|
6609
|
+ * allowed to move 1mm lower. This technically "breaks" the
|
|
6610
|
+ * Z software endstop. But this is technically correct (and
|
|
6611
|
+ * there is no viable alternative).
|
|
6612
|
+ */
|
6613
|
6613
|
#if ENABLED(AUTO_BED_LEVELING_FEATURE)
|
6614
|
6614
|
// Offset extruder, make sure to apply the bed level rotation matrix
|
6615
|
6615
|
vector_3 tmp_offset_vec = vector_3(hotend_offset[X_AXIS][tmp_extruder],
|