diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 1134324034..503ef956b3 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3535,6 +3535,14 @@ inline void gcode_G4() { inline void gcode_G5() { if (IsRunning()) { + #if ENABLED(CNC_WORKSPACE_PLANES) + if (workspace_plane != PLANE_XY) { + SERIAL_ERROR_START(); + SERIAL_ERRORLNPGM(MSG_ERR_BAD_PLANE_MODE); + return; + } + #endif + gcode_get_destination(); const float offset[] = { @@ -12591,7 +12599,7 @@ void prepare_move_to_destination() { millis_t next_idle_ms = millis() + 200UL; #if N_ARC_CORRECTION > 1 - int8_t count = N_ARC_CORRECTION; + int8_t arc_recalc_count = N_ARC_CORRECTION; #endif for (uint16_t i = 1; i < segments; i++) { // Iterate (segments-1) times @@ -12603,7 +12611,7 @@ void prepare_move_to_destination() { } #if N_ARC_CORRECTION > 1 - if (--count) { + if (--arc_recalc_count) { // Apply vector rotation matrix to previous r_P / 1 const float r_new_Y = r_P * sin_T + r_Q * cos_T; r_P = r_P * cos_T - r_Q * sin_T; @@ -12613,7 +12621,7 @@ void prepare_move_to_destination() { #endif { #if N_ARC_CORRECTION > 1 - count = N_ARC_CORRECTION; + arc_recalc_count = N_ARC_CORRECTION; #endif // Arc correction to radius vector. Computed only every N_ARC_CORRECTION increments. @@ -12643,8 +12651,9 @@ void prepare_move_to_destination() { // motion control system might still be processing the action and the real tool position // in any intermediate location. set_current_to_destination(); - } -#endif + } // plan_arc + +#endif // ARC_SUPPORT #if ENABLED(BEZIER_CURVE_SUPPORT) diff --git a/Marlin/language.h b/Marlin/language.h index 5dfc176d98..a357acc25f 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -160,6 +160,7 @@ #define MSG_ERR_MATERIAL_INDEX "M145 S out of range (0-1)" #define MSG_ERR_M355_NONE "No case light" #define MSG_ERR_M421_PARAMETERS "M421 incorrect parameter usage" +#define MSG_ERR_BAD_PLANE_MODE "G5 requires XY plane mode" #define MSG_ERR_MESH_XY "Mesh point cannot be resolved" #define MSG_ERR_ARC_ARGS "G2/G3 bad parameters" #define MSG_ERR_PROTECTED_PIN "Protected Pin"