This commit is contained in:
2026-09-16 00:00:49 +08:00
parent 1a75503105
commit bfa3106a69
60 changed files with 696 additions and 268 deletions
@@ -87,6 +87,113 @@
<article data-uid="">
<h1 id="release-note">Release Note</h1>
<h2 id="hinc-packages-version-3226">HiNc Packages Version 3.2.26</h2>
<p>Rotary-axis correctness on SoftNc, cutting forces that no longer depend on how the geometry kernel
tiled the contact surface, and a process that survives a host without OpenGL. The 3.1.175 → 3.2 line
jump is the 3.2.7 entry below; the long form is still
<a href="upgrading-to-3.2/index.html">Upgrading from 3.1.175 to 3.2</a>.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p><strong>Adoption status.</strong> Verification is still in progress across most areas.</p>
<p><strong>Do not put 3.2 NC optimization into production.</strong> It is not finished on this line.
Work that depends on optimization should stay on the 3.1 line, serviced as
<code>3.1.175.&lt;patch&gt;</code>. The Blazor front end tracks the 3.2 packages, so it is not a way
to stay on the 3.1 behaviour.</p>
<p>The 3.2.24 hold on SoftNc canned cycles that index a rotary axis is <strong>lifted</strong> — see the
first entry below.</p>
</div>
<ul>
<li><strong>SoftNc canned cycles take rotary axis words.</strong> A G81–G89 repeat block carrying an A / B / C
word indexes the table and drills again — the standard bolt-circle shape — where 3.2.24 either
skipped the hole or drilled it at the previous angle: a rotary-only repeat fires the cycle, a
mixed block pre-positions XYZ and the table in one simultaneous move before the strokes, and
under <code>G68.2</code> without RTCP the feature frame stays pinned in machine space so the hole stays put
while the workpiece turns. Under <code>G91</code> only the words the block itself spoke are increments, so
an X-pitch repeat no longer doubles Y. Hole bottoms match the HardNc replay of a customer's
bolt-circle program to 0.000 mm on all twelve C-indexed blocks, and setting
<a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EnableSoftNcRunner">EnableSoftNcRunner</a> <code>false</code> is no longer needed for
such programs. See
<a href="upgrading-to-3.2/brand-nc-language-coverage.html#fanuc-and-iso-common">Brand NC language coverage</a>
and <a href="../technique/nc-dialects/controller-iso.html#canned-cycles">ISO core</a></li>
<li><strong>A rotary word under modal <code>G91</code> is an increment on SoftNc.</strong> <code>G91 … C20.</code> followed by <code>C20.</code>
leaves the table at 40, not 20; a per-word directive (<code>C=AC(90)</code>, <code>ACP</code> / <code>ACN</code>, <code>IC()</code>) still
wins over the modal state, and a spoken <code>G91 B270.</code> stays a +270° traverse instead of folding to
−90°. A <code>G91 G28</code> rotary intermediate anchors on the previous modal angle (<code>G91 G28 C10.</code> from
C90 passes through 100, then returns home) instead of on zero. HardNc keeps its documented
absolute reading of a rotary word under <code>G91</code> and warns. The programmed deltas are recorded on
the block in <a class="xref" href="../api/Hi.NcParsers.Keywords.IncrementalWords.html">IncrementalWords</a>, beside the
<a class="xref" href="../api/Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a> the block spoke. See
<a href="upgrading-to-3.2/results-that-change-on-upgrade.html">Results that change on upgrade</a></li>
<li><strong>Rotary IK no longer reports failure from a pole seed.</strong> Every solve attempt now runs its
coarse stage and its polish, so a small tilt with a large azimuth that used to run out of
iterations a few milliradians short — and was then refused by <code>G53.1</code>, leaving the table at
A = C = 0 with the tilt still active and the whole path rotated off the part — solves to
1e-8 rad. On a Fanuc IJK grid from the pole seed, 54 / 69 failures per A/C chain become 0; on a
CL program 44 dropped endpoints of 536 become 0. The happy path is unchanged bit for bit; only a
failed attempt pays one extra polish</li>
<li><strong>Rotary travel picks the reachable IK branch.</strong> When the nearest solution lies outside an axis'
configured travel, the axial solve searches the other branches (sign, half-turn and supplement
combinations) and keeps the admissible one nearest the entry; <code>G53.1</code>, <code>G68.2</code>, <code>CYCLE800</code>,
<code>PLANE SPATIAL</code> and the <code>LN</code> vector syntax pass the travel through the new admissibility overloads
of <a class="xref" href="../api/Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> and
<a class="xref" href="../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_RotaryAdmissibility_">RotaryAdmissibility</a>. The travel itself now
reaches SoftNc from every project: a stroke limit declared only in the legacy machine-limits
boxes is copied into the controller parameter table on load for the axes carrying no end there
(explicit rows win), where 3.2.24 checked such a project against nothing. Both stroke checks
apply <a class="xref" href="../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_Tolerance">Tolerance</a>, so an axis parked exactly on its
limit is not reported. See
<a href="../anatomy/general-setup/controller/machine/per-axis-tables.html">Per-axis tables</a></li>
<li><strong>A rapid traverse that removes stock is reported.</strong> <code>Play-RapidCut--Detected</code> folds the G00
steps of one NC line that touched the workpiece into one validation warning, anchored on the
line's first cutting step and carrying the line's removed volume (geometry only), its
touching-step count and its largest cutting depth. The line total is gated by the project-level
<a class="xref" href="../api/Hi.MachiningProcs.MachiningActRunnerConfig.html#Hi_MachiningProcs_MachiningActRunnerConfig_RapidCutVolumeThreshold_mm3">RapidCutVolumeThreshold_mm3</a> (default 0: any
contact reports); a step with the spindle stopped is left to collision detection while that is
on. <a class="xref" href="../api/Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_IsRapid">IsRapid</a> marks the step. See
<a href="upgrading-to-3.2/new-diagnostics.html">New diagnostics</a></li>
<li><strong>Cutter–workpiece 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> dropped its dense-step bounding-box shortcut
and its winding dependence; a cylinder wall and a flat floor sector reproduce their analytic arcs
to 1e-9 rad at four tessellations, and the managed and native paths stay bit-identical.
<strong>Re-running an existing program moves the forces</strong> on most engaged steps — floors that used to
register as empty and side ranges fragmented by phantom 1° gaps move the most — and coefficient
sets trained before this build embed the old engagement. See
<a href="upgrading-to-3.2/results-that-change-on-upgrade.html">Results that change on upgrade</a></li>
<li><strong>The cube tree folds a re-cut flat region again.</strong> A comparison in the simplification gate had
been inverted since 2023, so a floor roughened by one pass and re-cut flat by a later one stayed
at its finest level for the life of the tree. On a 1000-move CL replay the node count drops 17%
and the peak working set 8%; the meshed-geometry writer and the fly-piece remover now tolerate a
fold landing under them mid-cut instead of crashing. See
<a href="upgrading-to-3.2/geometry-rendering-and-stability.html">Geometry, rendering and native stability</a></li>
<li><strong>A host with no usable OpenGL no longer aborts the process.</strong> Where the native display
initialiser used to kill the process at startup — every service on a machine whose graphics
driver and kernel module disagree — it now reports, and NC play, physics and training run
without 3D. <a class="xref" href="../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_IsGlAvailable">IsGlAvailable</a> carries the verdict and HiNc logs it once at
startup; a host must not obtain a <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a> while it is <code>false</code>. See
<a href="../product/system-requirements.html">System requirements</a></li>
<li><strong>Packaging.</strong> The Linux licence-key native library in the HiDisp package ships stripped: the
protected file no longer carries debug information</li>
</ul>
<p><strong>Committed after the 3.2.26 pack — these ship in the next package build:</strong></p>
<ul>
<li><strong><code>BackgroundTemperature</code> renames to <code>AmbientTemperature</code>.</strong>
<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a> /
<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a> (and the same
pair on <a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>) name the shop-floor
temperature the workpiece, cutter, chips and spindle start at and the spindle cools toward; the
old names remain as <code>[Obsolete]</code> delegates. A <code>.hincproj</code> now writes <code>&lt;AmbientTemperature_C&gt;</code> and
still reads the legacy element and the 2019 wrapper, so no project needs editing. See
<a href="../manual/setup/coolant.html">Coolant</a> and
<a href="upgrading-to-3.2/breaking-changes.html#7-signature-and-shape-changes">Breaking changes</a></li>
<li><strong>Every NC-pipeline rewind raises one event.</strong> Suit rewiring, <code>PowerReset</code> and
<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ResetRuntime_">ResetRuntime</a> share one seam that drops the runner session
state and the NC diagnostics and raises
<a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnNcPipelineReset">OnNcPipelineReset</a> before the next file's pieces
arrive, so a consumer keyed by file / sentence index drops its stale index in step instead of
merging the next file into the previous file's numbers. See
<a href="upgrading-to-3.2/session-project-and-commands.html">Session, project and commands</a></li>
</ul>
<h2 id="hinc-packages-version-3224">HiNc Packages Version 3.2.24</h2>
<p>Correctness and coverage that landed after 3.2.7. The 3.1.175 → 3.2 line jump is the
3.2.7 entry below; the long form is still