CNC workspace planes for G5
According to LinuxCNC, G5 should throw an error if the current plane mode isn't XY.
This commit is contained in:
parent
5851c2d36f
commit
898f48e331
@ -3535,6 +3535,14 @@ inline void gcode_G4() {
|
|||||||
inline void gcode_G5() {
|
inline void gcode_G5() {
|
||||||
if (IsRunning()) {
|
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();
|
gcode_get_destination();
|
||||||
|
|
||||||
const float offset[] = {
|
const float offset[] = {
|
||||||
@ -12591,7 +12599,7 @@ void prepare_move_to_destination() {
|
|||||||
millis_t next_idle_ms = millis() + 200UL;
|
millis_t next_idle_ms = millis() + 200UL;
|
||||||
|
|
||||||
#if N_ARC_CORRECTION > 1
|
#if N_ARC_CORRECTION > 1
|
||||||
int8_t count = N_ARC_CORRECTION;
|
int8_t arc_recalc_count = N_ARC_CORRECTION;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (uint16_t i = 1; i < segments; i++) { // Iterate (segments-1) times
|
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 N_ARC_CORRECTION > 1
|
||||||
if (--count) {
|
if (--arc_recalc_count) {
|
||||||
// Apply vector rotation matrix to previous r_P / 1
|
// Apply vector rotation matrix to previous r_P / 1
|
||||||
const float r_new_Y = r_P * sin_T + r_Q * cos_T;
|
const float r_new_Y = r_P * sin_T + r_Q * cos_T;
|
||||||
r_P = r_P * cos_T - r_Q * sin_T;
|
r_P = r_P * cos_T - r_Q * sin_T;
|
||||||
@ -12613,7 +12621,7 @@ void prepare_move_to_destination() {
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
#if N_ARC_CORRECTION > 1
|
#if N_ARC_CORRECTION > 1
|
||||||
count = N_ARC_CORRECTION;
|
arc_recalc_count = N_ARC_CORRECTION;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Arc correction to radius vector. Computed only every N_ARC_CORRECTION increments.
|
// 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
|
// motion control system might still be processing the action and the real tool position
|
||||||
// in any intermediate location.
|
// in any intermediate location.
|
||||||
set_current_to_destination();
|
set_current_to_destination();
|
||||||
}
|
} // plan_arc
|
||||||
#endif
|
|
||||||
|
#endif // ARC_SUPPORT
|
||||||
|
|
||||||
#if ENABLED(BEZIER_CURVE_SUPPORT)
|
#if ENABLED(BEZIER_CURVE_SUPPORT)
|
||||||
|
|
||||||
|
@ -160,6 +160,7 @@
|
|||||||
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
#define MSG_ERR_MATERIAL_INDEX "M145 S<index> out of range (0-1)"
|
||||||
#define MSG_ERR_M355_NONE "No case light"
|
#define MSG_ERR_M355_NONE "No case light"
|
||||||
#define MSG_ERR_M421_PARAMETERS "M421 incorrect parameter usage"
|
#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_MESH_XY "Mesh point cannot be resolved"
|
||||||
#define MSG_ERR_ARC_ARGS "G2/G3 bad parameters"
|
#define MSG_ERR_ARC_ARGS "G2/G3 bad parameters"
|
||||||
#define MSG_ERR_PROTECTED_PIN "Protected Pin"
|
#define MSG_ERR_PROTECTED_PIN "Protected Pin"
|
||||||
|
Loading…
Reference in New Issue
Block a user