提示词:补齐 G64 naivecam tolerance 源链接覆盖

This commit is contained in:
cnc
2026-06-05 15:59:51 +08:00
parent 4887b2f64e
commit a7cd889b3a
5 changed files with 60 additions and 1 deletions

View File

@@ -569,6 +569,10 @@ 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_coolant.ngc >"$output_dir/cnc_sim_linuxcnc_coolant.json"
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_feed_modes.ngc >"$output_dir/cnc_sim_linuxcnc_feed_modes.json"
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_motion_modes.ngc >"$output_dir/cnc_sim_linuxcnc_motion_modes.json"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc
# convert_control_mode() sends G64 P through SET_MOTION_CONTROL_MODE()
# and G64 Q through SET_NAIVECAM_TOLERANCE(), defaulting Q to P when Q is omitted.
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_control_mode_tolerances.ngc >"$output_dir/cnc_sim_linuxcnc_control_mode_tolerances.json"
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_length.ngc >"$output_dir/cnc_sim_linuxcnc_tool_length.json"
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_dynamic_tool_length.ngc >"$output_dir/cnc_sim_linuxcnc_dynamic_tool_length.json"
# Source basis: LinuxCNC src/emc/rs274ngc/interp_convert.cc
@@ -1524,6 +1528,23 @@ for expected in [(2, 611, 0), (3, 612, 0), (4, 640, 0.05)]:
if expected not in motion_mode_states:
raise SystemExit(f"missing motion mode state {expected!r}")
control_mode_tolerances = load("cnc_sim_linuxcnc_control_mode_tolerances.json")
control_mode_tolerance_states = [
(event["line"], event["reserved"], event["feed"])
for event in control_mode_tolerances
if event["type"] == "comment" and event["reserved"] in {611, 612, 640, 641}
]
expected_control_mode_tolerance_states = [
(2, 640, 0.05),
(2, 641, 0.02),
(3, 640, 0.03),
(3, 641, 0.03),
(4, 611, 0),
(5, 612, 0),
]
if control_mode_tolerance_states != expected_control_mode_tolerance_states:
raise SystemExit(f"unexpected G64 P/Q control mode tolerance states: {control_mode_tolerance_states!r}")
tool_length = load("cnc_sim_linuxcnc_tool_length.json")
if not any(
event["type"] == "comment" and