From cd71eff8a5aa7e038084ffacd82aa19073fe18a8 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 11:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A7=E8=A1=8C=20AGENTS=20align-linuxcnc=20?= =?UTF-8?q?=E5=8A=A0=E9=80=9F=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:新增 LinuxCNC source-backed canned cycle cutter compensation 错误覆盖,源码依据为 src/emc/rs274ngc/interp_cycles.cc convert_cycle()。 测试:./test-native.sh 通过;./test-linuxcnc-source-link.sh 通过。 --- test-linuxcnc-rs274-native.sh | 1 + test-linuxcnc-source-link.sh | 12 ++++++++++-- .../linuxcnc_canned_cycle_cutter_comp_error.ngc | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 tests/gcode/linuxcnc_canned_cycle_cutter_comp_error.ngc diff --git a/test-linuxcnc-rs274-native.sh b/test-linuxcnc-rs274-native.sh index f8c8e94..a528a19 100755 --- a/test-linuxcnc-rs274-native.sh +++ b/test-linuxcnc-rs274-native.sh @@ -595,6 +595,7 @@ CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linux # and spindle state before expanding cycles to Canon motion. canned_cycle_error_cases=( "linuxcnc_canned_cycle_inverse_time_error|Cannot use inverse time feed with canned cycles" + "linuxcnc_canned_cycle_cutter_comp_error|Cannot use canned cycles with cutter compensation on" "linuxcnc_canned_cycle_l0_error|Cannot do zero repeats of cycle" "linuxcnc_canned_cycle_missing_r_error|R clearance plane unspecified in cycle" "linuxcnc_canned_cycle_missing_z_error|Z value unspecified in xy plane canned cycle" diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index fb969af..b4f6b65 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -367,8 +367,8 @@ CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_canned_cycle.json" # Source basis: LinuxCNC src/emc/rs274ngc/interp_cycles.cc -# convert_cycle() rejects inverse-time feed mode before expanding canned -# cycles through convert_cycle_xy()/yz()/zx(). +# convert_cycle() rejects inverse-time feed mode and active cutter +# compensation before expanding canned cycles through convert_cycle_xy()/yz()/zx(). if CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_inverse_time_error.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_inverse_time_error.json" \ @@ -377,6 +377,14 @@ if CNC_SIM_RS274_VAR="$var_file" \ exit 1 fi grep -q "Cannot use inverse time feed with canned cycles" "$output_dir/cnc_sim_linuxcnc_source_canned_cycle_inverse_time_error.err" +if CNC_SIM_RS274_VAR="$var_file" \ + "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_cutter_comp_error.ngc \ + >"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_cutter_comp_error.json" \ + 2>"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_cutter_comp_error.err"; then + echo "expected linuxcnc_canned_cycle_cutter_comp_error.ngc to fail" >&2 + exit 1 +fi +grep -q "Cannot use canned cycles with cutter compensation on" "$output_dir/cnc_sim_linuxcnc_source_canned_cycle_cutter_comp_error.err" if CNC_SIM_RS274_VAR="$var_file" \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_l0_error.ngc \ >"$output_dir/cnc_sim_linuxcnc_source_canned_cycle_l0_error.json" \ diff --git a/tests/gcode/linuxcnc_canned_cycle_cutter_comp_error.ngc b/tests/gcode/linuxcnc_canned_cycle_cutter_comp_error.ngc new file mode 100644 index 0000000..ccaac0a --- /dev/null +++ b/tests/gcode/linuxcnc_canned_cycle_cutter_comp_error.ngc @@ -0,0 +1,4 @@ +G21 G90 G17 +F100 +G41.1 D1 +G81 X1 Z-1 R1