From 2ba8cd7fb8b258a5eab6b70311ec81a4e9fca21b Mon Sep 17 00:00:00 2001 From: cnc Date: Wed, 3 Jun 2026 00:26:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E8=80=83=E6=89=80=E6=9C=89=E5=88=86?= =?UTF-8?q?=E7=BB=84=EF=BC=9A=E8=A1=A5=E7=BC=96=E5=8F=B7=E5=8F=82=E6=95=B0?= =?UTF-8?q?=20native=20=E8=A6=86=E7=9B=96=EF=BC=8C=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/linuxcnc-porting.md | 1 + test-linuxcnc-rs274-native.sh | 290 ++++++++++++++++++++++++++++++++++ 2 files changed, 291 insertions(+) diff --git a/docs/linuxcnc-porting.md b/docs/linuxcnc-porting.md index a5cabf5..0d51024 100644 --- a/docs/linuxcnc-porting.md +++ b/docs/linuxcnc-porting.md @@ -208,6 +208,7 @@ This matrix tracks LinuxCNC feature coverage for the web/WASM simulator. A featu | Override controls `M48`-`M53` | covered with Canon feed override, spindle speed override, adaptive feed, and feed hold callbacks preserved as temporary state events | `tests/gcode/linuxcnc_override_controls.ngc` | | Modal state save/restore `M70`-`M73` | covered for main-program save/invalidate/restore plus O-word subroutine autorestore in smoke parser, with native/source regressions checking restored distance mode, units, and XY plane motion | `tests/gcode/linuxcnc_modal_state.ngc`, `tests/gcode/linuxcnc_modal_autorestore.ngc` | | LinuxCNC read-only named parameters | common modal/unit/feed/spindle reads are covered through LinuxCNC native/source backends, with additional ccomp/spindle-mode readonly reads source-linked | `tests/gcode/linuxcnc_readonly_named_parameters.ngc`, `tests/gcode/linuxcnc_readonly_named_parameters_extra.ngc`, `tests/gcode/linuxcnc_lathe_diameter_mode.ngc` | +| LinuxCNC numbered parameters | native/source coverage checks readonly numbered-parameter rejection plus probe, tool, G28/G30, G52/G92, G5X/G59.3, debug/M66 result, tool-offset, and current-position numbered parameters from LinuxCNC source state | `tests/gcode/linuxcnc_numbered_parameters.ngc`, `tests/gcode/linuxcnc_rotary_probe_numbered_parameters.ngc`, `tests/gcode/linuxcnc_multi_rotary_probe_numbered_parameters.ngc`, `tests/gcode/linuxcnc_tool_info_zero_parameter.ngc`, `tests/gcode/linuxcnc_spindle_tool_info_parameter.ngc`, `tests/gcode/linuxcnc_readonly_numbered_parameter_assign_error.ngc`, `tests/gcode/linuxcnc_g28_g30_numbered_parameters.ngc`, `tests/gcode/linuxcnc_rotary_g28_g30_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g92_numbered_parameters.ngc`, `tests/gcode/linuxcnc_rotary_g92_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g52_g92_numbered_interaction.ngc`, `tests/gcode/linuxcnc_g5x_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g59_3_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g59_3_rotary_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g5x_rotary_numbered_parameters.ngc`, `tests/gcode/linuxcnc_g54_rotary_numbered_parameters.ngc`, `tests/gcode/linuxcnc_debug_level_parameter.ngc`, `tests/gcode/linuxcnc_m66_result_parameter.ngc`, `tests/gcode/linuxcnc_tool_offset_numbered_parameters.ngc`, `tests/gcode/linuxcnc_rotary_tool_offset_numbered_parameters.ngc`, `tests/gcode/linuxcnc_current_position_numbered_parameters.ngc` | | Feed and motion control modes `G93/G94/G95`, `G61/G61.1/G64` | covered through LinuxCNC native/source backends | `tests/gcode/linuxcnc_feed_modes.ngc`, `tests/gcode/linuxcnc_motion_modes.ngc` | | Canned cycle `G73`-`G89`/`G80` | covered for drilling expand-to-canon path, `G18/G19` plane-specific depth-axis mapping for representative drilling/boring cycles, and native/source LinuxCNC `interp_cycles.cc` validation of repeat counts, required R/depth words, invalid rotary axes, Q/P words, and spindle state | `tests/gcode/linuxcnc_canned_cycle.ngc`, `tests/gcode/linuxcnc_canned_cycles_extended.ngc`, `tests/gcode/linuxcnc_canned_cycle_planes.ngc`, `tests/gcode/linuxcnc_canned_cycle_l0_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_missing_r_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_missing_z_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g18_missing_y_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g19_missing_x_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_r_less_z_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g18_r_less_y_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g19_r_less_x_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_u_in_xy_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_a_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_b_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_c_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g73_missing_q_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g83_missing_q_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g73_q0_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g83_q0_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g82_missing_p_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g86_missing_p_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g88_missing_p_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g89_missing_p_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g74_clockwise_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g84_counterclockwise_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g74_stopped_spindle_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g84_stopped_spindle_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g86_stopped_spindle_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g88_stopped_spindle_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g87_stopped_spindle_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g87_missing_k_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g87_missing_i_error.ngc`, `tests/gcode/linuxcnc_canned_cycle_g87_missing_j_error.ngc` | | Coordinate offset Canon events `G10 L2`, `G10 L20`, `G10 P0 active-system targeting`, `G54`-`G59.3` selection, `G52`, `G92/G92.1/G92.2/G92.3` | covered through LinuxCNC native/source backends, including all nine G5X indices | `tests/gcode/linuxcnc_coordinate_offsets.ngc`, `tests/gcode/linuxcnc_coordinate_l20.ngc`, `tests/gcode/linuxcnc_coordinate_p0.ngc`, `tests/gcode/linuxcnc_coordinate_select_all.ngc`, `tests/gcode/linuxcnc_g92_restore.ngc`, `tests/gcode/linuxcnc_g52_offset.ngc` | diff --git a/test-linuxcnc-rs274-native.sh b/test-linuxcnc-rs274-native.sh index 24d917b..ada42b3 100755 --- a/test-linuxcnc-rs274-native.sh +++ b/test-linuxcnc-rs274-native.sh @@ -656,6 +656,41 @@ INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS27 # Source basis: LinuxCNC src/emc/rs274ngc/interp_namedparams.cc lookup_named_param() # and init_readonly_param() expose modal/unit/feed/spindle readonly parameters. CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_readonly_named_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json" +# Source basis: LinuxCNC src/emc/rs274ngc/interp_array.cc defines +# required/readonly numbered parameters; interp_internal.cc set_probe_data() +# and interp_convert.cc update probe, tool, G28/G30, G92, G5X, and current +# position numbered parameters. +cp "$base_var_file" "$var_file" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_probe_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_multi_rotary_probe_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_info_zero_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_tool_info_zero_parameter.json" +CNC_SIM_TOOL_IN_SPINDLE=1 CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_tool_info_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_tool_info_parameter.json" +if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \ + "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_readonly_numbered_parameter_assign_error.ngc \ + >"$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.json" 2>"$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.err"; then + echo "expected linuxcnc_readonly_numbered_parameter_assign_error.ngc to fail" >&2 + exit 1 +fi +grep -Fq "Parameter is readonly" \ + "$output_dir/cnc_sim_linuxcnc_readonly_numbered_parameter_assign_error.err" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g28_g30_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g28_g30_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_g28_g30_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g92_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_g92_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g52_g92_numbered_interaction.ngc >"$output_dir/cnc_sim_linuxcnc_g52_g92_numbered_interaction.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g5x_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g5x_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g59_3_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g59_3_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g59_3_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g5x_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g54_rotary_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_debug_level_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_debug_level_parameter.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_m66_result_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_m66_result_parameter.json" +cp "$base_var_file" "$var_file" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_offset_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_tool_offset_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rotary_tool_offset_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json" +CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_current_position_numbered_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json" +cp "$base_var_file" "$var_file" # Source basis: LinuxCNC src/emc/rs274ngc/interp_read.cc # read_parameter_setting(), read_parameter(), read_real_value(), # read_atan(), read_unary(), and read_operation() reject malformed @@ -1880,6 +1915,241 @@ expected_readonly_moves = [ if readonly_moves != expected_readonly_moves: raise SystemExit(f"unexpected LinuxCNC readonly named parameter motions: {readonly_moves!r}") +numbered_parameters = load("cnc_sim_linuxcnc_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 6 and + event["end"]["x"] == 1 + for event in numbered_parameters +): + raise SystemExit("missing LinuxCNC numbered tool/position parameter branch motion") +if not any( + event["type"] == "linear-feed" and + event["line"] == 10 and + event["end"]["y"] == 1 + for event in numbered_parameters +): + raise SystemExit("missing LinuxCNC numbered probe parameter branch motion") + +rotary_probe_numbered = load("cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 and + event["end"]["a"] == 5 + for event in rotary_probe_numbered +): + raise SystemExit("missing LinuxCNC numbered rotary probe parameter branch motion") + +multi_rotary_probe_numbered = load("cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 and + event["end"]["a"] == 5 and + event["end"]["b"] == 6 and + event["end"]["c"] == 7 and + event["end"]["u"] == 8 and + event["end"]["v"] == 9 and + event["end"]["w"] == 10 + for event in multi_rotary_probe_numbered +): + raise SystemExit("missing LinuxCNC numbered multi-axis rotary probe parameter branch motion") + +tool_info_zero_parameter = load("cnc_sim_linuxcnc_tool_info_zero_parameter.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in tool_info_zero_parameter +): + raise SystemExit("missing LinuxCNC zeroed #5400/#5410/#5411/#5412/#5413 branch motion") + +spindle_tool_info_parameter = load("cnc_sim_linuxcnc_spindle_tool_info_parameter.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 + for event in spindle_tool_info_parameter +): + raise SystemExit("missing LinuxCNC preloaded spindle-tool #5400/#5410/#5411/#5412/#5413 branch motion") + +g28_g30_numbered = load("cnc_sim_linuxcnc_g28_g30_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 7 and + event["end"]["x"] == 10 + for event in g28_g30_numbered +): + raise SystemExit("missing LinuxCNC G28/G30 numbered parameter branch motion") + +rotary_g28_g30_numbered = load("cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 7 and + event["end"]["x"] == 1 and + event["end"]["a"] == 7 and + event["end"]["b"] == 8 and + event["end"]["c"] == 9 and + event["end"]["u"] == 10 and + event["end"]["v"] == 11 and + event["end"]["w"] == 12 + for event in rotary_g28_g30_numbered +): + raise SystemExit("missing LinuxCNC rotary G28/G30 numbered parameter branch motion") + +g92_numbered = load("cnc_sim_linuxcnc_g92_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 + for event in g92_numbered +): + raise SystemExit("missing LinuxCNC G92 numbered parameter branch motion") + +rotary_g92_numbered = load("cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 + for event in rotary_g92_numbered +): + raise SystemExit("missing LinuxCNC rotary G92 numbered parameter branch motion") + +g52_g92_numbered = load("cnc_sim_linuxcnc_g52_g92_numbered_interaction.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 6 and + event["end"]["x"] == 1 + for event in g52_g92_numbered +): + raise SystemExit("missing LinuxCNC G52 X0 Y0 #5210/#5211/#5212 branch motion") + +g5x_numbered = load("cnc_sim_linuxcnc_g5x_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in g5x_numbered +): + raise SystemExit("missing LinuxCNC G5X numbered parameter branch motion") + +g593_numbered = load("cnc_sim_linuxcnc_g59_3_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in g593_numbered +): + raise SystemExit("missing LinuxCNC G59.3 numbered parameter branch motion") + +g593_rotary_numbered = load("cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in g593_rotary_numbered +): + raise SystemExit("missing LinuxCNC rotary G59.3 numbered parameter branch motion") + +g5x_rotary_numbered = load("cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 1 + for event in g5x_rotary_numbered +): + raise SystemExit("missing LinuxCNC rotary G5X numbered parameter branch motion") + +g54_rotary_numbered = load("cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 + for event in g54_rotary_numbered +): + raise SystemExit("missing LinuxCNC rotary G54 numbered parameter branch motion") + +debug_level_parameter = load("cnc_sim_linuxcnc_debug_level_parameter.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 3 and + event["end"]["x"] == 1 + for event in debug_level_parameter +): + raise SystemExit("missing LinuxCNC #5599 enabled debug-level branch motion") +if not any( + event["type"] == "linear-feed" and + event["line"] == 8 and + event["end"]["y"] == 1 + for event in debug_level_parameter +): + raise SystemExit("missing LinuxCNC #5599 disabled debug-level branch motion") +if any( + event["type"] == "comment" and event["line"] in {5, 10} + for event in debug_level_parameter +): + raise SystemExit("unexpected LinuxCNC generic comment event for DEBUG hot comment") + +m66_result_parameter = load("cnc_sim_linuxcnc_m66_result_parameter.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 + for event in m66_result_parameter +): + raise SystemExit("missing LinuxCNC #5399 digital M66 result branch motion") +if not any( + event["type"] == "linear-feed" and + event["line"] == 9 and + event["end"]["y"] == 1 + for event in m66_result_parameter +): + raise SystemExit("missing LinuxCNC #5399 analog M66 result branch motion") + +tool_offset_numbered = load("cnc_sim_linuxcnc_tool_offset_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == -1 and + event["end"]["y"] == 1 and + event["end"]["z"] == -2 + for event in tool_offset_numbered +): + raise SystemExit("missing LinuxCNC numbered tool-offset/current-position parameter branch motion") + +rotary_tool_offset_numbered = load("cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 4 and + event["end"]["x"] == 1 and + event["end"]["a"] == -1 and + event["end"]["b"] == -2 and + event["end"]["c"] == -3 and + event["end"]["u"] == -4 and + event["end"]["v"] == -5 and + event["end"]["w"] == -6 + for event in rotary_tool_offset_numbered +): + raise SystemExit("missing LinuxCNC numbered rotary tool-offset/current-position parameter branch motion") + +current_position_numbered = load("cnc_sim_linuxcnc_current_position_numbered_parameters.json") +if not any( + event["type"] == "linear-feed" and + event["line"] == 5 and + event["end"]["x"] == 10 and + event["end"]["y"] == 2 and + event["end"]["z"] == 3 and + event["end"]["a"] == 4 and + event["end"]["b"] == 5 and + event["end"]["c"] == 6 and + event["end"]["u"] == 7 and + event["end"]["v"] == 8 and + event["end"]["w"] == 9 + for event in current_position_numbered +): + raise SystemExit("missing LinuxCNC numbered current-position parameter branch motion") + coords = load("cnc_sim_linuxcnc_coordinate_offsets.json") g5x = [event for event in coords if event["type"] == "set-g5x-offset"] g92 = [event for event in coords if event["type"] == "set-g92-offset"] @@ -2038,6 +2308,26 @@ echo "dumped $output_dir/cnc_sim_linuxcnc_indexed_parameters.json" echo "dumped $output_dir/cnc_sim_linuxcnc_named_parameter_normalization.json" echo "dumped $output_dir/cnc_sim_linuxcnc_ini_named_parameter.json" echo "dumped $output_dir/cnc_sim_linuxcnc_readonly_named_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_probe_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_multi_rotary_probe_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_tool_info_zero_parameter.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_tool_info_parameter.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g28_g30_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_g28_g30_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g92_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_g92_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g52_g92_numbered_interaction.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g5x_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g59_3_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g59_3_rotary_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g5x_rotary_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_g54_rotary_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_debug_level_parameter.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_m66_result_parameter.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_tool_offset_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_rotary_tool_offset_numbered_parameters.json" +echo "dumped $output_dir/cnc_sim_linuxcnc_current_position_numbered_parameters.json" echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_offsets.json" echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_l20.json" echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_p0.json"