This commit is contained in:
2026-09-17 10:22:49 +08:00
parent bfa3106a69
commit 8f2d00155b
41 changed files with 4244 additions and 698 deletions
@@ -689,6 +689,67 @@ default 0.1 keeps the historical seed-anchored ridge behaviour.
<a id="Hi_MillingForces_Training_MillingTraining_GatherAndEstimateSetupAngle_" data-uid="Hi.MillingForces.Training.MillingTraining.GatherAndEstimateSetupAngle*"></a>
<h3 id="Hi_MillingForces_Training_MillingTraining_GatherAndEstimateSetupAngle_System_Collections_Concurrent_ConcurrentDictionary_System_Int32_System_Collections_Generic_List_Hi_Mapping_ITimeShot___Hi_CutterLocations_ClStrips_ClStrip_Hi_MillingForces_Fittings_ICuttingPara_Hi_MillingForces_Fittings_SampleFlag_System_Double_System_IProgress_Hi_Common_Messages_IMessage__System_Threading_CancellationToken_" data-uid="Hi.MillingForces.Training.MillingTraining.GatherAndEstimateSetupAngle(System.Collections.Concurrent.ConcurrentDictionary{System.Int32,System.Collections.Generic.List{Hi.Mapping.ITimeShot}},Hi.CutterLocations.ClStrips.ClStrip,Hi.MillingForces.Fittings.ICuttingPara,Hi.MillingForces.Fittings.SampleFlag,System.Double,System.IProgress{Hi.Common.Messages.IMessage},System.Threading.CancellationToken)">
GatherAndEstimateSetupAngle(ConcurrentDictionary&lt;int, List&lt;ITimeShot&gt;&gt;, ClStrip, ICuttingPara, SampleFlag, double, IProgress&lt;IMessage&gt;, CancellationToken)
</h3>
<div class="markdown level1 summary"><p>Gathers samples against a known cutting parameter and estimates, per
tool, the cutter setup angle the model is missing — the constant
rotation of the measured spindle-rotation-frame (Mx, My) against the
model's (see <a class="xref" href="Hi.MillingForces.Training.SetupAngleEstimation.html">SetupAngleEstimation</a>). The parameter is used
as the gather template exactly like the ReTrain seed; nothing is trained.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static List&lt;SetupAngleEstimate&gt; GatherAndEstimateSetupAngle(ConcurrentDictionary&lt;int, List&lt;ITimeShot&gt;&gt; stepToTimeShotListDictionary, ClStrip clStrip, ICuttingPara knownPara, SampleFlag sampleFlags, double outlierRatio, IProgress&lt;IMessage&gt; messageProgress, CancellationToken cancellationToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stepToTimeShotListDictionary</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.concurrent.concurrentdictionary-2">ConcurrentDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.Mapping.ITimeShot.html">ITimeShot</a>&gt;&gt;</dt>
<dd><p>Dictionary mapping step indices to time shot lists.</p>
</dd>
<dt><code>clStrip</code> <a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html">ClStrip</a></dt>
<dd><p>The cutter location strip.</p>
</dd>
<dt><code>knownPara</code> <a class="xref" href="Hi.MillingForces.Fittings.ICuttingPara.html">ICuttingPara</a></dt>
<dd><p>The known (already built) cutting parameter.</p>
</dd>
<dt><code>sampleFlags</code> <a class="xref" href="Hi.MillingForces.Fittings.SampleFlag.html">SampleFlag</a></dt>
<dd><p>Channels to use; must include Mx and My.</p>
</dd>
<dt><code>outlierRatio</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Fraction of the worst-fitting steps trimmed before the final estimate.</p>
</dd>
<dt><code>messageProgress</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>Message sink.</p>
</dd>
<dt><code>cancellationToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Cancellation token.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.MillingForces.Training.SetupAngleEstimate.html">SetupAngleEstimate</a>&gt;</dt>
<dd><p>One estimate per tool that produced samples; empty when nothing could be estimated.</p>
</dd>
</dl>
<a id="Hi_MillingForces_Training_MillingTraining_GatherAndGetUpdate_" data-uid="Hi.MillingForces.Training.MillingTraining.GatherAndGetUpdate*"></a>
<h3 id="Hi_MillingForces_Training_MillingTraining_GatherAndGetUpdate_System_Collections_Concurrent_ConcurrentDictionary_System_Int32_System_Collections_Generic_List_Hi_Mapping_ITimeShot___Hi_CutterLocations_ClStrips_ClStrip_Hi_MillingForces_Fittings_ICuttingPara_Hi_MillingForces_Fittings_SampleFlag_System_Double_System_IProgress_Hi_Common_Messages_IMessage__System_Threading_CancellationToken_" data-uid="Hi.MillingForces.Training.MillingTraining.GatherAndGetUpdate(System.Collections.Concurrent.ConcurrentDictionary{System.Int32,System.Collections.Generic.List{Hi.Mapping.ITimeShot}},Hi.CutterLocations.ClStrips.ClStrip,Hi.MillingForces.Fittings.ICuttingPara,Hi.MillingForces.Fittings.SampleFlag,System.Double,System.IProgress{Hi.Common.Messages.IMessage},System.Threading.CancellationToken)">