From c93538e9f3d409c9b96921d0d9ed4681fa0226b6 Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Sat, 11 Aug 2018 22:48:44 -0500 Subject: [PATCH] UBL/planner patch tweaks --- Marlin/src/module/planner.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index e911b6f28b..f673b656a3 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -154,7 +154,7 @@ float Planner::e_factor[EXTRUDERS] = ARRAY_BY_EXTRUDERS1(1.0f); // The flow perc #if DISABLED(NO_VOLUMETRICS) float Planner::filament_size[EXTRUDERS], // diameter of filament (in millimeters), typically around 1.75 or 2.85, 0 disables the volumetric calculations for the extruder - Planner::volumetric_area_nominal = CIRCLE_AREA((float(DEFAULT_NOMINAL_FILAMENT_DIA)) * 0.5f), // Nominal cross-sectional area + Planner::volumetric_area_nominal = CIRCLE_AREA(float(DEFAULT_NOMINAL_FILAMENT_DIA) * 0.5f), // Nominal cross-sectional area Planner::volumetric_multiplier[EXTRUDERS]; // Reciprocal of cross-sectional area of filament (in mm^2). Pre-calculated to reduce computation in the planner #endif @@ -2546,12 +2546,12 @@ void Planner::_set_position_mm(const float &a, const float &b, const float &c, c #endif position[A_AXIS] = LROUND(a * axis_steps_per_mm[A_AXIS]); position[B_AXIS] = LROUND(b * axis_steps_per_mm[B_AXIS]); - #if !IS_KINEMATIC && ENABLED(AUTO_BED_LEVELING_UBL) - if (leveling_active) - position[C_AXIS] = LROUND((c + ubl.get_z_correction(a, b)) * axis_steps_per_mm[Z_AXIS]); - else - #endif - position[C_AXIS] = LROUND(c * axis_steps_per_mm[C_AXIS]); + position[C_AXIS] = LROUND(axis_steps_per_mm[C_AXIS] * (c + + #if !IS_KINEMATIC && ENABLED(AUTO_BED_LEVELING_UBL) + leveling_active ? ubl.get_z_correction(a, b) : + #endif + 0 + )); position[E_AXIS] = LROUND(e * axis_steps_per_mm[_EINDEX]); #if HAS_POSITION_FLOAT position_float[A_AXIS] = a; @@ -2593,19 +2593,17 @@ void Planner::set_position_mm(const AxisEnum axis, const float &v) { #else const uint8_t axis_index = axis; #endif - #if ENABLED(AUTO_BED_LEVELING_UBL) - if (axis == Z_AXIS && leveling_active) - position[axis] = LROUND((v + ubl.get_z_correction(current_position[X_AXIS], current_position[Y_AXIS])) * axis_steps_per_mm[axis_index]); - else - #endif - position[axis] = LROUND(v * axis_steps_per_mm[axis_index]); + position[axis] = LROUND(axis_steps_per_mm[axis_index] * (v + + #if ENABLED(AUTO_BED_LEVELING_UBL) + axis == Z_AXIS && leveling_active ? ubl.get_z_correction(current_position[X_AXIS], current_position[Y_AXIS]) : + #endif + 0 + )); #if HAS_POSITION_FLOAT position_float[axis] = v; #endif - if (has_blocks_queued()) { - //previous_speed[axis] = 0.0; + if (has_blocks_queued()) buffer_sync_block(); - } else stepper.set_position(axis, position[axis]); }