Skip to content

Commit 0673e3f

Browse files
authored
Merge pull request #3816 from Sigma1912/Allow_G43_for_tools_with_zero_offsets
Interpreter: Allow active G43 for tools with all zero offsets
2 parents 8492310 + 80bd55c commit 0673e3f

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

src/emc/rs274ngc/interp_convert.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6199,7 +6199,8 @@ int Interp::convert_tool_length_offset(int g_code, //!< g_code being execu
61996199
int idx;
62006200
EmcPose tool_offset;
62016201
ZERO_EMC_POSE(tool_offset);
6202-
6202+
settings->g43_with_zero_offset = 0;
6203+
62036204
CHKS((settings->cutter_comp_side != CUTTER_COMP::OFF),
62046205
(_("Cannot change tool offset with cutter radius compensation on")));
62056206
if (g_code == G_49) {
@@ -6237,6 +6238,10 @@ int Interp::convert_tool_length_offset(int g_code, //!< g_code being execu
62376238
tool_offset.u = USER_TO_PROGRAM_LEN(settings->tool_table[idx].offset.u);
62386239
tool_offset.v = USER_TO_PROGRAM_LEN(settings->tool_table[idx].offset.v);
62396240
tool_offset.w = USER_TO_PROGRAM_LEN(settings->tool_table[idx].offset.w);
6241+
settings->g43_with_zero_offset =
6242+
(settings->tool_offset.tran.x || settings->tool_offset.tran.y || settings->tool_offset.tran.z ||
6243+
settings->tool_offset.a || settings->tool_offset.b || settings->tool_offset.c ||
6244+
settings->tool_offset.u || settings->tool_offset.v || settings->tool_offset.w);
62406245
} else if (g_code == G_43_1) {
62416246
tool_offset = settings->tool_offset;
62426247
idx = -1;

src/emc/rs274ngc/interp_internal.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,7 @@ struct setup
759759
CANON_TOOL_TABLE tool_table[CANON_POCKETS_MAX]; // index is pocket number
760760
double traverse_rate; // rate for traverse motions
761761
double orient_offset; // added to M19 R word, from [RS274NGC]ORIENT_OFFSET
762+
bool g43_with_zero_offset; // added to allow active G43 with tool offset values all zero
762763

763764
/* stuff for subroutines and control structures */
764765
int defining_sub; // true if in a subroutine defn

src/emc/rs274ngc/interp_write.cc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,10 @@ int Interp::write_g_codes(block_pointer block, //!< pointer to a block of RS27
108108
7) ? (530 + (10 * settings->origin_index)) : (584 +
109109
settings->origin_index);
110110
settings->active_g_codes[9] =
111-
(settings->tool_offset.tran.x || settings->tool_offset.tran.y || settings->tool_offset.tran.z ||
112-
settings->tool_offset.a || settings->tool_offset.b || settings->tool_offset.c ||
113-
settings->tool_offset.u || settings->tool_offset.v || settings->tool_offset.w) ? G_43 : G_49;
111+
(settings->g43_with_zero_offset ||
112+
settings->tool_offset.tran.x || settings->tool_offset.tran.y || settings->tool_offset.tran.z ||
113+
settings->tool_offset.a || settings->tool_offset.b || settings->tool_offset.c ||
114+
settings->tool_offset.u || settings->tool_offset.v || settings->tool_offset.w) ? G_43 : G_49;
114115
settings->active_g_codes[10] = (settings->retract_mode == RETRACT_MODE::OLD_Z) ? G_98 : G_99;
115116
// Three modes: G_64, G_61, G_61_1 or CANON_CONTINUOUS/EXACT_PATH/EXACT_STOP
116117
settings->active_g_codes[11] =
@@ -279,7 +280,8 @@ int Interp::write_state_tag(block_pointer block,
279280
state.flags[GM_FLAG_G92_IS_APPLIED] = settings->parameters[5210];
280281

281282
state.flags[GM_FLAG_TOOL_OFFSETS_ON] =
282-
(settings->tool_offset.tran.x ||
283+
(settings->g43_with_zero_offset ||
284+
settings->tool_offset.tran.x ||
283285
settings->tool_offset.tran.y ||
284286
settings->tool_offset.tran.z ||
285287
settings->tool_offset.a ||

0 commit comments

Comments
 (0)