This commit is contained in:
2026-09-12 18:16:27 +08:00
parent b7f55aa631
commit 397a7a8cc4
96 changed files with 1167 additions and 1259 deletions
@@ -2472,17 +2472,12 @@ session paths read the value from
</h3>
<div class="markdown level1 summary"><p>Collects human-readable configuration issues on the upper-beam / shank
geometry — the settings that used to surface only as an opaque per-step
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.nullreferenceexception">NullReferenceException</a> cascade inside the thermal physics
(e.g. an <a class="xref" href="Hi.Geom.ExtendedCylinder.html">ExtendedCylinder</a> beam whose
<a class="xref" href="Hi.Geom.ExtendedCylinder.html#Hi_Geom_ExtendedCylinder_FullLength">FullLength</a> is below the flute height, so the
shank solid inverts and <span class="xref">Hi.Milling.Cutters.MillingCutter.GetShankThermalZrList()</span> cannot build).
Returns <code>(Id, Message)</code> pairs following the structured-id convention of
the <code>IMessage</code> channel (e.g. <code>Cutter-UpperBeam&ndash;ExtendedCylinderFullLengthTooShort</code>);
empty when no upper beam is configured (a legal state — physics runs without
a shank) or the beam is consistent. Shared by the physics runner (tool-change
<code>ConfigurationError</code>) and the web API (post-edit validation warnings).</p>
<div class="markdown level1 summary"><p>The issues <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_ReportUpperBeamGeometryIssues_System_IProgress_Hi_Common_Messages_IMessage__System_Object_">ReportUpperBeamGeometryIssues(IProgress&lt;IMessage&gt;, object)</a> would report, as
<code>(Id, Message)</code> pairs — the id in the structured-id convention of the
<code>IMessage</code> channel (e.g. <code>Cutter-UpperBeam&ndash;ExtendedCylinderFullLengthTooShort</code>),
the message its rendered English notification. Empty when no upper beam is
configured or the beam is consistent. The web API's edit-time view of the same
detection (<code>warnings[]</code> of the upper-beam endpoints).</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -2624,6 +2619,62 @@ and chains <code>Reg(factory)</code> on dependents. Idempotent.</p>
<a id="Hi_Milling_Cutters_MillingCutter_ReportUpperBeamGeometryIssues_" data-uid="Hi.Milling.Cutters.MillingCutter.ReportUpperBeamGeometryIssues*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_ReportUpperBeamGeometryIssues_System_IProgress_Hi_Common_Messages_IMessage__System_Object_" data-uid="Hi.Milling.Cutters.MillingCutter.ReportUpperBeamGeometryIssues(System.IProgress{Hi.Common.Messages.IMessage},System.Object)">
ReportUpperBeamGeometryIssues(IProgress&lt;IMessage&gt;, object)
</h3>
<div class="markdown level1 summary"><p>Reports the configuration issue on the upper-beam / shank geometry — the
settings that used to surface only as an opaque per-step
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.nullreferenceexception">NullReferenceException</a> cascade inside the thermal physics
(e.g. an <a class="xref" href="Hi.Geom.ExtendedCylinder.html">ExtendedCylinder</a> beam whose
<a class="xref" href="Hi.Geom.ExtendedCylinder.html#Hi_Geom_ExtendedCylinder_FullLength">FullLength</a> is below the flute height, so the
shank solid inverts and <span class="xref">Hi.Milling.Cutters.MillingCutter.GetShankThermalZrList()</span> cannot build) —
as a <code>ConfigurationError</code> on <code class="paramref">sink</code>, at most one per
call. Nothing is reported when no upper beam is configured (a legal state —
physics runs without a shank) or the beam is consistent. The wordings live
here, one literal id and one literal template per emit, because the
engine-message gate reads both off the call: the physics runner hands in its
step-anchored sink at tool change, the web API a <a class="xref" href="Hi.Common.Messages.MessageCollector.html">MessageCollector</a>
through <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_GetUpperBeamGeometryIssues">GetUpperBeamGeometryIssues()</a> (post-edit validation warnings).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int ReportUpperBeamGeometryIssues(IProgress&lt;IMessage&gt; sink, object detail = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>sink</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Destination of the error; null is a no-op.</p>
</dd>
<dt><code>detail</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>Optional detail payload attached to the error — the runner
names the tool here, since the templates are shared with the web API and cannot
carry a tool prefix.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The number of issues detected, 0 or 1 — reported on <code class="paramref">sink</code> when it is non-null.</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_" data-uid="Hi.Milling.Cutters.MillingCutter.SetShaperStlResolution*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.Milling.Cutters.MillingCutter.SetShaperStlResolution(Hi.Geom.Resolution.PolarResolution2d)">