|
@@ -155,21 +155,18 @@ void GcodeSuite::M420() {
|
155
|
155
|
|
156
|
156
|
// Get the sum and average of all mesh values
|
157
|
157
|
float mesh_sum = 0;
|
158
|
|
- for (uint8_t x = GRID_MAX_POINTS_X; x--;)
|
159
|
|
- for (uint8_t y = GRID_MAX_POINTS_Y; y--;)
|
160
|
|
- mesh_sum += Z_VALUES(x, y);
|
|
158
|
+ GRID_LOOP(x, y) mesh_sum += Z_VALUES(x, y);
|
161
|
159
|
const float zmean = mesh_sum / float(GRID_MAX_POINTS);
|
162
|
160
|
|
163
|
161
|
#else
|
164
|
162
|
|
165
|
163
|
// Find the low and high mesh values
|
166
|
164
|
float lo_val = 100, hi_val = -100;
|
167
|
|
- for (uint8_t x = GRID_MAX_POINTS_X; x--;)
|
168
|
|
- for (uint8_t y = GRID_MAX_POINTS_Y; y--;) {
|
169
|
|
- const float z = Z_VALUES(x, y);
|
170
|
|
- NOMORE(lo_val, z);
|
171
|
|
- NOLESS(hi_val, z);
|
172
|
|
- }
|
|
165
|
+ GRID_LOOP(x, y) {
|
|
166
|
+ const float z = Z_VALUES(x, y);
|
|
167
|
+ NOMORE(lo_val, z);
|
|
168
|
+ NOLESS(hi_val, z);
|
|
169
|
+ }
|
173
|
170
|
// Take the mean of the lowest and highest
|
174
|
171
|
const float zmean = (lo_val + hi_val) / 2.0 + cval;
|
175
|
172
|
|
|
@@ -179,13 +176,12 @@ void GcodeSuite::M420() {
|
179
|
176
|
if (!NEAR_ZERO(zmean)) {
|
180
|
177
|
set_bed_leveling_enabled(false);
|
181
|
178
|
// Subtract the mean from all values
|
182
|
|
- for (uint8_t x = GRID_MAX_POINTS_X; x--;)
|
183
|
|
- for (uint8_t y = GRID_MAX_POINTS_Y; y--;) {
|
184
|
|
- Z_VALUES(x, y) -= zmean;
|
185
|
|
- #if ENABLED(EXTENSIBLE_UI)
|
186
|
|
- ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y));
|
187
|
|
- #endif
|
188
|
|
- }
|
|
179
|
+ GRID_LOOP(x, y) {
|
|
180
|
+ Z_VALUES(x, y) -= zmean;
|
|
181
|
+ #if ENABLED(EXTENSIBLE_UI)
|
|
182
|
+ ExtUI::onMeshUpdate(x, y, Z_VALUES(x, y));
|
|
183
|
+ #endif
|
|
184
|
+ }
|
189
|
185
|
#if ENABLED(ABL_BILINEAR_SUBDIVISION)
|
190
|
186
|
bed_level_virt_interpolate();
|
191
|
187
|
#endif
|