Kaynağa Gözat

Followup to hotend_offset[Z] patch

Scott Lahteine 6 yıl önce
ebeveyn
işleme
d1c9517903

+ 9
- 14
Marlin/src/gcode/config/M218.cpp Dosyayı Görüntüle

@@ -22,7 +22,7 @@
22 22
 
23 23
 #include "../../inc/MarlinConfig.h"
24 24
 
25
-#if HOTENDS > 1
25
+#if HAS_HOTEND_OFFSET
26 26
 
27 27
 #include "../gcode.h"
28 28
 #include "../../module/motion.h"
@@ -37,7 +37,7 @@
37 37
  *   T<tool>
38 38
  *   X<xoffset>
39 39
  *   Y<yoffset>
40
- *   Z<zoffset> - Available with DUAL_X_CARRIAGE, SWITCHING_NOZZLE and PARKING_EXTRUDER
40
+ *   Z<zoffset>
41 41
  */
42 42
 void GcodeSuite::M218() {
43 43
   if (get_target_extruder_from_command() || target_extruder == 0) return;
@@ -51,13 +51,10 @@ void GcodeSuite::M218() {
51 51
     hotend_offset[Y_AXIS][target_extruder] = parser.value_linear_units();
52 52
     report = false;
53 53
   }
54
-
55
-  #if HAS_HOTEND_OFFSET_Z
56
-    if (parser.seenval('Z')) {
57
-      hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units();
58
-      report = false;
59
-    }
60
-  #endif
54
+  if (parser.seenval('Z')) {
55
+    hotend_offset[Z_AXIS][target_extruder] = parser.value_linear_units();
56
+    report = false;
57
+  }
61 58
 
62 59
   if (report) {
63 60
     SERIAL_ECHO_START();
@@ -67,10 +64,8 @@ void GcodeSuite::M218() {
67 64
       SERIAL_ECHO(hotend_offset[X_AXIS][e]);
68 65
       SERIAL_CHAR(',');
69 66
       SERIAL_ECHO(hotend_offset[Y_AXIS][e]);
70
-      #if HAS_HOTEND_OFFSET_Z
71
-        SERIAL_CHAR(',');
72
-        SERIAL_ECHO(hotend_offset[Z_AXIS][e]);
73
-      #endif
67
+      SERIAL_CHAR(',');
68
+      SERIAL_ECHO(hotend_offset[Z_AXIS][e]);
74 69
     }
75 70
     SERIAL_EOL();
76 71
   }
@@ -81,4 +76,4 @@ void GcodeSuite::M218() {
81 76
   #endif
82 77
 }
83 78
 
84
-#endif // HOTENDS > 1
79
+#endif // HAS_HOTEND_OFFSET

+ 1
- 1
Marlin/src/gcode/feature/pause/M125.cpp Dosyayı Görüntüle

@@ -65,7 +65,7 @@ void GcodeSuite::M125() {
65 65
   // Lift Z axis
66 66
   if (parser.seenval('Z')) park_point.z = parser.linearval('Z');
67 67
 
68
-  #if HOTENDS > 1 && DISABLED(DUAL_X_CARRIAGE) && DISABLED(DELTA)
68
+  #if HAS_HOTEND_OFFSET && DISABLED(DUAL_X_CARRIAGE) && DISABLED(DELTA)
69 69
     park_point.x += (active_extruder ? hotend_offset[X_AXIS][active_extruder] : 0);
70 70
     park_point.y += (active_extruder ? hotend_offset[Y_AXIS][active_extruder] : 0);
71 71
   #endif

+ 1
- 1
Marlin/src/gcode/feature/pause/M600.cpp Dosyayı Görüntüle

@@ -87,7 +87,7 @@ void GcodeSuite::M600() {
87 87
   if (parser.seenval('X')) park_point.x = parser.linearval('X');
88 88
   if (parser.seenval('Y')) park_point.y = parser.linearval('Y');
89 89
 
90
-  #if HOTENDS > 1 && DISABLED(DUAL_X_CARRIAGE) && DISABLED(DELTA)
90
+  #if HAS_HOTEND_OFFSET && DISABLED(DUAL_X_CARRIAGE) && DISABLED(DELTA)
91 91
     park_point.x += (active_extruder ? hotend_offset[X_AXIS][active_extruder] : 0);
92 92
     park_point.y += (active_extruder ? hotend_offset[Y_AXIS][active_extruder] : 0);
93 93
   #endif

+ 2
- 0
Marlin/src/inc/Conditionals_LCD.h Dosyayı Görüntüle

@@ -458,6 +458,8 @@
458 458
 
459 459
 #define DO_SWITCH_EXTRUDER (ENABLED(SWITCHING_EXTRUDER) && (DISABLED(SWITCHING_NOZZLE) || SWITCHING_EXTRUDER_SERVO_NR != SWITCHING_NOZZLE_SERVO_NR))
460 460
 
461
+#define HAS_HOTEND_OFFSET (HOTENDS > 1)
462
+
461 463
 /**
462 464
  * DISTINCT_E_FACTORS affects how some E factors are accessed
463 465
  */

+ 2
- 3
Marlin/src/inc/Conditionals_post.h Dosyayı Görüntüle

@@ -413,7 +413,6 @@
413 413
 /**
414 414
  * Default hotend offsets, if not defined
415 415
  */
416
-#define HAS_HOTEND_OFFSET_Z (HOTENDS > 1 && (ENABLED(DUAL_X_CARRIAGE) || ENABLED(SWITCHING_NOZZLE) || ENABLED(PARKING_EXTRUDER)))
417 416
 #if HOTENDS > 1
418 417
   #ifndef HOTEND_OFFSET_X
419 418
     #define HOTEND_OFFSET_X { 0 } // X offsets for each extruder
@@ -421,8 +420,8 @@
421 420
   #ifndef HOTEND_OFFSET_Y
422 421
     #define HOTEND_OFFSET_Y { 0 } // Y offsets for each extruder
423 422
   #endif
424
-  #if HAS_HOTEND_OFFSET_Z && !defined(HOTEND_OFFSET_Z)
425
-    #define HOTEND_OFFSET_Z { 0 }
423
+  #ifndef HOTEND_OFFSET_Z
424
+    #define HOTEND_OFFSET_Z { 0 } // Z offsets for each extruder
426 425
   #endif
427 426
 #endif
428 427
 

+ 7
- 17
Marlin/src/module/configuration_store.cpp Dosyayı Görüntüle

@@ -126,7 +126,7 @@ typedef struct SettingsDataStruct {
126 126
 
127 127
   float home_offset[XYZ];                               // M206 XYZ
128 128
 
129
-  #if HOTENDS > 1
129
+  #if HAS_HOTEND_OFFSET
130 130
     float hotend_offset[XYZ][HOTENDS - 1];              // M218 XYZ
131 131
   #endif
132 132
 
@@ -433,7 +433,7 @@ void MarlinSettings::postprocess() {
433 433
     #endif
434 434
     EEPROM_WRITE(home_offset);
435 435
 
436
-    #if HOTENDS > 1
436
+    #if HAS_HOTEND_OFFSET
437 437
       // Skip hotend 0 which must be 0
438 438
       for (uint8_t e = 1; e < HOTENDS; e++)
439 439
         LOOP_XYZ(i) EEPROM_WRITE(hotend_offset[i][e]);
@@ -1038,7 +1038,7 @@ void MarlinSettings::postprocess() {
1038 1038
       // Hotend Offsets, if any
1039 1039
       //
1040 1040
 
1041
-      #if HOTENDS > 1
1041
+      #if HAS_HOTEND_OFFSET
1042 1042
         // Skip hotend 0 which must be 0
1043 1043
         for (uint8_t e = 1; e < HOTENDS; e++)
1044 1044
           LOOP_XYZ(i) EEPROM_READ(hotend_offset[i][e]);
@@ -1749,16 +1749,8 @@ void MarlinSettings::reset(PORTARG_SOLO) {
1749 1749
     ZERO(home_offset);
1750 1750
   #endif
1751 1751
 
1752
-  #if HOTENDS > 1
1753
-    constexpr float tmp4[XYZ][HOTENDS] = {
1754
-      HOTEND_OFFSET_X,
1755
-      HOTEND_OFFSET_Y
1756
-      #ifdef HOTEND_OFFSET_Z
1757
-        , HOTEND_OFFSET_Z
1758
-      #else
1759
-        , { 0 }
1760
-      #endif
1761
-    };
1752
+  #if HAS_HOTEND_OFFSET
1753
+    constexpr float tmp4[XYZ][HOTENDS] = { HOTEND_OFFSET_X, HOTEND_OFFSET_Y, HOTEND_OFFSET_Z };
1762 1754
     static_assert(
1763 1755
       tmp4[X_AXIS][0] == 0 && tmp4[Y_AXIS][0] == 0 && tmp4[Z_AXIS][0] == 0,
1764 1756
       "Offsets for the first hotend must be 0.0."
@@ -2163,7 +2155,7 @@ void MarlinSettings::reset(PORTARG_SOLO) {
2163 2155
       SERIAL_ECHOLNPAIR_P(port, " Z", LINEAR_UNIT(home_offset[Z_AXIS]));
2164 2156
     #endif
2165 2157
 
2166
-    #if HOTENDS > 1
2158
+    #if HAS_HOTEND_OFFSET
2167 2159
       if (!forReplay) {
2168 2160
         CONFIG_ECHO_START;
2169 2161
         SERIAL_ECHOLNPGM_P(port, "Hotend offsets:");
@@ -2173,9 +2165,7 @@ void MarlinSettings::reset(PORTARG_SOLO) {
2173 2165
         SERIAL_ECHOPAIR_P(port, "  M218 T", (int)e);
2174 2166
         SERIAL_ECHOPAIR_P(port, " X", LINEAR_UNIT(hotend_offset[X_AXIS][e]));
2175 2167
         SERIAL_ECHOPAIR_P(port, " Y", LINEAR_UNIT(hotend_offset[Y_AXIS][e]));
2176
-        #if HAS_HOTEND_OFFSET_Z
2177
-          SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
2178
-        #endif
2168
+        SERIAL_ECHOPAIR_P(port, " Z", LINEAR_UNIT(hotend_offset[Z_AXIS][e]));
2179 2169
         SERIAL_EOL_P(port);
2180 2170
       }
2181 2171
     #endif

+ 1
- 1
Marlin/src/module/delta.cpp Dosyayı Görüntüle

@@ -102,7 +102,7 @@ void recalc_delta_settings() {
102 102
   }while(0)
103 103
 
104 104
 void inverse_kinematics(const float raw[XYZ]) {
105
-  #if HOTENDS > 1
105
+  #if HAS_HOTEND_OFFSET
106 106
     // Delta hotend offsets must be applied in Cartesian space with no "spoofing"
107 107
     const float pos[XYZ] = {
108 108
       raw[X_AXIS] - hotend_offset[X_AXIS][active_extruder],

+ 1
- 1
Marlin/src/module/motion.cpp Dosyayı Görüntüle

@@ -92,7 +92,7 @@ float destination[XYZE] = { 0 };
92 92
 uint8_t active_extruder; // = 0;
93 93
 
94 94
 // Extruder offsets
95
-#if HOTENDS > 1
95
+#if HAS_HOTEND_OFFSET
96 96
   float hotend_offset[XYZ][HOTENDS]; // Initialized by settings.load()
97 97
 #endif
98 98
 

+ 1
- 1
Marlin/src/module/motion.h Dosyayı Görüntüle

@@ -78,7 +78,7 @@ extern int16_t feedrate_percentage;
78 78
 
79 79
 extern uint8_t active_extruder;
80 80
 
81
-#if HOTENDS > 1
81
+#if HAS_HOTEND_OFFSET
82 82
   extern float hotend_offset[XYZ][HOTENDS];
83 83
 #endif
84 84
 

Loading…
İptal
Kaydet