This commit is contained in:
2026-09-15 01:12:50 +08:00
parent 2db889ad89
commit 1a75503105
99 changed files with 4168 additions and 726 deletions
@@ -106,6 +106,10 @@ they are the fastest way to find out what a run actually did.</p>
<td>physics is on and steps touched, but no touched step carries a physics brief</td>
</tr>
<tr>
<td><code>Play-RapidCut--Detected</code></td>
<td>a rapid traverse (G00) removed stock — one warning per NC line, anchored on the line's first cutting step, with the line's removed volume and largest cutting depth; the line total is compared against the project's <code>RapidCutVolumeThreshold_mm3</code> (<code>MachiningActRunnerConfig</code>, default 0: any contact); with collision detection on, contact with the spindle stopped is reported there instead</td>
</tr>
<tr>
<td><code>Tool-FluteCount--Zero</code></td>
<td>physics is on and a milling cutter resolves to zero flutes</td>
</tr>
@@ -228,6 +228,20 @@ seed pollution.</li>
<li><a class="xref" href="../../api/Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a> steps by <strong>euclidean</strong> tip travel instead of the
largest per-axis component, so <code>LinearResolution_mm</code> now caps actual tool-tip travel per step and a
diagonal move produces up to √3× more steps at the same setting.</li>
<li><strong>Cutterworkpiece engagement no longer depends on how the contact surface was tiled.</strong> The scan
that turns a step's contact contours into the engaged angle ranges of
<a class="xref" href="../../api/Hi.Milling.Engagements.LayerMillingEngagement.html">LayerMillingEngagement</a> switched to a bounding-box approximation on
dense steps, could pull a merged range back when a shorter slice nested inside it, started bottom
rings the floor never reached, and read the winding of each triangle — so the same cut produced a
different engagement, and therefore different cutting forces and temperatures, depending on how
many polygons the geometry kernel happened to cut the contact surface into. Every triangle is now
scanned exactly and orientation-free; a cylinder wall and a flat floor sector with known engagement
arcs reproduce them to 1e-9 rad at four tessellations, and the managed and native paths stay
bit-identical. Re-running an existing program moves the forces on most engaged steps (5895% of
them on the bench fixtures); the largest moves are floors that used to register as empty — the
whole bottom disc dropped out — and side ranges that were fragmented into pieces separated by
phantom 1° gaps. Coefficient sets trained before this change embed the old engagement of their
training program; retrain on a replay if that fit matters.</li>
<li>The SoftNc pipeline is the default engine.</li>
<li>Executed <code>SyntaxPiece</code>s freeze to UTF-8 (below), so their <code>JsonObject</code> is a fresh read-only snapshot
per call rather than a retained live graph.</li>