按推荐建议,继续执行

结论:已接入 LinuxCNC NURBS G5 canonical 边界事件记录,并新增 G5.2、G5.3 回归 fixture;原生 probe 验证通过。
This commit is contained in:
2026-06-07 16:38:40 +08:00
parent 58d627ab6e
commit 5e31847d6c
4 changed files with 34 additions and 1 deletions

View File

@@ -403,6 +403,12 @@ Current verified progress:
`tests/fixtures/gcode/threading_sync.ngc` and
`tests/fixtures/canon/threading_sync.events` pin `G33` spindle-synchronized
straight feed and `G33.1` rigid tap behavior.
- `runtime/core/linuxcnc_wrap/linuxcnc_interp_minimal_runtime.cpp` now records
NURBS G5 canonical boundary calls emitted by vendored
`interp_convert.cc::convert_nurbs()`: `NURBS_G5_FEED`.
`tests/fixtures/gcode/nurbs_g5_semantics.ngc` and
`tests/fixtures/canon/nurbs_g5_semantics.events` pin `G5.2` control-point
collection and `G5.3` NURBS feed emission.
- `tests/fixtures/gcode_errors/g1_zero_feed.ngc` and
`tests/fixtures/canon_errors/g1_zero_feed.expected` pin the negative
`G1` zero-feed case. The source basis is LinuxCNC

View File

@@ -452,7 +452,25 @@ int GET_EXTERNAL_AXIS_MASK() { return 7; }
int GET_EXTERNAL_OFFSET_APPLIED() { return 0; }
EmcPose GET_EXTERNAL_OFFSETS() { return {{0, 0, 0}, 0, 0, 0, 0, 0, 0}; }
void NURBS_G5_FEED(int, const std::vector<NURBS_CONTROL_POINT> &, unsigned int, CANON_PLANE) {}
void NURBS_G5_FEED(int lineno,
const std::vector<NURBS_CONTROL_POINT> &control_points,
unsigned int order,
CANON_PLANE plane)
{
std::ostringstream oss;
oss << "NURBS_G5_FEED line=" << lineno
<< " order=" << order
<< " plane=" << static_cast<int>(plane)
<< " points=" << control_points.size();
for (std::size_t index = 0; index < control_points.size(); ++index) {
const auto &point = control_points[index];
oss << " p" << index
<< "=(" << point.NURBS_X
<< "," << point.NURBS_Y
<< "," << point.NURBS_W << ")";
}
standalone::push_canon_event(oss.str());
}
void NURBS_G6_FEED(int, const std::vector<NURBS_G6_CONTROL_POINT> &, unsigned int, double, int, CANON_PLANE) {}
void COMMENT(const char *s)

View File

@@ -0,0 +1,4 @@
canon_event=SELECT_PLANE plane=1
canon_event=STRAIGHT_TRAVERSE line=1 x=0 y=0 z=0 a=0 b=0 c=0 u=0 v=0 w=0
canon_event=SET_FEED_RATE rate=40
canon_event=NURBS_G5_FEED line=5 order=3 plane=1 points=3 p0=(0,0,1) p1=(1,0,1) p2=(1,1,1)

View File

@@ -0,0 +1,5 @@
G90 G17 G0 X0 Y0 Z0
F40
G5.2 X1 Y0 P1
G5.2 X1 Y1 P1
G5.3