deploy fixed MRR drift and webservice CylindroidHolder buckle branch update issue.

This commit is contained in:
2026-05-28 19:42:05 +08:00
parent d7836db45f
commit 95b5790622
140 changed files with 8079 additions and 14099 deletions
@@ -195,6 +195,65 @@ the individual cycle syntaxes in the chain.
</dd></dl>
<h2 id="Hi_NcParsers_LogicSyntaxs_CannedCycleResolveSyntax_examples">Examples</h2>
<p>Direct G81 active cycle, no <code>#Previous:</code> (so
<code>lastProgramXyz = Vec3d.Zero</code>) and no
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html">Positioning</a> mode (so the absolute-coordinate path
runs, not G91 incremental). The resolved cycle sub-section is left
in <code>Parsing</code> under the cycle code for downstream cycle
syntaxes to consume; the <a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> section
carries the snapshot used for modal lookback.
<code>ReturnMode</code> defaults to <a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G98">G98</a> when
neither the current block nor a previous block declares G98/G99:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "G81": { "X": 50, "Y": 30, "Z": -10, "R": 2 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "G81": { "X": 50, "Y": 30, "Z": -10, "R": 2 } },
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
}
}</code></pre>
<p>Modal repeat: the current block carries only an X override and no
cycle code, but <code>#Previous:</code> has an active G81 with stored
params. <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">MergeModalCycleSection(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress)</a>
merges X=60 (override) with Y/Z/R from stored params, removes the
consumed X from <code>Parsing</code> root, and writes the merged section
back to <code>Parsing.G81</code>. <code>ReturnMode</code> inherits &ldquo;G98&rdquo; from
the previous block's <a class="xref" href="Hi.NcParsers.Keywords.ICannedCycleDef.html#Hi_NcParsers_Keywords_ICannedCycleDef_ReturnMode">ReturnMode</a>:
#Previous:</p>
<pre><code class="lang-csharp">{
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
},
"ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "X": 60 } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "G81": { "X": 60, "Y": 30, "Z": -10, "R": 2 } },
"CannedCycle": {
"Term": "G81",
"ReturnMode": "G98",
"Params": { "X": 60, "Y": 30, "Z": -10, "R": 2 }
}
}</code></pre>
<p>Explicit G80 cancel: standalone G80 flag with no cycle data. The
G80 flag is consumed and <a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> = <code>{ Term: G80 }</code>
is written as a hard sentinel that
<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">FindPreviousActiveCycle(LazyLinkedListNode&lt;SyntaxPiece&gt;, string[])</a> reads
to terminate modal lookback. No <code>ReturnMode</code> hint here (no
G98/G99 flag on the same block):
#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["G80"] } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "CannedCycle": { "Term": "G80" } }</code></pre>