多主轴 G95/G96/G97 source-linked 覆盖

This commit is contained in:
cnc
2026-06-05 21:34:43 +08:00
parent 77c6674905
commit acbf5b4686
3 changed files with 37 additions and 0 deletions

View File

@@ -173,6 +173,7 @@ make --output-sync=target -j"$build_jobs" -f "$source_link_makefile"
var_file="$build_dir/rs274ngc-source.var" var_file="$build_dir/rs274ngc-source.var"
base_var_file="$build_dir/rs274ngc-source-base.var" base_var_file="$build_dir/rs274ngc-source-base.var"
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini" ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
multi_spindle_modes_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_modes.ini"
multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini" multi_spindle_override_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_override.ini"
multi_spindle_threading_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_threading.ini" multi_spindle_threading_file="$(pwd)/tests/gcode/linuxcnc_multi_spindle_threading.ini"
output_dir="$build_dir/outputs" output_dir="$build_dir/outputs"
@@ -212,6 +213,12 @@ CNC_SIM_RS274_VAR="$var_file" \
CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_spindle_modes.ngc \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_spindle_modes.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_spindle_modes.json" >"$output_dir/cnc_sim_linuxcnc_source_spindle_modes.json"
# Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads
# [TRAJ] SPINDLES from INI_FILE_NAME, and interp_execute.cc assigns
# active_spindle from $ before G95/G96/G97 conversion.
INI_FILE_NAME="$multi_spindle_modes_file" CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_spindle_modes.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_multi_spindle_modes.json"
CNC_SIM_RS274_VAR="$var_file" \ CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_spindle_orient.ngc \ "$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_spindle_orient.ngc \
>"$output_dir/cnc_sim_linuxcnc_source_spindle_orient.json" >"$output_dir/cnc_sim_linuxcnc_source_spindle_orient.json"
@@ -1796,6 +1803,27 @@ expected_spindle_mode_states = [
if spindle_mode_states != expected_spindle_mode_states: if spindle_mode_states != expected_spindle_mode_states:
raise SystemExit(f"unexpected source-linked G96/G97 spindle mode states: {spindle_mode_states!r}") raise SystemExit(f"unexpected source-linked G96/G97 spindle mode states: {spindle_mode_states!r}")
multi_spindle_modes = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_multi_spindle_modes.json").read_text())
multi_spindle_mode_states = [
(event["line"], event["reserved"], event["feed"], event["tool"])
for event in multi_spindle_modes
if event["type"] == "comment" and event["line"] in {4, 5} and event["reserved"] in {960, 970}
]
expected_multi_spindle_mode_states = [
(4, 970, 0, 1),
(5, 960, 2500, 1),
]
if multi_spindle_mode_states != expected_multi_spindle_mode_states:
raise SystemExit(f"unexpected source-linked selected-spindle G96/G97 states: {multi_spindle_mode_states!r}")
if not any(
event["type"] == "set-feed" and
event["line"] == 6 and
event["reserved"] == 1 and
event["tool"] == 1
for event in multi_spindle_modes
):
raise SystemExit("missing source-linked selected-spindle G95 feed mode event")
spindle_orient = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_spindle_orient.json").read_text()) spindle_orient = json.loads((OUTPUT_DIR / "cnc_sim_linuxcnc_source_spindle_orient.json").read_text())
if not any( if not any(
event["type"] == "comment" and event["type"] == "comment" and

View File

@@ -0,0 +1,2 @@
[TRAJ]
SPINDLES = 2

View File

@@ -0,0 +1,7 @@
G21 G90 G17
(Source basis: LinuxCNC src/emc/rs274ngc/rs274ngc_pre.cc init reads [TRAJ] SPINDLES from INI_FILE_NAME.)
(Source basis: LinuxCNC src/emc/rs274ngc/interp_execute.cc assigns active_spindle for G95/G96/G97 with $.)
G97 S1000 $1
G96 S120 D2500 $1
G95 $1
M30