Harden LinuxCNC wasm and native probe workflows
This commit is contained in:
@@ -5,11 +5,23 @@ cd "$(dirname "$0")"
|
||||
|
||||
linuxcnc_root=${LINUXCNC_ROOT:-../linuxcnc}
|
||||
cxx=${CXX:-g++}
|
||||
build_dir=${TMPDIR:-/tmp}/cnc_sim_native
|
||||
mkdir -p "$build_dir"
|
||||
build_dir=$(mktemp -d "${TMPDIR:-/tmp}/cnc_sim_native.XXXXXX")
|
||||
|
||||
if [[ ! -d "$linuxcnc_root" ]]; then
|
||||
echo "missing LinuxCNC root: $linuxcnc_root" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap 'rm -rf "$build_dir"' EXIT
|
||||
# The LinuxCNC rs274 backend path can bus-error when two dumps run concurrently.
|
||||
exec 9>"${TMPDIR:-/tmp}/cnc_sim_linuxcnc_rs274_native.lock"
|
||||
flock 9
|
||||
|
||||
var_file="$build_dir/rs274ngc.var"
|
||||
base_var_file="$build_dir/rs274ngc-base.var"
|
||||
ini_named_parameter_file="$(pwd)/tests/gcode/linuxcnc_ini_named_parameter.ini"
|
||||
output_dir="$build_dir/outputs"
|
||||
mkdir -p "$output_dir"
|
||||
cp "$linuxcnc_root/tests/halui/jogging/sim.var" "$base_var_file"
|
||||
cp "$base_var_file" "$var_file"
|
||||
|
||||
@@ -36,62 +48,65 @@ cp "$base_var_file" "$var_file"
|
||||
-lpython3.13 \
|
||||
-o "$build_dir/linuxcnc_rs274_dump"
|
||||
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_basic_motion.ngc >/tmp/cnc_sim_linuxcnc_basic_motion.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/basic_mill.ngc >/tmp/cnc_sim_linuxcnc_basic_mill.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rtcp_controls.ngc >/tmp/cnc_sim_linuxcnc_rtcp_controls.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_direction.ngc >/tmp/cnc_sim_linuxcnc_spindle_direction.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_modes.ngc >/tmp/cnc_sim_linuxcnc_spindle_modes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_orient.ngc >/tmp/cnc_sim_linuxcnc_spindle_orient.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_io_controls.ngc >/tmp/cnc_sim_linuxcnc_io_controls.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_override_controls.ngc >/tmp/cnc_sim_linuxcnc_override_controls.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_state.ngc >/tmp/cnc_sim_linuxcnc_modal_state.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_autorestore.ngc >/tmp/cnc_sim_linuxcnc_modal_autorestore.json
|
||||
if CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_invalidate.ngc >/tmp/cnc_sim_linuxcnc_modal_invalidate.json 2>/tmp/cnc_sim_linuxcnc_modal_invalidate.err; then
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_basic_motion.ngc >"$output_dir/cnc_sim_linuxcnc_basic_motion.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/basic_mill.ngc >"$output_dir/cnc_sim_linuxcnc_basic_mill.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_rtcp_controls.ngc >"$output_dir/cnc_sim_linuxcnc_rtcp_controls.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_direction.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_direction.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_modes.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_modes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_spindle_orient.ngc >"$output_dir/cnc_sim_linuxcnc_spindle_orient.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_io_controls.ngc >"$output_dir/cnc_sim_linuxcnc_io_controls.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_override_controls.ngc >"$output_dir/cnc_sim_linuxcnc_override_controls.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_state.ngc >"$output_dir/cnc_sim_linuxcnc_modal_state.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_autorestore.ngc >"$output_dir/cnc_sim_linuxcnc_modal_autorestore.json"
|
||||
if CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_modal_invalidate.ngc >"$output_dir/cnc_sim_linuxcnc_modal_invalidate.json" 2>"$output_dir/cnc_sim_linuxcnc_modal_invalidate.err"; then
|
||||
echo "expected linuxcnc_modal_invalidate.ngc to fail" >&2
|
||||
exit 1
|
||||
fi
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_sync.ngc >/tmp/cnc_sim_linuxcnc_threading_sync.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_cycle.ngc >/tmp/cnc_sim_linuxcnc_threading_cycle.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_number.ngc >/tmp/cnc_sim_linuxcnc_tool_number.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_program_stops.ngc >/tmp/cnc_sim_linuxcnc_program_stops.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coolant.ngc >/tmp/cnc_sim_linuxcnc_coolant.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_feed_modes.ngc >/tmp/cnc_sim_linuxcnc_feed_modes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_motion_modes.ngc >/tmp/cnc_sim_linuxcnc_motion_modes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_length.ngc >/tmp/cnc_sim_linuxcnc_tool_length.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_dynamic_tool_length.ngc >/tmp/cnc_sim_linuxcnc_dynamic_tool_length.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycle.ngc >/tmp/cnc_sim_linuxcnc_canned_cycle.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycles_extended.ngc >/tmp/cnc_sim_linuxcnc_canned_cycles_extended.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycle_planes.ngc >/tmp/cnc_sim_linuxcnc_canned_cycle_planes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_planes.ngc >/tmp/cnc_sim_linuxcnc_arc_planes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_distance_modes.ngc >/tmp/cnc_sim_linuxcnc_arc_distance_modes.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_predefined_positions.ngc >/tmp/cnc_sim_linuxcnc_predefined_positions.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_machine_coordinates.ngc >/tmp/cnc_sim_linuxcnc_machine_coordinates.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_cutter_comp.ngc >/tmp/cnc_sim_linuxcnc_cutter_comp.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_comments.ngc >/tmp/cnc_sim_linuxcnc_comments.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_probe_no_error.ngc >/tmp/cnc_sim_linuxcnc_probe_no_error.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/smoke_oword_subprogram.ngc >/tmp/cnc_sim_linuxcnc_oword_subprogram.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_oword_subprogram.ngc >/tmp/cnc_sim_linuxcnc_named_oword_subprogram.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_oword_control_flow.ngc >/tmp/cnc_sim_linuxcnc_oword_control_flow.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_parameter_exists.ngc >/tmp/cnc_sim_linuxcnc_named_parameter_exists.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_indexed_parameters.ngc >/tmp/cnc_sim_linuxcnc_indexed_parameters.json
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_parameter_normalization.ngc >/tmp/cnc_sim_linuxcnc_named_parameter_normalization.json
|
||||
INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_ini_named_parameter.ngc >/tmp/cnc_sim_linuxcnc_ini_named_parameter.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_sync.ngc >"$output_dir/cnc_sim_linuxcnc_threading_sync.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_threading_cycle.ngc >"$output_dir/cnc_sim_linuxcnc_threading_cycle.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_tool_number.ngc >"$output_dir/cnc_sim_linuxcnc_tool_number.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_program_stops.ngc >"$output_dir/cnc_sim_linuxcnc_program_stops.json"
|
||||
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"
|
||||
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"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycle.ngc >"$output_dir/cnc_sim_linuxcnc_canned_cycle.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycles_extended.ngc >"$output_dir/cnc_sim_linuxcnc_canned_cycles_extended.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_canned_cycle_planes.ngc >"$output_dir/cnc_sim_linuxcnc_canned_cycle_planes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_planes.ngc >"$output_dir/cnc_sim_linuxcnc_arc_planes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_arc_distance_modes.ngc >"$output_dir/cnc_sim_linuxcnc_arc_distance_modes.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_predefined_positions.ngc >"$output_dir/cnc_sim_linuxcnc_predefined_positions.json"
|
||||
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"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_comments.ngc >"$output_dir/cnc_sim_linuxcnc_comments.json"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_probe_no_error.ngc >"$output_dir/cnc_sim_linuxcnc_probe_no_error.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/smoke_oword_subprogram.ngc >"$output_dir/cnc_sim_linuxcnc_oword_subprogram.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_oword_subprogram.ngc >"$output_dir/cnc_sim_linuxcnc_named_oword_subprogram.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_oword_control_flow.ngc >"$output_dir/cnc_sim_linuxcnc_oword_control_flow.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_parameter_exists.ngc >"$output_dir/cnc_sim_linuxcnc_named_parameter_exists.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_indexed_parameters.ngc >"$output_dir/cnc_sim_linuxcnc_indexed_parameters.json"
|
||||
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_named_parameter_normalization.ngc >"$output_dir/cnc_sim_linuxcnc_named_parameter_normalization.json"
|
||||
INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_ini_named_parameter.ngc >"$output_dir/cnc_sim_linuxcnc_ini_named_parameter.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_offsets.ngc >/tmp/cnc_sim_linuxcnc_coordinate_offsets.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_offsets.ngc >"$output_dir/cnc_sim_linuxcnc_coordinate_offsets.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_l20.ngc >/tmp/cnc_sim_linuxcnc_coordinate_l20.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_l20.ngc >"$output_dir/cnc_sim_linuxcnc_coordinate_l20.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_p0.ngc >/tmp/cnc_sim_linuxcnc_coordinate_p0.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_p0.ngc >"$output_dir/cnc_sim_linuxcnc_coordinate_p0.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_select_all.ngc >/tmp/cnc_sim_linuxcnc_coordinate_select_all.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_coordinate_select_all.ngc >"$output_dir/cnc_sim_linuxcnc_coordinate_select_all.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_restore.ngc >/tmp/cnc_sim_linuxcnc_g92_restore.json
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g92_restore.ngc >"$output_dir/cnc_sim_linuxcnc_g92_restore.json"
|
||||
cp "$base_var_file" "$var_file"
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g52_offset.ngc >/tmp/cnc_sim_linuxcnc_g52_offset.json
|
||||
python3 - <<'PY'
|
||||
CNC_SIM_RS274_VAR="$var_file" "$build_dir/linuxcnc_rs274_dump" tests/gcode/linuxcnc_g52_offset.ngc >"$output_dir/cnc_sim_linuxcnc_g52_offset.json"
|
||||
CNC_SIM_RS274_NATIVE_OUTPUT_DIR="$output_dir" python3 - <<'PY'
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
OUTPUT_DIR = Path(os.environ["CNC_SIM_RS274_NATIVE_OUTPUT_DIR"])
|
||||
|
||||
def check(path, required):
|
||||
events = json.loads(Path(path).read_text())
|
||||
types = [event["type"] for event in events]
|
||||
@@ -103,11 +118,14 @@ def check(path, required):
|
||||
raise SystemExit(f"{path}: unexpected final XY position")
|
||||
return events
|
||||
|
||||
required_motion = {"set-units", "set-plane", "set-spindle", "rapid", "set-feed", "linear-feed", "arc-feed", "dwell", "program-end"}
|
||||
check("/tmp/cnc_sim_linuxcnc_basic_motion.json", required_motion)
|
||||
check("/tmp/cnc_sim_linuxcnc_basic_mill.json", required_motion | {"tool-change"})
|
||||
def load(name):
|
||||
return json.loads((OUTPUT_DIR / name).read_text())
|
||||
|
||||
controls = json.loads(Path("/tmp/cnc_sim_linuxcnc_rtcp_controls.json").read_text())
|
||||
required_motion = {"set-units", "set-plane", "set-spindle", "rapid", "set-feed", "linear-feed", "arc-feed", "dwell", "program-end"}
|
||||
check(OUTPUT_DIR / "cnc_sim_linuxcnc_basic_motion.json", required_motion)
|
||||
check(OUTPUT_DIR / "cnc_sim_linuxcnc_basic_mill.json", required_motion | {"tool-change"})
|
||||
|
||||
controls = load("cnc_sim_linuxcnc_rtcp_controls.json")
|
||||
kin = [event for event in controls if event["type"] == "kinematics-switch"]
|
||||
if [(event["reserved"], event["feed"]) for event in kin] != [(1, 1), (0, 0), (2, 1)]:
|
||||
raise SystemExit("unexpected kinematics switch sequence")
|
||||
@@ -115,7 +133,7 @@ rtcp = [event for event in controls if event["type"] == "rtcp-state"]
|
||||
if [(event["line"], event["tool"], event["feed"]) for event in rtcp] != [(3, 0, 0), (4, 7, 1)]:
|
||||
raise SystemExit("unexpected RTCP state sequence")
|
||||
|
||||
spindle = json.loads(Path("/tmp/cnc_sim_linuxcnc_spindle_direction.json").read_text())
|
||||
spindle = load("cnc_sim_linuxcnc_spindle_direction.json")
|
||||
spindle_states = [
|
||||
(event["line"], event["spindle"], event["reserved"])
|
||||
for event in spindle
|
||||
@@ -128,7 +146,7 @@ if (3, 1200, 2) not in spindle_states:
|
||||
if (4, 0, 0) not in spindle_states:
|
||||
raise SystemExit("missing M5 stopped spindle state")
|
||||
|
||||
spindle_modes = json.loads(Path("/tmp/cnc_sim_linuxcnc_spindle_modes.json").read_text())
|
||||
spindle_modes = load("cnc_sim_linuxcnc_spindle_modes.json")
|
||||
spindle_mode_states = [
|
||||
(event["line"], event["reserved"], event["feed"], event["tool"])
|
||||
for event in spindle_modes
|
||||
@@ -142,7 +160,7 @@ expected_spindle_mode_states = [
|
||||
if spindle_mode_states != expected_spindle_mode_states:
|
||||
raise SystemExit(f"unexpected G96/G97 spindle mode states: {spindle_mode_states!r}")
|
||||
|
||||
spindle_orient = json.loads(Path("/tmp/cnc_sim_linuxcnc_spindle_orient.json").read_text())
|
||||
spindle_orient = load("cnc_sim_linuxcnc_spindle_orient.json")
|
||||
if not any(
|
||||
event["type"] == "comment" and
|
||||
event["line"] == 2 and
|
||||
@@ -163,7 +181,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing M19 spindle orient wait state")
|
||||
|
||||
io_controls = json.loads(Path("/tmp/cnc_sim_linuxcnc_io_controls.json").read_text())
|
||||
io_controls = load("cnc_sim_linuxcnc_io_controls.json")
|
||||
io_states = [
|
||||
(event["line"], event["reserved"], event["tool"], event["feed"], event["arcTurns"], event["dwellSeconds"])
|
||||
for event in io_controls
|
||||
@@ -182,7 +200,7 @@ expected_io_states = [
|
||||
if io_states != expected_io_states:
|
||||
raise SystemExit(f"unexpected M62-M68 I/O states: {io_states!r}")
|
||||
|
||||
override_controls = json.loads(Path("/tmp/cnc_sim_linuxcnc_override_controls.json").read_text())
|
||||
override_controls = load("cnc_sim_linuxcnc_override_controls.json")
|
||||
override_states = [
|
||||
(event["line"], event["reserved"], event["tool"], event["feed"])
|
||||
for event in override_controls
|
||||
@@ -206,7 +224,7 @@ expected_override_states = [
|
||||
if override_states != expected_override_states:
|
||||
raise SystemExit(f"unexpected M48-M53 override states: {override_states!r}")
|
||||
|
||||
modal_state = json.loads(Path("/tmp/cnc_sim_linuxcnc_modal_state.json").read_text())
|
||||
modal_state = load("cnc_sim_linuxcnc_modal_state.json")
|
||||
if not any(
|
||||
event["type"] == "rapid" and
|
||||
event["line"] == 7 and
|
||||
@@ -226,7 +244,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing M72 restored XY plane arc")
|
||||
|
||||
modal_autorestore = json.loads(Path("/tmp/cnc_sim_linuxcnc_modal_autorestore.json").read_text())
|
||||
modal_autorestore = load("cnc_sim_linuxcnc_modal_autorestore.json")
|
||||
if not any(
|
||||
event["type"] == "rapid" and
|
||||
event["line"] == 9 and
|
||||
@@ -243,7 +261,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing M73 autorestored incremental caller move")
|
||||
|
||||
threading_sync = json.loads(Path("/tmp/cnc_sim_linuxcnc_threading_sync.json").read_text())
|
||||
threading_sync = load("cnc_sim_linuxcnc_threading_sync.json")
|
||||
sync_states = [
|
||||
(event["line"], event["reserved"], event["feed"], event["tool"])
|
||||
for event in threading_sync
|
||||
@@ -263,7 +281,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing G33.1 rigid tap motion line")
|
||||
|
||||
threading_cycle = json.loads(Path("/tmp/cnc_sim_linuxcnc_threading_cycle.json").read_text())
|
||||
threading_cycle = load("cnc_sim_linuxcnc_threading_cycle.json")
|
||||
if not any(
|
||||
event["type"] == "comment" and
|
||||
event["line"] == 4 and
|
||||
@@ -282,7 +300,7 @@ if not any(
|
||||
if not any(event["type"] == "program-end" and event["line"] == 5 for event in threading_cycle):
|
||||
raise SystemExit("missing G76 program end line number")
|
||||
|
||||
tool_number = json.loads(Path("/tmp/cnc_sim_linuxcnc_tool_number.json").read_text())
|
||||
tool_number = load("cnc_sim_linuxcnc_tool_number.json")
|
||||
if not any(
|
||||
event["type"] == "tool-change" and
|
||||
event["line"] == 2 and
|
||||
@@ -291,7 +309,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing M61 Q1 tool-number event line")
|
||||
|
||||
stops = json.loads(Path("/tmp/cnc_sim_linuxcnc_program_stops.json").read_text())
|
||||
stops = load("cnc_sim_linuxcnc_program_stops.json")
|
||||
stop_states = [
|
||||
(event["line"], event["reserved"])
|
||||
for event in stops
|
||||
@@ -301,7 +319,7 @@ for expected in [(2, 1), (3, 2), (4, 3), (4, 1), (5, 0)]:
|
||||
if expected not in stop_states:
|
||||
raise SystemExit(f"missing program stop state {expected!r}")
|
||||
|
||||
coolant = json.loads(Path("/tmp/cnc_sim_linuxcnc_coolant.json").read_text())
|
||||
coolant = load("cnc_sim_linuxcnc_coolant.json")
|
||||
coolant_states = [
|
||||
(event["line"], event["reserved"])
|
||||
for event in coolant
|
||||
@@ -311,7 +329,7 @@ for expected in [(2, 11), (3, 21), (4, 10), (4, 20)]:
|
||||
if expected not in coolant_states:
|
||||
raise SystemExit(f"missing coolant state {expected!r}")
|
||||
|
||||
feed_modes = json.loads(Path("/tmp/cnc_sim_linuxcnc_feed_modes.json").read_text())
|
||||
feed_modes = load("cnc_sim_linuxcnc_feed_modes.json")
|
||||
feed_mode_comments = [
|
||||
(event["line"], event["reserved"])
|
||||
for event in feed_modes
|
||||
@@ -329,7 +347,7 @@ for expected in [(3, 0), (4, 0)]:
|
||||
if expected not in feed_mode_events:
|
||||
raise SystemExit(f"missing feed mode event {expected!r}")
|
||||
|
||||
motion_modes = json.loads(Path("/tmp/cnc_sim_linuxcnc_motion_modes.json").read_text())
|
||||
motion_modes = load("cnc_sim_linuxcnc_motion_modes.json")
|
||||
motion_mode_states = [
|
||||
(event["line"], event["reserved"], event["feed"])
|
||||
for event in motion_modes
|
||||
@@ -339,7 +357,7 @@ 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}")
|
||||
|
||||
tool_length = json.loads(Path("/tmp/cnc_sim_linuxcnc_tool_length.json").read_text())
|
||||
tool_length = load("cnc_sim_linuxcnc_tool_length.json")
|
||||
if not any(
|
||||
event["type"] == "comment" and
|
||||
event["line"] == 2 and
|
||||
@@ -357,7 +375,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing G49 tool length clear event")
|
||||
|
||||
dynamic_tool_length = json.loads(Path("/tmp/cnc_sim_linuxcnc_dynamic_tool_length.json").read_text())
|
||||
dynamic_tool_length = load("cnc_sim_linuxcnc_dynamic_tool_length.json")
|
||||
dynamic_offsets = [
|
||||
(event["line"], event["start"]["x"], event["start"]["z"])
|
||||
for event in dynamic_tool_length
|
||||
@@ -367,7 +385,7 @@ expected_dynamic_offsets = [(2, 1, 2), (3, 1.25, 2.5), (4, 1.25, 15), (5, 0, 0)]
|
||||
if dynamic_offsets != expected_dynamic_offsets:
|
||||
raise SystemExit(f"unexpected G43.1/G43.2 tool length offsets: {dynamic_offsets!r}")
|
||||
|
||||
cycle = json.loads(Path("/tmp/cnc_sim_linuxcnc_canned_cycle.json").read_text())
|
||||
cycle = load("cnc_sim_linuxcnc_canned_cycle.json")
|
||||
motions = [event for event in cycle if event["type"] in {"rapid", "linear-feed"}]
|
||||
expected_cycle = [
|
||||
("rapid", 0, 0, 5),
|
||||
@@ -380,7 +398,7 @@ actual_cycle = [(event["type"], event["end"]["x"], event["end"]["y"], event["end
|
||||
if actual_cycle != expected_cycle:
|
||||
raise SystemExit(f"unexpected G81/G80 expansion: {actual_cycle!r}")
|
||||
|
||||
cycle_planes = json.loads(Path("/tmp/cnc_sim_linuxcnc_canned_cycle_planes.json").read_text())
|
||||
cycle_planes = load("cnc_sim_linuxcnc_canned_cycle_planes.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 4 and
|
||||
@@ -526,7 +544,7 @@ expected_plane_g87_sequence = [
|
||||
if plane_g87_sequence != expected_plane_g87_sequence:
|
||||
raise SystemExit(f"unexpected G19 G87 plane sequence: {plane_g87_sequence!r}")
|
||||
|
||||
extended_cycle = json.loads(Path("/tmp/cnc_sim_linuxcnc_canned_cycles_extended.json").read_text())
|
||||
extended_cycle = load("cnc_sim_linuxcnc_canned_cycles_extended.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 3 and
|
||||
@@ -653,7 +671,7 @@ expected_g87_sequence = [
|
||||
if g87_sequence != expected_g87_sequence:
|
||||
raise SystemExit(f"unexpected G87 back-boring sequence: {g87_sequence!r}")
|
||||
|
||||
arc_planes = json.loads(Path("/tmp/cnc_sim_linuxcnc_arc_planes.json").read_text())
|
||||
arc_planes = load("cnc_sim_linuxcnc_arc_planes.json")
|
||||
if not any(
|
||||
event["type"] == "arc-feed" and
|
||||
event["line"] == 5 and
|
||||
@@ -683,7 +701,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing G19 YZ plane arc-feed mapping")
|
||||
|
||||
arc_distance = json.loads(Path("/tmp/cnc_sim_linuxcnc_arc_distance_modes.json").read_text())
|
||||
arc_distance = load("cnc_sim_linuxcnc_arc_distance_modes.json")
|
||||
arc_centers = [
|
||||
(event["line"], event["center"]["x"], event["center"]["y"])
|
||||
for event in arc_distance
|
||||
@@ -693,7 +711,7 @@ expected_arc_centers = [(5, 5, 0), (7, 15, 0), (9, 25, 0)]
|
||||
if arc_centers != expected_arc_centers:
|
||||
raise SystemExit(f"unexpected G90.1/G91.1 arc centers: {arc_centers!r}")
|
||||
|
||||
predefined = json.loads(Path("/tmp/cnc_sim_linuxcnc_predefined_positions.json").read_text())
|
||||
predefined = load("cnc_sim_linuxcnc_predefined_positions.json")
|
||||
predefined_rapids = [
|
||||
(
|
||||
event["line"],
|
||||
@@ -712,7 +730,7 @@ expected_predefined_rapids = [
|
||||
if predefined_rapids != expected_predefined_rapids:
|
||||
raise SystemExit(f"unexpected G28/G30 rapid sequence: {predefined_rapids!r}")
|
||||
|
||||
machine_coords = json.loads(Path("/tmp/cnc_sim_linuxcnc_machine_coordinates.json").read_text())
|
||||
machine_coords = load("cnc_sim_linuxcnc_machine_coordinates.json")
|
||||
machine_moves = [
|
||||
(
|
||||
event["type"], event["line"],
|
||||
@@ -730,7 +748,7 @@ expected_machine_moves = [
|
||||
if machine_moves != expected_machine_moves:
|
||||
raise SystemExit(f"unexpected G53 machine-coordinate moves: {machine_moves!r}")
|
||||
|
||||
cutter_comp = json.loads(Path("/tmp/cnc_sim_linuxcnc_cutter_comp.json").read_text())
|
||||
cutter_comp = load("cnc_sim_linuxcnc_cutter_comp.json")
|
||||
cutter_comp_motions = [
|
||||
event
|
||||
for event in cutter_comp
|
||||
@@ -758,11 +776,11 @@ actual_cutter_comp = [
|
||||
if actual_cutter_comp != expected_cutter_comp:
|
||||
raise SystemExit(f"unexpected cutter compensation path: {actual_cutter_comp!r}")
|
||||
|
||||
comments = json.loads(Path("/tmp/cnc_sim_linuxcnc_comments.json").read_text())
|
||||
comments = load("cnc_sim_linuxcnc_comments.json")
|
||||
if not any(event["type"] == "comment" and event["line"] == 2 for event in comments):
|
||||
raise SystemExit("missing LinuxCNC comment line event")
|
||||
|
||||
probe = json.loads(Path("/tmp/cnc_sim_linuxcnc_probe_no_error.json").read_text())
|
||||
probe = load("cnc_sim_linuxcnc_probe_no_error.json")
|
||||
probe_events = [
|
||||
(event["line"], event["reserved"], event["start"]["z"], event["end"]["z"])
|
||||
for event in probe
|
||||
@@ -787,7 +805,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing #5070 probe-tripped conditional motion")
|
||||
|
||||
oword = json.loads(Path("/tmp/cnc_sim_linuxcnc_oword_subprogram.json").read_text())
|
||||
oword = load("cnc_sim_linuxcnc_oword_subprogram.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 8 and
|
||||
@@ -812,7 +830,7 @@ if any(
|
||||
):
|
||||
raise SystemExit("LinuxCNC O-word return should skip remaining subprogram body")
|
||||
|
||||
named_oword = json.loads(Path("/tmp/cnc_sim_linuxcnc_named_oword_subprogram.json").read_text())
|
||||
named_oword = load("cnc_sim_linuxcnc_named_oword_subprogram.json")
|
||||
if not any(
|
||||
event["type"] == "linear-feed" and
|
||||
event["line"] == 9 and
|
||||
@@ -845,7 +863,7 @@ if any(
|
||||
):
|
||||
raise SystemExit("LinuxCNC named O-word return should skip remaining subprogram body")
|
||||
|
||||
oword_flow = json.loads(Path("/tmp/cnc_sim_linuxcnc_oword_control_flow.json").read_text())
|
||||
oword_flow = load("cnc_sim_linuxcnc_oword_control_flow.json")
|
||||
if not any(event["type"] == "linear-feed" and event["line"] == 7 and event["end"]["x"] == 2 for event in oword_flow):
|
||||
raise SystemExit("missing LinuxCNC O-word elseif branch motion")
|
||||
if any(
|
||||
@@ -910,7 +928,7 @@ if not any(
|
||||
):
|
||||
raise SystemExit("missing LinuxCNC O-word do/continue skipped-body counter motion")
|
||||
|
||||
exists = json.loads(Path("/tmp/cnc_sim_linuxcnc_named_parameter_exists.json").read_text())
|
||||
exists = load("cnc_sim_linuxcnc_named_parameter_exists.json")
|
||||
exists_moves = [
|
||||
(event["line"], event["end"]["x"], event["end"]["y"])
|
||||
for event in exists
|
||||
@@ -920,7 +938,7 @@ expected_exists_moves = [(5, 1, 0), (8, 1, 1)]
|
||||
if exists_moves != expected_exists_moves:
|
||||
raise SystemExit(f"unexpected LinuxCNC EXISTS named parameter branch motions: {exists_moves!r}")
|
||||
|
||||
indexed = json.loads(Path("/tmp/cnc_sim_linuxcnc_indexed_parameters.json").read_text())
|
||||
indexed = load("cnc_sim_linuxcnc_indexed_parameters.json")
|
||||
indexed_moves = [
|
||||
(
|
||||
event["line"],
|
||||
@@ -947,7 +965,7 @@ expected_indexed_moves = [
|
||||
if indexed_moves != expected_indexed_moves:
|
||||
raise SystemExit(f"unexpected LinuxCNC indexed/indirect parameter motions: {indexed_moves!r}")
|
||||
|
||||
normalized = json.loads(Path("/tmp/cnc_sim_linuxcnc_named_parameter_normalization.json").read_text())
|
||||
normalized = load("cnc_sim_linuxcnc_named_parameter_normalization.json")
|
||||
normalized_moves = [
|
||||
(event["line"], event["end"]["x"], event["end"]["y"])
|
||||
for event in normalized
|
||||
@@ -957,7 +975,7 @@ expected_normalized_moves = [(4, 12, 0), (6, 12, 1)]
|
||||
if normalized_moves != expected_normalized_moves:
|
||||
raise SystemExit(f"unexpected LinuxCNC normalized named parameter motions: {normalized_moves!r}")
|
||||
|
||||
ini_named = json.loads(Path("/tmp/cnc_sim_linuxcnc_ini_named_parameter.json").read_text())
|
||||
ini_named = load("cnc_sim_linuxcnc_ini_named_parameter.json")
|
||||
ini_named_moves = [
|
||||
(event["line"], event["end"]["x"], event["end"]["y"])
|
||||
for event in ini_named
|
||||
@@ -967,7 +985,7 @@ expected_ini_named_moves = [(3, 3.25, 0), (5, 3.25, 1)]
|
||||
if ini_named_moves != expected_ini_named_moves:
|
||||
raise SystemExit(f"unexpected LinuxCNC INI named parameter motions: {ini_named_moves!r}")
|
||||
|
||||
coords = json.loads(Path("/tmp/cnc_sim_linuxcnc_coordinate_offsets.json").read_text())
|
||||
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"]
|
||||
rot = [event for event in coords if event["type"] == "set-xy-rotation"]
|
||||
@@ -993,7 +1011,7 @@ if not any(
|
||||
if not any(event["type"] == "program-end" and event["line"] == 5 for event in coords):
|
||||
raise SystemExit("missing coordinate program end line number")
|
||||
|
||||
l20 = json.loads(Path("/tmp/cnc_sim_linuxcnc_coordinate_l20.json").read_text())
|
||||
l20 = load("cnc_sim_linuxcnc_coordinate_l20.json")
|
||||
if not any(
|
||||
event["type"] == "set-g5x-offset" and
|
||||
event["line"] == 4 and
|
||||
@@ -1007,7 +1025,7 @@ if not any(
|
||||
if not any(event["type"] == "program-end" and event["line"] == 5 for event in l20):
|
||||
raise SystemExit("missing G10 L20 program end line number")
|
||||
|
||||
p0 = json.loads(Path("/tmp/cnc_sim_linuxcnc_coordinate_p0.json").read_text())
|
||||
p0 = load("cnc_sim_linuxcnc_coordinate_p0.json")
|
||||
if not any(
|
||||
event["type"] == "set-g5x-offset" and
|
||||
event["line"] == 3 and
|
||||
@@ -1021,7 +1039,7 @@ if not any(
|
||||
if not any(event["type"] == "program-end" and event["line"] == 4 for event in p0):
|
||||
raise SystemExit("missing G10 P0 program end line number")
|
||||
|
||||
select_all = json.loads(Path("/tmp/cnc_sim_linuxcnc_coordinate_select_all.json").read_text())
|
||||
select_all = load("cnc_sim_linuxcnc_coordinate_select_all.json")
|
||||
select_events = [
|
||||
(event["line"], event["tool"], event["start"]["x"])
|
||||
for event in select_all
|
||||
@@ -1041,7 +1059,7 @@ expected_select_events = [
|
||||
if select_events != expected_select_events:
|
||||
raise SystemExit(f"unexpected G54-G59.3 selection events: {select_events!r}")
|
||||
|
||||
g92_restore = json.loads(Path("/tmp/cnc_sim_linuxcnc_g92_restore.json").read_text())
|
||||
g92_restore = load("cnc_sim_linuxcnc_g92_restore.json")
|
||||
g92_states = [
|
||||
(event["line"], event["start"]["x"], event["start"]["y"], event["start"]["z"])
|
||||
for event in g92_restore
|
||||
@@ -1059,7 +1077,7 @@ if g92_states != expected_g92_states:
|
||||
if not any(event["type"] == "program-end" and event["line"] == 7 for event in g92_restore):
|
||||
raise SystemExit("missing G92 restore program end line number")
|
||||
|
||||
g52_offset = json.loads(Path("/tmp/cnc_sim_linuxcnc_g52_offset.json").read_text())
|
||||
g52_offset = load("cnc_sim_linuxcnc_g52_offset.json")
|
||||
g52_states = [
|
||||
(event["line"], event["start"]["x"], event["start"]["y"], event["start"]["z"])
|
||||
for event in g52_offset
|
||||
@@ -1079,45 +1097,45 @@ if not any(event["type"] == "program-end" and event["line"] == 7 for event in g5
|
||||
PY
|
||||
|
||||
echo "linuxcnc rs274 native smoke passed"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_basic_motion.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_basic_mill.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_rtcp_controls.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_spindle_direction.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_spindle_modes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_spindle_orient.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_io_controls.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_override_controls.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_modal_state.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_modal_autorestore.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_threading_sync.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_threading_cycle.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_tool_number.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_program_stops.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_coolant.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_feed_modes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_motion_modes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_tool_length.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_dynamic_tool_length.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_canned_cycle.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_canned_cycles_extended.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_canned_cycle_planes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_arc_planes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_arc_distance_modes.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_predefined_positions.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_machine_coordinates.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_cutter_comp.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_comments.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_probe_no_error.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_oword_subprogram.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_named_oword_subprogram.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_oword_control_flow.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_named_parameter_exists.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_indexed_parameters.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_named_parameter_normalization.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_ini_named_parameter.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_coordinate_offsets.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_coordinate_l20.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_coordinate_p0.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_coordinate_select_all.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_g92_restore.json"
|
||||
echo "dumped /tmp/cnc_sim_linuxcnc_g52_offset.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_basic_motion.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_basic_mill.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_rtcp_controls.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_direction.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_modes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_spindle_orient.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_io_controls.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_override_controls.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_modal_state.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_modal_autorestore.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_threading_sync.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_threading_cycle.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_tool_number.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_program_stops.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_coolant.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_feed_modes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_motion_modes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_tool_length.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_dynamic_tool_length.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_canned_cycle.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_canned_cycles_extended.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_canned_cycle_planes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_arc_planes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_arc_distance_modes.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_predefined_positions.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_machine_coordinates.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_cutter_comp.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_comments.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_probe_no_error.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_oword_subprogram.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_named_oword_subprogram.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_oword_control_flow.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_named_parameter_exists.json"
|
||||
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_coordinate_offsets.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_l20.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_p0.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_coordinate_select_all.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_g92_restore.json"
|
||||
echo "dumped $output_dir/cnc_sim_linuxcnc_g52_offset.json"
|
||||
|
||||
Reference in New Issue
Block a user