对齐 LinuxCNC 解释器行为覆盖

This commit is contained in:
cnc
2026-05-24 21:47:29 +08:00
parent a227ad14a6
commit b4861fd618
66 changed files with 7547 additions and 295 deletions

View File

@@ -1,7 +1,23 @@
#include "canon_event_sink.h"
#include <cmath>
#include "rtcp_kinematics.h"
namespace {
void rotate_xy(double *x, double *y, double degrees) {
const double radians = degrees * std::acos(-1.0) / 180.0;
const double c = std::cos(radians);
const double s = std::sin(radians);
const double nx = *x * c - *y * s;
const double ny = *x * s + *y * c;
*x = nx;
*y = ny;
}
} // namespace
void CanonEventSink::reset() {
position_ = {};
plane_ = 17;
@@ -14,6 +30,7 @@ void CanonEventSink::reset() {
probe_position_ = {};
probe_tripped_ = false;
tool_length_offset_ = {};
xy_rotation_degrees_ = 0.0;
callback_status_ = 0;
kinematics_type_ = 1;
feed_override_ = false;
@@ -62,6 +79,22 @@ void CanonEventSink::set_tool_length_offset(const CncSimPose &offset) {
tool_length_offset_ = offset;
}
void CanonEventSink::apply_tool_length_offset(const CncSimPose &offset) {
double dx = tool_length_offset_.x - offset.x;
double dy = tool_length_offset_.y - offset.y;
rotate_xy(&dx, &dy, -xy_rotation_degrees_);
position_.x += dx;
position_.y += dy;
position_.z += tool_length_offset_.z - offset.z;
position_.a += tool_length_offset_.a - offset.a;
position_.b += tool_length_offset_.b - offset.b;
position_.c += tool_length_offset_.c - offset.c;
position_.u += tool_length_offset_.u - offset.u;
position_.v += tool_length_offset_.v - offset.v;
position_.w += tool_length_offset_.w - offset.w;
tool_length_offset_ = offset;
}
void CanonEventSink::set_rtcp_state(bool enabled, int h_code, int line) {
rtcp_enabled_ = enabled;
rtcp_h_code_ = enabled ? h_code : 0;
@@ -99,6 +132,7 @@ void CanonEventSink::set_g92_offset(const CncSimPose &offset, int line) {
}
void CanonEventSink::set_xy_rotation(double angle_degrees, int line) {
xy_rotation_degrees_ = angle_degrees;
CncSimEvent event = base_event(CNC_SIM_EVENT_SET_XY_ROTATION, line);
event.feed = angle_degrees;
emit(event);
@@ -138,8 +172,13 @@ void CanonEventSink::set_feed_mode(int spindle, int mode, int line) {
}
void CanonEventSink::set_spindle_speed(double spindle, int line) {
spindle_ = spindle;
set_spindle_speed(0, spindle, line);
}
void CanonEventSink::set_spindle_speed(int spindle, double speed, int line) {
spindle_ = speed;
CncSimEvent event = base_event(CNC_SIM_EVENT_SET_SPINDLE, line);
event.tool = spindle;
event.spindle = spindle_;
event.reserved = spindle_direction_;
emit(event);
@@ -229,16 +268,26 @@ void CanonEventSink::set_override_control(int control, bool enabled, int spindle
}
void CanonEventSink::start_spindle(int direction, int line) {
start_spindle(0, direction, line);
}
void CanonEventSink::start_spindle(int spindle, int direction, int line) {
spindle_direction_ = direction < 0 ? 2 : 1;
CncSimEvent event = base_event(CNC_SIM_EVENT_SET_SPINDLE, line);
event.tool = spindle;
event.spindle = spindle_;
event.reserved = spindle_direction_;
emit(event);
}
void CanonEventSink::stop_spindle(int line) {
stop_spindle(0, line);
}
void CanonEventSink::stop_spindle(int spindle, int line) {
spindle_direction_ = 0;
CncSimEvent event = base_event(CNC_SIM_EVENT_SET_SPINDLE, line);
event.tool = spindle;
event.spindle = 0.0;
event.reserved = spindle_direction_;
emit(event);

View File

@@ -13,6 +13,7 @@ public:
void configure_rtcp(bool enabled, double tool_length);
void set_tool_length(int h_code, double tool_length);
void set_tool_length_offset(const CncSimPose &offset);
void apply_tool_length_offset(const CncSimPose &offset);
void set_rtcp_state(bool enabled, int h_code, int line);
void switch_kinematics(int kinematics_type, bool rtcp_enabled, int line);
void set_g5x_offset(int index, const CncSimPose &offset, int line);
@@ -25,6 +26,7 @@ public:
void set_feed_rate(double feed, int line);
void set_feed_mode(int spindle, int mode, int line);
void set_spindle_speed(double spindle, int line);
void set_spindle_speed(int spindle, double speed, int line);
void set_spindle_mode(int spindle, double mode, int line);
void set_speed_feed_sync(int spindle, double feed_per_revolution, bool velocity_mode, bool enabled, int line);
void orient_spindle(int spindle, double orientation, int mode, int line);
@@ -34,7 +36,9 @@ public:
void wait_input(int index, int input_type, int wait_type, double timeout, int line);
void set_override_control(int control, bool enabled, int spindle, int line);
void start_spindle(int direction, int line);
void start_spindle(int spindle, int direction, int line);
void stop_spindle(int line);
void stop_spindle(int spindle, int line);
void select_tool(int tool);
void change_tool(int line);
void straight_traverse(int line, const CncSimPose &end);
@@ -92,6 +96,7 @@ private:
double rtcp_tool_length_ = 0.0;
int rtcp_h_code_ = 0;
CncSimPose tool_length_offset_{};
double xy_rotation_degrees_ = 0.0;
int kinematics_type_ = 1;
bool feed_override_ = false;
bool speed_override_ = false;

View File

@@ -50,6 +50,12 @@ int plane_to_g_code(CANON_PLANE plane) {
return 18;
case CANON_PLANE::YZ:
return 19;
case CANON_PLANE::UV:
return 171;
case CANON_PLANE::UW:
return 181;
case CANON_PLANE::VW:
return 191;
default:
return 17;
}
@@ -73,6 +79,12 @@ CANON_PLANE g_code_to_plane(int plane) {
return CANON_PLANE::XZ;
case 19:
return CANON_PLANE::YZ;
case 171:
return CANON_PLANE::UV;
case 181:
return CANON_PLANE::UW;
case 191:
return CANON_PLANE::VW;
case 17:
default:
return CANON_PLANE::XY;

View File

@@ -2,6 +2,8 @@
#include "emc/tooldata/tooldata.hh"
#include <cstdlib>
void cnc_sim_init_minimal_linuxcnc_tooldata() {
static bool created = false;
if (!created) {
@@ -22,5 +24,29 @@ void cnc_sim_init_minimal_linuxcnc_tooldata() {
tool.diameter = 6.0;
tool.offset.tran.z = 12.5;
tooldata_put(tool, 1);
tooldata_last_index_set(1);
CANON_TOOL_TABLE thread_tool = tooldata_entry_init();
thread_tool.toolno = 4;
thread_tool.pocketno = 4;
thread_tool.diameter = 1.0;
thread_tool.offset.tran.z = 0.7;
tooldata_put(thread_tool, 4);
if (const char *spindle_tool = std::getenv("CNC_SIM_TOOL_IN_SPINDLE")) {
const int tool_id = std::atoi(spindle_tool);
if (tool_id == 1) {
CANON_TOOL_TABLE spindle_tooldata = tool;
spindle_tooldata.pocketno = 0;
spindle_tooldata.frontangle = 12.0;
spindle_tooldata.backangle = 34.0;
spindle_tooldata.orientation = 5;
tooldata_put(spindle_tooldata, 0);
} else if (tool_id == 4) {
CANON_TOOL_TABLE spindle_tooldata = thread_tool;
spindle_tooldata.pocketno = 0;
tooldata_put(spindle_tooldata, 0);
}
}
tooldata_last_index_set(4);
}

File diff suppressed because it is too large Load Diff

View File

@@ -17,9 +17,24 @@ private:
bool arc_absolute_ = false;
bool lathe_diameter_mode_ = false;
bool cutter_comp_on_ = false;
bool cutter_comp_exit_pending_ = false;
bool cutter_comp_has_prev_vector_ = false;
bool cutter_comp_has_prev_prev_vector_ = false;
double cutter_comp_radius_ = 0.0;
int spindle_tool_id_ = 0;
CncSimPose cutter_comp_prev_vector_{};
CncSimPose cutter_comp_prev_prev_vector_{};
int cutter_comp_mode_ = 40;
bool spindle_css_mode_ = false;
bool tool_selected_ = false;
bool nurbs_g5_collecting_ = false;
int nurbs_g5_control_points_ = 0;
int nurbs_g5_order_ = 3;
bool nurbs_g6_collecting_ = false;
int feed_mode_ = 0;
int canned_cycle_ = 0;
bool canned_return_to_initial_ = false;
bool g92_applied_ = false;
bool canned_has_r_ = false;
bool canned_has_z_ = false;
bool canned_has_p_ = false;
@@ -36,6 +51,8 @@ private:
double canned_i_ = 0.0;
double canned_j_ = 0.0;
double canned_k_ = 0.0;
double m66_result_ = 0.0;
double oword_return_value_ = 0.0;
bool oword_value_returned_ = false;
int selected_tool_id_ = 0;
};

File diff suppressed because it is too large Load Diff

View File

@@ -167,6 +167,9 @@ CNC_SIM_RS274_VAR="$var_file" \
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_planes.ngc \
>/tmp/cnc_sim_linuxcnc_source_canned_cycle_planes.json
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_extended_plane_cycle.ngc \
>/tmp/cnc_sim_linuxcnc_source_extended_plane_cycle.json
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_arc_planes.ngc \
>/tmp/cnc_sim_linuxcnc_source_arc_planes.json
@@ -206,6 +209,245 @@ CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
INI_FILE_NAME="$ini_named_parameter_file" CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_ini_named_parameter.ngc \
>/tmp/cnc_sim_linuxcnc_source_ini_named_parameter.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_readonly_named_parameters_extra.ngc \
>/tmp/cnc_sim_linuxcnc_source_readonly_named_parameters_extra.json
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_readonly_named_parameter_assign_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_readonly_named_parameter_assign_error.json 2>/tmp/cnc_sim_linuxcnc_source_readonly_named_parameter_assign_error.err; then
echo "expected linuxcnc_readonly_named_parameter_assign_error.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_negative_sqrt_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_negative_sqrt_error.json 2>/tmp/cnc_sim_linuxcnc_source_negative_sqrt_error.err; then
echo "expected linuxcnc_negative_sqrt_error.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_infinite_expression_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_infinite_expression_error.json 2>/tmp/cnc_sim_linuxcnc_source_infinite_expression_error.err; then
echo "expected linuxcnc_infinite_expression_error.ngc to fail" >&2
exit 1
fi
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_value_returned.ngc \
>/tmp/cnc_sim_linuxcnc_source_value_returned.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_call_level.ngc \
>/tmp/cnc_sim_linuxcnc_source_call_level.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_exists_word_value.ngc \
>/tmp/cnc_sim_linuxcnc_source_exists_word_value.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_lowercase_numeric_oword.ngc \
>/tmp/cnc_sim_linuxcnc_source_lowercase_numeric_oword.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_parameter_expression_assignment.ngc \
>/tmp/cnc_sim_linuxcnc_source_parameter_expression_assignment.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_word_bracket_whitespace.ngc \
>/tmp/cnc_sim_linuxcnc_source_word_bracket_whitespace.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_m98_mixed_styles_variables.ngc \
>/tmp/cnc_sim_linuxcnc_source_m98_mixed_styles_variables.json
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_numeric_oword_main_eof_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_numeric_oword_main_eof_error.json 2>/tmp/cnc_sim_linuxcnc_source_numeric_oword_main_eof_error.err; then
echo "expected linuxcnc_numeric_oword_main_eof_error.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_numeric_oword_sub_illegal_location.ngc \
>/tmp/cnc_sim_linuxcnc_source_numeric_oword_sub_illegal_location.json 2>/tmp/cnc_sim_linuxcnc_source_numeric_oword_sub_illegal_location.err; then
echo "expected linuxcnc_numeric_oword_sub_illegal_location.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_canned_cycle_reject_rotary_followup.ngc \
>/tmp/cnc_sim_linuxcnc_source_canned_cycle_reject_rotary_followup.json 2>/tmp/cnc_sim_linuxcnc_source_canned_cycle_reject_rotary_followup.err; then
echo "expected linuxcnc_canned_cycle_reject_rotary_followup.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_nested_subroutine_definition_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_nested_subroutine_definition_error.json 2>/tmp/cnc_sim_linuxcnc_source_nested_subroutine_definition_error.err; then
echo "expected linuxcnc_nested_subroutine_definition_error.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_ccomp_arcexit_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_ccomp_arcexit_error.json 2>/tmp/cnc_sim_linuxcnc_source_ccomp_arcexit_error.err; then
echo "expected linuxcnc_ccomp_arcexit_error.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_abort_hot_comment.ngc \
>/tmp/cnc_sim_linuxcnc_source_abort_hot_comment.json 2>/tmp/cnc_sim_linuxcnc_source_abort_hot_comment.err; then
echo "expected linuxcnc_abort_hot_comment.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_ccomp_gouging_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_ccomp_gouging_error.json 2>/tmp/cnc_sim_linuxcnc_source_ccomp_gouging_error.err; then
echo "expected linuxcnc_ccomp_gouging_error.ngc to fail" >&2
exit 1
fi
cp "$base_var_file" "$var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_probe_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_probe_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_multi_rotary_probe_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_multi_rotary_probe_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_tool_info_zero_parameter.ngc \
>/tmp/cnc_sim_linuxcnc_source_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_source_dump" tests/gcode/linuxcnc_spindle_tool_info_parameter.ngc \
>/tmp/cnc_sim_linuxcnc_source_spindle_tool_info_parameter.json
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_readonly_numbered_parameter_assign_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_readonly_numbered_parameter_assign_error.json 2>/tmp/cnc_sim_linuxcnc_source_readonly_numbered_parameter_assign_error.err; then
echo "expected linuxcnc_readonly_numbered_parameter_assign_error.ngc to fail" >&2
exit 1
fi
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g28_g30_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g28_g30_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_g28_g30_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_g28_g30_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g92_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g92_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_g92_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_g92_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g52_g92_numbered_interaction.ngc \
>/tmp/cnc_sim_linuxcnc_source_g52_g92_numbered_interaction.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g5x_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g5x_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g59_3_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g59_3_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g59_3_rotary_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g59_3_rotary_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g5x_rotary_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g5x_rotary_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g54_rotary_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_g54_rotary_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_debug_level_parameter.ngc \
>/tmp/cnc_sim_linuxcnc_source_debug_level_parameter.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_m66_result_parameter.ngc \
>/tmp/cnc_sim_linuxcnc_source_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_source_dump" tests/gcode/linuxcnc_tool_offset_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_tool_offset_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_tool_offset_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_tool_offset_numbered_parameters.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_current_position_numbered_parameters.ngc \
>/tmp/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json
cp "$base_var_file" "$var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_persistent_parameters_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_persistent_parameters_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_persistent_parameters_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_persistent_parameters_check.json
rotary_persistent_var_file="$build_dir/rs274ngc-rotary-persistent.var"
: > "$rotary_persistent_var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_persistent_parameters_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_persistent_parameters_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$rotary_persistent_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_rotary_persistent_parameters_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json
g54_persistent_var_file="$build_dir/rs274ngc-g54-persistent.var"
: > "$g54_persistent_var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$g54_persistent_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g54_persistent_parameters_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_g54_persistent_parameters_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$g54_persistent_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g54_persistent_parameters_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_g54_persistent_parameters_check.json
empty_var_file="$build_dir/rs274ngc-empty.var"
: > "$empty_var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$empty_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$empty_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_check.json
existing_user_var_file="$build_dir/rs274ngc-existing-user.var"
printf '5001\t17.000000\n' > "$existing_user_var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$existing_user_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_existing_persistent_parameter_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$existing_user_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_existing_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_existing_persistent_parameter_check.json
boundary_user_var_file="$build_dir/rs274ngc-boundary-user.var"
printf '5001\t17.000000\n5030\t18.000000\n5060\t19.000000\n' > "$boundary_user_var_file"
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$boundary_user_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_boundary_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_boundary_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$boundary_user_var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_user_persistent_parameter_boundary_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_boundary_check.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_volatile_global_parameter_set.ngc \
>/tmp/cnc_sim_linuxcnc_source_volatile_global_parameter_set.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_volatile_global_parameter_check.ngc \
>/tmp/cnc_sim_linuxcnc_source_volatile_global_parameter_check.json
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_arc_center_tolerance_good_imperial.ngc \
>/tmp/cnc_sim_linuxcnc_source_arc_center_tolerance_good_imperial.json
if CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_arc_center_tolerance_bad_metric.ngc \
>/tmp/cnc_sim_linuxcnc_source_arc_center_tolerance_bad_metric.json 2>/tmp/cnc_sim_linuxcnc_source_arc_center_tolerance_bad_metric.err; then
echo "expected linuxcnc_arc_center_tolerance_bad_metric.ngc to fail" >&2
exit 1
fi
if CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_extended_plane_arc_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_extended_plane_arc_error.json 2>/tmp/cnc_sim_linuxcnc_source_extended_plane_arc_error.err; then
echo "expected linuxcnc_extended_plane_arc_error.ngc to fail" >&2
exit 1
fi
if ! grep -q "Cannot do an arc in planes G17.1, G18.1, or G19.1" /tmp/cnc_sim_linuxcnc_source_extended_plane_arc_error.err; then
echo "unexpected linuxcnc_extended_plane_arc_error.ngc error" >&2
cat /tmp/cnc_sim_linuxcnc_source_extended_plane_arc_error.err >&2
exit 1
fi
if CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g62_extended_plane_error.ngc \
>/tmp/cnc_sim_linuxcnc_source_g62_extended_plane_error.json 2>/tmp/cnc_sim_linuxcnc_source_g62_extended_plane_error.err; then
echo "expected linuxcnc_g62_extended_plane_error.ngc to fail" >&2
exit 1
fi
if ! grep -q "one plane must be selected for nurbs: XY, YZ, ZX" /tmp/cnc_sim_linuxcnc_source_g62_extended_plane_error.err; then
echo "unexpected linuxcnc_g62_extended_plane_error.ngc error" >&2
cat /tmp/cnc_sim_linuxcnc_source_g62_extended_plane_error.err >&2
exit 1
fi
CNC_SIM_RS274_FILE_MODE=1 CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_g76only.ngc \
>/tmp/cnc_sim_linuxcnc_source_g76only.json
cp "$base_var_file" "$var_file"
CNC_SIM_RS274_VAR="$var_file" \
"$build_dir/linuxcnc_rs274_source_dump" tests/gcode/linuxcnc_coordinate_offsets.ngc \
@@ -675,6 +917,31 @@ expected_plane_g87_sequence = [
if plane_g87_sequence != expected_plane_g87_sequence:
raise SystemExit(f"unexpected source-linked G19 G87 plane sequence: {plane_g87_sequence!r}")
extended_plane_cycle = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_extended_plane_cycle.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["u"] == 1 and
event["end"]["v"] == 2 and
event["end"]["w"] == -1
for event in extended_plane_cycle
):
raise SystemExit("missing source-linked G17.1 G81 feed along W depth axis")
if not any(
event["type"] == "rapid" and
event["line"] == 3 and
event["end"]["u"] == 1 and
event["end"]["v"] == 2 and
event["end"]["w"] == 1
for event in extended_plane_cycle
):
raise SystemExit("missing source-linked G17.1 G81 retract to W R plane")
if not any(
event["type"] == "set-plane" and event["line"] == 7 and event["plane"] == 171
for event in extended_plane_cycle
):
raise SystemExit("missing source-linked cutter-comp-active G17.1 plane selection")
extended_cycle = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_canned_cycles_extended.json").read_text())
if not any(
event["type"] == "linear-feed" and
@@ -1112,6 +1379,544 @@ expected_ini_named_moves = [(3, 3.25, 0), (5, 3.25, 1)]
if ini_named_moves != expected_ini_named_moves:
raise SystemExit(f"unexpected source-linked INI named parameter motions: {ini_named_moves!r}")
readonly_named = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_readonly_named_parameters_extra.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in readonly_named
):
raise SystemExit("missing source-linked #<_spindle_rpm_mode> / #<_spindle_css_mode> G97 branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 8 and
event["end"]["y"] == 1
for event in readonly_named
):
raise SystemExit("missing source-linked #<_ccomp> left-compensation branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 13 and
event["end"]["x"] == 2
for event in readonly_named
):
raise SystemExit("missing source-linked #<_ccomp> right-compensation branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 18 and
event["end"]["a"] == 1
for event in readonly_named
):
raise SystemExit("missing source-linked #<_spindle_rpm_mode> / #<_spindle_css_mode> G96 branch motion")
value_returned = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_value_returned.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 11 and
event["end"]["x"] == 1
for event in value_returned
):
raise SystemExit("missing source-linked initial #<_value_returned> clear branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 15 and
event["end"]["y"] == 1
for event in value_returned
):
raise SystemExit("missing source-linked #<_value_returned> endsub[value] branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 19 and
event["end"]["z"] == 1
for event in value_returned
):
raise SystemExit("missing source-linked #<_value_returned> cleared-procedure branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 23 and
event["end"]["a"] == 1
for event in value_returned
):
raise SystemExit("missing source-linked #<_value_returned> return[value] branch motion")
call_level = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_call_level.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 15 and
event["end"]["x"] == 1
for event in call_level
):
raise SystemExit("missing source-linked main-program #<_call_level> branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 8 and
event["end"]["y"] == 1
for event in call_level
):
raise SystemExit("missing source-linked outer O-word #<_call_level> branch motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["z"] == 1
for event in call_level
):
raise SystemExit("missing source-linked inner O-word #<_call_level>/#<_remap_level> branch motion")
exists_word_value = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_exists_word_value.json").read_text())
if not any(
event["type"] == "rapid" and
event["line"] == 2 and
event["end"]["x"] == 1 and
event["end"]["y"] == 0 and
event["end"]["z"] == 1 and
event["end"]["a"] == 0
for event in exists_word_value
):
raise SystemExit("missing source-linked direct EXISTS word-value motion")
if not any(
event["type"] == "rapid" and
event["line"] == 5 and
event["end"]["x"] == 1 and
event["end"]["y"] == 0 and
event["end"]["z"] == 0
for event in exists_word_value
):
raise SystemExit("missing source-linked indirect EXISTS word-value motion")
lowercase_numeric_oword = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_lowercase_numeric_oword.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 9 and
event["end"]["x"] == 6
for event in lowercase_numeric_oword
):
raise SystemExit("missing source-linked lowercase numeric O-word return[value] motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 11 and
event["end"]["y"] == 7
for event in lowercase_numeric_oword
):
raise SystemExit("missing source-linked lowercase numeric O-word endsub[value] motion")
parameter_expression_assignment = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_parameter_expression_assignment.json").read_text())
if not any(
event["type"] == "rapid" and
event["line"] == 5 and
event["end"]["x"] == 2 and
event["end"]["y"] == 3 and
event["end"]["z"] == 4
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked parameter expression assignment motion")
if not any(
event["type"] == "rapid" and
event["line"] == 8 and
event["end"]["a"] == 7
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked parameter reference expression-index motion")
if not any(
event["type"] == "rapid" and
event["line"] == 9 and
event["end"]["b"] == 5
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked word parameter unary expression-index motion")
if not any(
event["type"] == "rapid" and
event["line"] == 11 and
event["end"]["c"] == 5
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked word parameter signed expression-index motion")
if not any(
event["type"] == "rapid" and
event["line"] == 13 and
event["end"]["u"] == 6
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked parameter assignment signed expression-index motion")
if not any(
event["type"] == "rapid" and
event["line"] == 14 and
event["end"]["v"] == 6
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked whitespace-insensitive parameter expression-index motion")
if not any(
event["type"] == "rapid" and
event["line"] == 15 and
event["end"]["w"] == 3
for event in parameter_expression_assignment
):
raise SystemExit("missing source-linked whitespace-insensitive word value motion")
word_bracket_whitespace = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_word_bracket_whitespace.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 3
for event in word_bracket_whitespace
):
raise SystemExit("missing source-linked spaced bracket word X motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["y"] == 3
for event in word_bracket_whitespace
):
raise SystemExit("missing source-linked plus-spaced bracket word Y motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == -3
for event in word_bracket_whitespace
):
raise SystemExit("missing source-linked minus-spaced bracket word X motion")
m98_mixed_styles = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_m98_mixed_styles_variables.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 13.01 and
event["end"]["y"] == 13.3 and
event["end"]["z"] == 13.31
for event in m98_mixed_styles
):
raise SystemExit("missing source-linked M98 mixed-style global-parameter motion")
if not any(
event["type"] == "linear-feed" and
event["line"] == 10 and
event["end"]["a"] == 42.01 and
event["end"]["b"] == 42.3 and
event["end"]["c"] == 13.31
for event in m98_mixed_styles
):
raise SystemExit("missing source-linked O-word mixed-style local-parameter motion")
arc_center_tolerance_good_imperial = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_arc_center_tolerance_good_imperial.json").read_text())
if not any(
event["type"] == "arc-feed" and
event["line"] == 4 and
event["end"]["x"] == 5
for event in arc_center_tolerance_good_imperial
):
raise SystemExit("missing source-linked small imperial center-format arc within tolerance")
g76only = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g76only.json").read_text())
if not any(
event["type"] == "comment" and
event["line"] == 8 and
event["reserved"] == 3301
for event in g76only
):
raise SystemExit("missing source-linked G76 speed-feed sync start in g76only fixture")
if not any(
event["type"] == "program-end" and
event["line"] == 13
for event in g76only
):
raise SystemExit("missing source-linked G76-only program end")
numbered_parameters = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_numbered_parameters.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 6 and
event["end"]["x"] == 1
for event in numbered_parameters
):
raise SystemExit("missing source-linked 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 source-linked numbered probe parameter branch motion")
rotary_probe_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_rotary_probe_numbered_parameters.json").read_text())
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 source-linked numbered rotary probe parameter branch motion")
multi_rotary_probe_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_multi_rotary_probe_numbered_parameters.json").read_text())
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 source-linked numbered multi-axis rotary probe parameter branch motion")
tool_info_zero_parameter = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_tool_info_zero_parameter.json").read_text())
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 source-linked zeroed #5400/#5410/#5411/#5412/#5413 branch motion")
spindle_tool_info_parameter = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_spindle_tool_info_parameter.json").read_text())
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 source-linked preloaded spindle-tool #5400/#5410/#5411/#5412/#5413 branch motion")
g28_g30_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g28_g30_numbered_parameters.json").read_text())
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 source-linked G28/G30 numbered parameter branch motion")
rotary_g28_g30_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_rotary_g28_g30_numbered_parameters.json").read_text())
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 source-linked rotary G28/G30 numbered parameter branch motion")
g92_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g92_numbered_parameters.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in g92_numbered
):
raise SystemExit("missing source-linked G92 numbered parameter branch motion")
rotary_g92_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_rotary_g92_numbered_parameters.json").read_text())
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 source-linked rotary G92 numbered parameter branch motion")
g52_g92_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g52_g92_numbered_interaction.json").read_text())
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 source-linked G52 X0 Y0 #5210/#5211/#5212 branch motion")
g5x_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g5x_numbered_parameters.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g5x_numbered
):
raise SystemExit("missing source-linked G5X numbered parameter branch motion")
g593_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g59_3_numbered_parameters.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in g593_numbered
):
raise SystemExit("missing source-linked G59.3 numbered parameter branch motion")
g593_rotary_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g59_3_rotary_numbered_parameters.json").read_text())
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 source-linked rotary G59.3 numbered parameter branch motion")
g5x_rotary_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g5x_rotary_numbered_parameters.json").read_text())
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 source-linked rotary G5X numbered parameter branch motion")
g54_rotary_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g54_rotary_numbered_parameters.json").read_text())
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 source-linked rotary G54 numbered parameter branch motion")
debug_level_parameter = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_debug_level_parameter.json").read_text())
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 source-linked #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 source-linked #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 source-linked generic comment event for DEBUG hot comment")
m66_result_parameter = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_m66_result_parameter.json").read_text())
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 source-linked #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 source-linked #5399 analog M66 result branch motion")
tool_offset_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_tool_offset_numbered_parameters.json").read_text())
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 source-linked numbered tool-offset/current-position parameter branch motion")
rotary_tool_offset_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_rotary_tool_offset_numbered_parameters.json").read_text())
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 source-linked numbered rotary tool-offset/current-position parameter branch motion")
current_position_numbered = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json").read_text())
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 source-linked numbered current-position parameter branch motion")
persistent_parameters_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_persistent_parameters_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in persistent_parameters_check
):
raise SystemExit("missing source-linked persistent parameter reload branch motion")
rotary_persistent_parameters_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 5 and
event["end"]["x"] == 1
for event in rotary_persistent_parameters_check
):
raise SystemExit("missing source-linked rotary persistent parameter reload branch motion")
g54_persistent_parameters_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_g54_persistent_parameters_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 4 and
event["end"]["x"] == 1
for event in g54_persistent_parameters_check
):
raise SystemExit("missing source-linked G54 persistent parameter reload branch motion")
user_persistent_parameter_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 1
for event in user_persistent_parameter_check
):
raise SystemExit("missing source-linked empty-var #5001 non-persistence branch motion")
user_existing_persistent_parameter_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_user_existing_persistent_parameter_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 1
for event in user_existing_persistent_parameter_check
):
raise SystemExit("missing source-linked existing-var #5001 persistence branch motion")
user_persistent_parameter_boundary_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_boundary_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 1
for event in user_persistent_parameter_boundary_check
):
raise SystemExit("missing source-linked #5000/#5001/#5030/#5060 persistence boundary branch motion")
volatile_global_parameter_check = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_volatile_global_parameter_check.json").read_text())
if not any(
event["type"] == "linear-feed" and
event["line"] == 3 and
event["end"]["x"] == 1
for event in volatile_global_parameter_check
):
raise SystemExit("missing source-linked volatile global #31 reset branch motion")
coords = json.loads(Path("/tmp/cnc_sim_linuxcnc_source_coordinate_offsets.json").read_text())
g5x = [event for event in coords if event["type"] == "set-g5x-offset"]
g92 = [event for event in coords if event["type"] == "set-g92-offset"]
@@ -1245,6 +2050,7 @@ echo "dumped /tmp/cnc_sim_linuxcnc_source_dynamic_tool_length.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycle.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycles_extended.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_canned_cycle_planes.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_extended_plane_cycle.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_arc_planes.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_arc_distance_modes.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_predefined_positions.json"
@@ -1258,6 +2064,48 @@ echo "dumped /tmp/cnc_sim_linuxcnc_source_named_parameter_exists.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_indexed_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_named_parameter_normalization.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_ini_named_parameter.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_readonly_named_parameters_extra.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_value_returned.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_call_level.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_exists_word_value.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_lowercase_numeric_oword.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_parameter_expression_assignment.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_word_bracket_whitespace.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_m98_mixed_styles_variables.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_arc_center_tolerance_good_imperial.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g76only.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_probe_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_multi_rotary_probe_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_tool_info_zero_parameter.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_spindle_tool_info_parameter.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g28_g30_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_g28_g30_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g92_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_g92_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g52_g92_numbered_interaction.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g5x_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g59_3_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g59_3_rotary_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g5x_rotary_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g54_rotary_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_debug_level_parameter.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_m66_result_parameter.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_tool_offset_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_tool_offset_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_current_position_numbered_parameters.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_persistent_parameters_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_persistent_parameters_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_persistent_parameters_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_rotary_persistent_parameters_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g54_persistent_parameters_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_g54_persistent_parameters_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_existing_persistent_parameter_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_existing_persistent_parameter_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_boundary_set.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_user_persistent_parameter_boundary_check.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_offsets.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_l20.json"
echo "dumped /tmp/cnc_sim_linuxcnc_source_coordinate_p0.json"

