Fixes for G29, esp. 3POINT

This commit is contained in:
Scott Lahteine 2017-12-25 08:29:31 -06:00
parent 026e301307
commit 9e8008c49c

View File

@ -292,16 +292,12 @@ void GcodeSuite::G29() {
#endif #endif
#if HAS_LEVELING
// Jettison bed leveling data // Jettison bed leveling data
if (parser.seen('J')) { if (parser.seen('J')) {
reset_bed_level(); reset_bed_level();
return; return;
} }
#endif
verbose_level = parser.intval('V'); verbose_level = parser.intval('V');
if (!WITHIN(verbose_level, 0, 4)) { if (!WITHIN(verbose_level, 0, 4)) {
SERIAL_PROTOCOLLNPGM("?(V)erbose level is implausible (0-4)."); SERIAL_PROTOCOLLNPGM("?(V)erbose level is implausible (0-4).");
@ -383,25 +379,17 @@ void GcodeSuite::G29() {
#endif // ABL_GRID #endif // ABL_GRID
if (verbose_level > 0) { if (verbose_level > 0) {
SERIAL_PROTOCOLLNPGM("G29 Auto Bed Leveling"); SERIAL_PROTOCOLPGM("G29 Auto Bed Leveling");
if (dryrun) SERIAL_PROTOCOLLNPGM("Running in DRY-RUN mode"); if (dryrun) SERIAL_PROTOCOLPGM(" (DRYRUN)");
SERIAL_EOL();
} }
stepper.synchronize(); stepper.synchronize();
// Disable auto bed leveling during G29 // Disable auto bed leveling during G29.
// Be formal so G29 can be done successively without G28. // Be formal so G29 can be done successively without G28.
set_bed_leveling_enabled(false); set_bed_leveling_enabled(false);
if (!dryrun) {
// Re-orient the current position without leveling
// based on where the steppers are positioned.
set_current_from_steppers_for_axis(ALL_AXES);
// Sync the planner to where the steppers stopped
SYNC_PLAN_POSITION_KINEMATIC();
}
#if HAS_BED_PROBE #if HAS_BED_PROBE
// Deploy the probe. Probe will raise if needed. // Deploy the probe. Probe will raise if needed.
if (DEPLOY_PROBE()) { if (DEPLOY_PROBE()) {
@ -583,9 +571,10 @@ void GcodeSuite::G29() {
#elif ENABLED(AUTO_BED_LEVELING_3POINT) #elif ENABLED(AUTO_BED_LEVELING_3POINT)
// Probe at 3 arbitrary points // Probe at 3 arbitrary points
if (abl_probe_index < 3) { if (abl_probe_index < abl2) {
xProbe = points[abl_probe_index].x; xProbe = points[abl_probe_index].x;
yProbe = points[abl_probe_index].y; yProbe = points[abl_probe_index].y;
_manual_goto_xy(xProbe, yProbe);
#if HAS_SOFTWARE_ENDSTOPS #if HAS_SOFTWARE_ENDSTOPS
// Disable software endstops to allow manual adjustment // Disable software endstops to allow manual adjustment
// If G29 is not completed, they will not be re-enabled // If G29 is not completed, they will not be re-enabled