From 3c05202097b13a5ebdcde88ddf389658cca87dd6 Mon Sep 17 00:00:00 2001 From: cnc Date: Fri, 5 Jun 2026 23:52:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E9=BD=90=E5=88=80=E8=A1=A5=E4=B8=8B?= =?UTF-8?q?=E5=81=8F=E7=BD=AE=E5=B9=B3=E9=9D=A2=E9=94=99=E8=AF=AF=E8=A6=86?= =?UTF-8?q?=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 结论:基于 LinuxCNC interp_convert.cc convert_axis_offsets()、convert_straight() 和 convert_set_plane(),native/source-link 现在覆盖刀补打开时 G92、G53、G18 被拒绝的失败分支。 --- test-linuxcnc-rs274-native.sh | 9 ++++++--- test-linuxcnc-source-link.sh | 3 +++ tests/gcode/linuxcnc_cutter_comp_axis_offset_error.ngc | 3 +++ tests/gcode/linuxcnc_cutter_comp_g53_error.ngc | 3 +++ tests/gcode/linuxcnc_cutter_comp_plane_change_error.ngc | 3 +++ 5 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 tests/gcode/linuxcnc_cutter_comp_axis_offset_error.ngc create mode 100644 tests/gcode/linuxcnc_cutter_comp_g53_error.ngc create mode 100644 tests/gcode/linuxcnc_cutter_comp_plane_change_error.ngc diff --git a/test-linuxcnc-rs274-native.sh b/test-linuxcnc-rs274-native.sh index dfa3d83..d5137f3 100755 --- a/test-linuxcnc-rs274-native.sh +++ b/test-linuxcnc-rs274-native.sh @@ -746,13 +746,16 @@ CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linux CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_machine_coordinates.ngc >"$output_dir/cnc_sim_linuxcnc_machine_coordinates.json" CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_cutter_comp.ngc >"$output_dir/cnc_sim_linuxcnc_cutter_comp.json" # Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc rejects -# G28/G30, G54-G59.3, G61/G64, M6, M66, G43, G71.0, and G98/G99 while -# cutter compensation is active; compensated corner and G40 exit checks also -# reject gouging/arc exits. +# G28/G30, G52/G92, G53, G54-G59.3, G61/G64, G17/G18/G19, M6, M66, G43, +# G71.0, and G98/G99 while cutter compensation is active; compensated corner +# and G40 exit checks also reject gouging/arc exits. cutter_comp_execution_error_cases=( + "linuxcnc_cutter_comp_axis_offset_error|Cannot change axis offsets with cutter radius comp" "linuxcnc_cutter_comp_control_mode_error|Cannot change control mode with cutter radius compensation on" "linuxcnc_cutter_comp_coordinate_system_error|Cannot change coordinate systems with cutter radius compensation on" + "linuxcnc_cutter_comp_g53_error|Cannot use g53 with cutter radius comp" "linuxcnc_cutter_comp_home_error|Cannot use g28 or g30 with cutter radius comp" + "linuxcnc_cutter_comp_plane_change_error|Cannot change planes with cutter radius compensation on" "linuxcnc_cutter_comp_tool_change_error|Cannot change tools with cutter radius compensation on" "linuxcnc_cutter_comp_wait_input_error|Cannot wait for digital input with cutter radius compensation on" "linuxcnc_cutter_comp_tool_offset_error|Cannot change tool offset with cutter radius compensation on" diff --git a/test-linuxcnc-source-link.sh b/test-linuxcnc-source-link.sh index 6e3f975..6df837f 100755 --- a/test-linuxcnc-source-link.sh +++ b/test-linuxcnc-source-link.sh @@ -1458,9 +1458,12 @@ grep -q "Cannot change tool offset with cutter radius compensation on" \ # reject control-mode changes, coordinate-system changes, and G28/G30 while # cutter radius compensation is active. cutter_comp_g_error_cases=( + "linuxcnc_cutter_comp_axis_offset_error|Cannot change axis offsets with cutter radius comp" "linuxcnc_cutter_comp_control_mode_error|Cannot change control mode with cutter radius compensation on" "linuxcnc_cutter_comp_coordinate_system_error|Cannot change coordinate systems with cutter radius compensation on" + "linuxcnc_cutter_comp_g53_error|Cannot use g53 with cutter radius comp" "linuxcnc_cutter_comp_home_error|Cannot use g28 or g30 with cutter radius comp" + "linuxcnc_cutter_comp_plane_change_error|Cannot change planes with cutter radius compensation on" ) for case in "${cutter_comp_g_error_cases[@]}"; do fixture=${case%%|*} diff --git a/tests/gcode/linuxcnc_cutter_comp_axis_offset_error.ngc b/tests/gcode/linuxcnc_cutter_comp_axis_offset_error.ngc new file mode 100644 index 0000000..499ebfc --- /dev/null +++ b/tests/gcode/linuxcnc_cutter_comp_axis_offset_error.ngc @@ -0,0 +1,3 @@ +G21 G90 G17 +G41 D1 +G92 X1 diff --git a/tests/gcode/linuxcnc_cutter_comp_g53_error.ngc b/tests/gcode/linuxcnc_cutter_comp_g53_error.ngc new file mode 100644 index 0000000..4fb99aa --- /dev/null +++ b/tests/gcode/linuxcnc_cutter_comp_g53_error.ngc @@ -0,0 +1,3 @@ +G21 G90 G17 +G41 D1 +G53 G0 X0 diff --git a/tests/gcode/linuxcnc_cutter_comp_plane_change_error.ngc b/tests/gcode/linuxcnc_cutter_comp_plane_change_error.ngc new file mode 100644 index 0000000..10d48ca --- /dev/null +++ b/tests/gcode/linuxcnc_cutter_comp_plane_change_error.ngc @@ -0,0 +1,3 @@ +G21 G90 G17 +G41 D1 +G18