View File

@@ -0,0 +1,9 @@
#42 = 0
#<named> = 4711
O100 while [#42 LT 100]
O200 if [#42 EQ 20]
(abort, MixedCase param42=#42 named=#<named>)
O200 endif
#42 = [#42 + 1]
O100 endwhile
M2

View File

@@ -0,0 +1,4 @@
G21
F1
G0 X0 Y0 Z0
G2 X50.00 Y0 I[25.00 - [0.0101 * SQRT[2]]]

View File

@@ -0,0 +1,5 @@
G20
F1
G0 X0 Y0 Z0
G2 X5.000 Y0 I[2.500 - [0.00099 * SQRT[2]]]
M2

View File

@@ -0,0 +1,18 @@
O<inner> sub
O10 if [#<_call_level> EQ 2 AND #<_remap_level> EQ 0]
G1 Z1
O10 endif
O<inner> endsub
O<outer> sub
O20 if [#<_call_level> EQ 1 AND #<_remap_level> EQ 0]
G1 Y1
O20 endif
O<inner> call
O<outer> endsub
G21 G90
F100
O30 if [#<_call_level> EQ 0 AND #<_remap_level> EQ 0]
G1 X1
O30 endif
O<outer> call
M30

View File

@@ -0,0 +1,2 @@
G81 X0 Y0 Z-1 R0 F12
A90

View File

@@ -0,0 +1,6 @@
G0 X0 Y0 Z0
G41.1 D.25
G1 X1 F1
G1 X2
G40
G2 I1

View File

@@ -0,0 +1,8 @@
G0 X0 Y0 Z0
G41.1 D.25
G1 X1 F1
G1 X2
G1 Y.1
G1 X1
G40
G1 X2

View File

@@ -0,0 +1,7 @@
G21 G90 G17
F100
G1 X1 Y2 Z3 A4 B5 C6 U7 V8 W9
O10 if [[#5420 EQ 1] AND [#5421 EQ 2] AND [#5422 EQ 3] AND [#5423 EQ 4] AND [#5424 EQ 5] AND [#5425 EQ 6] AND [#5426 EQ 7] AND [#5427 EQ 8] AND [#5428 EQ 9]]
G1 X10
O10 endif
M30

View File

@@ -0,0 +1,11 @@
#5599 = 1
O10 if [#5599 EQ 1]
G1 X1 F100
O10 endif
(DEBUG,one)
#5599 = 0
O20 if [#5599 EQ 0]
G1 Y1
O20 endif
(DEBUG,two)
M30

View File

@@ -0,0 +1,6 @@
#<a> = 999
G0 X EXISTS[#1] Y EXISTS[#99999] Z EXISTS[#<a>] A EXISTS[#<b>]
#1 = 2
#2 = 99999
G0 X EXISTS[##1] Y EXISTS[##2] Z EXISTS[###1]
M30

View File

@@ -0,0 +1,3 @@
G21 G90 G17.1
F100
G2 U1 V0 R1

View File

@@ -0,0 +1,9 @@
G21 G90 G17.1
F100
G81 U1 V2 W-1 R1
G80
G17
G41.1 D0.25
G17.1
G40
M2

View File

@@ -0,0 +1,9 @@
G21 G90 G17
G0 X1 Y2 Z3
G28.1
G0 X4 Y5 Z6
G30.1
O10 if [[#5161 EQ 1] AND [#5162 EQ 2] AND [#5163 EQ 3] AND [#5181 EQ 4] AND [#5182 EQ 5] AND [#5183 EQ 6]]
G1 X10 F100
O10 endif
M30

View File

@@ -0,0 +1,8 @@
G20
F100
G52 X2 Y3
G52 X0 Y0
O10 if [[#5210 EQ 1] AND [#5211 EQ 0] AND [#5212 EQ 0]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
F100
O10 if [[#5220 EQ 1] AND [#5221 EQ 1] AND [#5222 EQ 2] AND [#5223 EQ 3] AND [#5224 EQ 4] AND [#5225 EQ 5] AND [#5226 EQ 6] AND [#5227 EQ 7] AND [#5228 EQ 8] AND [#5229 EQ 9] AND [#5230 EQ 11]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,3 @@
G21 G90 G17
G10 L2 P1 X1 Y2 Z3 A4 B5 C6 U7 V8 W9 R11
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
G10 L2 P1 X7 Y8 Z9 A1 B2 C3 U4 V5 W6 R20
O10 if [[#5220 EQ 1] AND [#5221 EQ 7] AND [#5222 EQ 8] AND [#5223 EQ 9] AND [#5224 EQ 1] AND [#5225 EQ 2] AND [#5226 EQ 3] AND [#5227 EQ 4] AND [#5228 EQ 5] AND [#5229 EQ 6] AND [#5230 EQ 20]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
G10 L2 P9 X7 Y8 Z9 R15
G59.3
O10 if [[#5220 EQ 9] AND [#5381 EQ 7] AND [#5382 EQ 8] AND [#5383 EQ 9] AND [#5390 EQ 15]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
G10 L2 P9 A1 B2 C3 U4 V5 W6 R15
G59.3
O10 if [[#5384 EQ 1] AND [#5385 EQ 2] AND [#5386 EQ 3] AND [#5387 EQ 4] AND [#5388 EQ 5] AND [#5389 EQ 6] AND [#5390 EQ 15]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
G10 L2 P2 X12.5 Y-3 Z4 R30
G55
O10 if [[#5220 EQ 2] AND [#5241 EQ 12.5] AND [#5242 EQ -3] AND [#5243 EQ 4] AND [#5250 EQ 30]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
G10 L2 P2 A1 B2 C3 U4 V5 W6 R30
G55
O10 if [[#5244 EQ 1] AND [#5245 EQ 2] AND [#5246 EQ 3] AND [#5247 EQ 4] AND [#5248 EQ 5] AND [#5249 EQ 6] AND [#5250 EQ 30]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,3 @@
G21 G90 G17.1
F100
G6.2 U1 V1 P3 Q1

View File

@@ -0,0 +1,13 @@
G20 G64 G18
T4 M6
G43
S800 M3
G4 P1
G0 Z.2 X.2
G76 P.05 Z-.5 I-.075 J.008 K.045 H3 R2.0 Q29.5 E.05 L2
G0 X.5
G0 Z0
M5
M2

View File

@@ -0,0 +1,6 @@
G21 G90 G17
G92 X1 Y2 Z3
O10 if [[#5210 EQ 1] AND [#5211 EQ -1] AND [#5212 EQ -2] AND [#5213 EQ -3]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,2 @@
#1 = EXP[1000]
G1 X#1 F100

View File

@@ -0,0 +1,12 @@
o100 sub
o10 if [#1 GT 0]
o10 return [#1 * 2]
o10 endif
o100 endsub [7]
g21 g90
f100
o100 call [3]
g1 x#<_value>
o100 call [0]
g1 y#<_value>
m30

View File

@@ -0,0 +1,11 @@
#5399 = 1
M66 P0 L0
O10 if [#5399 EQ 1]
G1 X1 F100
O10 endif
#5399 = 42.13
M66 E0 L0
O20 if [#5399 EQ 42.13]
G1 Y1
O20 endif
M30

View File

@@ -0,0 +1,23 @@
#1 = 42.01
#30 = 42.30
#31 = 42.31
M98 P1
G1 X#1 Y#30 Z#31 F100
#1 = 42.01
#30 = 42.30
#31 = 42.31
O2 call
G1 A#1 B#30 C#31
M30
O1
#1 = 13.01
#30 = 13.30
#31 = 13.31
M99
O2 sub
#1 = 13.01
#30 = 13.30
#31 = 13.31
O2 endsub

View File

@@ -0,0 +1,7 @@
G21 G90 G17
F100
G38.2 A5 B6 C7 U8 V9 W10
O10 if [[#5064 EQ 5] AND [#5065 EQ 6] AND [#5066 EQ 7] AND [#5067 EQ 8] AND [#5068 EQ 9] AND [#5069 EQ 10] AND [#5070 EQ 1]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,2 @@
#1 = SQRT[-1]
G1 X#1 F100

View File

@@ -0,0 +1,5 @@
O<nested> sub
O100 sub
O100 endsub
O<nested> endsub
M2

View File

@@ -0,0 +1,12 @@
G21 G90 G17
T1 M6
G43 H1
F100
O10 if [[#5400 EQ 0] AND [#5403 EQ 12.5] AND [#5410 EQ 0] AND [#5411 EQ 0] AND [#5412 EQ 0] AND [#5413 EQ 0] AND [#5422 EQ -12.5]]
G1 X1
O10 endif
G38.2 X5 Y0 Z-1
O20 if [[#5061 EQ 5] AND [#5062 EQ 0] AND [#5063 EQ -1] AND [#5064 EQ 0] AND [#5065 EQ 0] AND [#5066 EQ 0] AND [#5067 EQ 0] AND [#5068 EQ 0] AND [#5069 EQ 0] AND [#5070 EQ 1]]
G1 Y1
O20 endif
M30

View File

@@ -0,0 +1,7 @@
O2 sub
G0 Z3
O2 endsub
O1
G0 X1 Y2
O2 call

View File

@@ -0,0 +1,7 @@
O1
G0 X1 Y2
O2 call
O2 sub
G0 Z3
O2 endsub

View File

@@ -0,0 +1,16 @@
G20
#<a> = 2
#atan[1]/[1] = 3
#3 = 4
G0 X#<a> Y#45 Z#3
#1 = 5
#6 = [#ABS[-1] + 2]
G0 A#6
G0 B#ABS[-1]
#2 = -1
G0 C#-#2
#-#2 = 6
G0 U#1
G0 V# ABS[-1]
G 0 W 3
M2

View File

@@ -0,0 +1,8 @@
G21 G90 G17
F100
O10 if [[#5161 EQ 1] AND [#5162 EQ 2] AND [#5163 EQ 3] AND [#5210 EQ 1] AND [#5211 LT -12.1] AND [#5211 GT -12.3] AND [#5212 LT -7.1] AND [#5212 GT -7.3] AND [#5213 EQ -12] AND [#5220 EQ 1]]
O11 if [[#5241 EQ 7] AND [#5242 EQ 8] AND [#5243 EQ 9] AND [#5250 EQ 30]]
G1 X1
O11 endif
O10 endif
M30

View File

@@ -0,0 +1,8 @@
G21 G90 G17
#5001 = 23
G0 X1 Y2 Z3
G28.1
G10 L2 P2 X7 Y8 Z9 R30
G55
G92 X4 Y5 Z6
M30

View File

@@ -0,0 +1 @@
#<_line> = 7

View File

@@ -0,0 +1,20 @@
G21 G90 G17
G97 S1000
O10 if [#<_spindle_rpm_mode> EQ 1 AND #<_spindle_css_mode> EQ 0 AND #<_ccomp> EQ 400]
G1 X1 F100
O10 endif
G41.1 D0.25
O20 if [#<_ccomp> EQ 410]
G1 Y1
O20 endif
G40
G42.1 D0.25
O30 if [#<_ccomp> EQ 420]
G1 X2
O30 endif
G40
G96 S120 D2500
O40 if [#<_spindle_rpm_mode> EQ 0 AND #<_spindle_css_mode> EQ 1]
G1 A1
O40 endif
M30

View File

@@ -0,0 +1 @@
#5400 = 1

View File

@@ -0,0 +1,9 @@
G21 G90 G17
G0 A1 B2 C3 U4 V5 W6
G28.1
G0 A7 B8 C9 U10 V11 W12
G30.1
O10 if [[#5164 EQ 1] AND [#5165 EQ 2] AND [#5166 EQ 3] AND [#5167 EQ 4] AND [#5168 EQ 5] AND [#5169 EQ 6] AND [#5184 EQ 7] AND [#5185 EQ 8] AND [#5186 EQ 9] AND [#5187 EQ 10] AND [#5188 EQ 11] AND [#5189 EQ 12]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
G92 A1 B2 C3 U4 V5 W6
O10 if [[#5214 EQ -1] AND [#5215 EQ -2] AND [#5216 EQ -3] AND [#5217 EQ -4] AND [#5218 EQ -5] AND [#5219 EQ -6]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,8 @@
G21 G90 G17
F100
O10 if [[#5164 EQ 1] AND [#5165 EQ 2] AND [#5166 EQ 3] AND [#5167 EQ 4] AND [#5168 EQ 5] AND [#5169 EQ 6] AND [#5184 EQ 7] AND [#5185 EQ 8] AND [#5186 EQ 9] AND [#5187 EQ 10] AND [#5188 EQ 11] AND [#5189 EQ 12]]
O11 if [[#5384 EQ 13] AND [#5385 EQ 14] AND [#5386 EQ 15] AND [#5387 EQ 16] AND [#5388 EQ 17] AND [#5389 EQ 18] AND [#5390 EQ 19]]
G1 X1
O11 endif
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
G0 A1 B2 C3 U4 V5 W6
G28.1
G0 A7 B8 C9 U10 V11 W12
G30.1
G10 L2 P9 A13 B14 C15 U16 V17 W18 R19
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
F100
G38.2 A5
O10 if [[#5064 EQ 5] AND [#5070 EQ 1]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
G43.1 A1 B2 C3 U4 V5 W6
O10 if [[#5404 EQ 1] AND [#5405 EQ 2] AND [#5406 EQ 3] AND [#5407 EQ 4] AND [#5408 EQ 5] AND [#5409 EQ 6] AND [#5423 EQ -1] AND [#5424 EQ -2] AND [#5425 EQ -3] AND [#5426 EQ -4] AND [#5427 EQ -5] AND [#5428 EQ -6]]
G1 X1 F100
O10 endif
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
F100
O10 if [[#5400 EQ 1] AND [#5410 EQ 6] AND [#5411 EQ 12] AND [#5412 EQ 34] AND [#5413 EQ 5]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,7 @@
G21 G90 G17
M61 Q1
F100
O10 if [[#5400 EQ 0] AND [#5410 EQ 0] AND [#5411 EQ 0] AND [#5412 EQ 0] AND [#5413 EQ 0]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,6 @@
G21 G90 G17
G43.1 X1 Y0.5 Z2
O10 if [[#5401 EQ 1] AND [#5402 EQ 0.5] AND [#5403 EQ 2] AND [#5420 EQ -1] AND [#5421 EQ -0.5] AND [#5422 EQ -2]]
G1 Y1 F100
O10 endif
M30

View File

@@ -0,0 +1,5 @@
F100
O10 if [[#5000 EQ 0] AND [#5001 EQ 22] AND [#5030 EQ 32] AND [#5060 EQ 33]]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,5 @@
#5000 = 11
#5001 = 22
#5030 = 32
#5060 = 33
M30

View File

@@ -0,0 +1,5 @@
F100
O10 if [#5001 EQ 0]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,5 @@
F100
O10 if [#5001 EQ 23]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,2 @@
#5001 = 23
M30

View File

@@ -0,0 +1,25 @@
O<f1> sub
O<f1> endsub [4711]
O<f2> sub
O100 return [4712]
O<f2> endsub
O<proc> sub
O<proc> endsub
G21 G90
F100
O10 if [#<_value> EQ 0 AND #<_value_returned> EQ 0]
G1 X1
O10 endif
O<f1> call
O20 if [#<_value> EQ 4711 AND #<_value_returned> EQ 1]
G1 Y1
O20 endif
O<proc> call
O30 if [#<_value> EQ 0 AND #<_value_returned> EQ 0]
G1 Z1
O30 endif
O<f2> call
O40 if [#<_value> EQ 4712 AND #<_value_returned> EQ 1]
G1 A1
O40 endif
M30

View File

@@ -0,0 +1,5 @@
F100
O10 if [#31 EQ 0]
G1 X1
O10 endif
M30

View File

@@ -0,0 +1,2 @@
#31 = 7
M30

View File

@@ -0,0 +1,6 @@
G21 G90
F100
G1 X [1 + 2]
G1 Y + [1 + 2]
G1 X- [1 + 2]
M2