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,109 @@ Must be placed after <a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycle
</dd></dl>
<h2 id="Hi_NcParsers_LogicSyntaxs_BoringCycleSyntax_examples">Examples</h2>
<p>All cases below pre-populate <a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> as
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> would have written it. There
is no <code>#Previous:</code>, so <code>GetLastProgramXyz</code> returns
<code>Vec3d.Zero</code><code>initZ = 0</code>. F is supplied inside the cycle
section so <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">ResolveFeedrate(JsonObject, JsonObject, ISentenceCarrier, NcDiagnosticProgress)</a>
writes block-level <a class="xref" href="Hi.NcParsers.Keywords.Feedrate.html">Feedrate</a> (G94 default, 600 mm/min
→ 10 mm/s) before items are emitted. All cases use G98 return mode
so <code>finalZ = initZ = 0</code>.</p>
<p>
G85 — feed to bottom, feed retract (smooth bore finish). The retract
item carries the same <code>Feedrate_mmds</code> as the down-stroke. Four
items:
</p>
#BeforeBuild:
<pre><code class="lang-csharp">{
"Parsing": { "G85": { "X": 50, "Y": 30, "Z": -10, "R": 2, "F": 600 } },
"CannedCycle": {
"Term": "G85", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
}
}</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"CannedCycle": {
"Term": "G85", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
},
"Feedrate": { "FeedrateValue": 600, "Term": "G94", "Unit": "mm/min" },
"CompoundMotion": {
"Term": "G85",
"Items": [
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 2 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": -10 }, "MotionEvent": { "Form": "McLinear", "Feedrate_mmds": 10 } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "Feedrate_mmds": 10 } }
]
},
"ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }
}</code></pre>
G86 — feed to bottom, spindle stop, rapid retract, spindle restart
CW. First marker to spell out
<code>{ "SpindleControl": { "Direction": ... } }</code> items. The retract
item carries <code>IsRapid: true</code> rather than a feedrate. Six items:
#BeforeBuild:
<pre><code class="lang-csharp">{
"Parsing": { "G86": { "X": 50, "Y": 30, "Z": -10, "R": 2, "F": 600 } },
"CannedCycle": {
"Term": "G86", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
}
}</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"CannedCycle": {
"Term": "G86", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
},
"Feedrate": { "FeedrateValue": 600, "Term": "G94", "Unit": "mm/min" },
"CompoundMotion": {
"Term": "G86",
"Items": [
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 2 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": -10 }, "MotionEvent": { "Form": "McLinear", "Feedrate_mmds": 10 } },
{ "SpindleControl": { "Direction": "STOP" } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "SpindleControl": { "Direction": "CW" } }
]
},
"ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }
}</code></pre>
G89 with P=0.3s dwell — like G85 but inserts a
<code>{ Dwell: { Time: 0.3 } }</code> item at the bottom before the feed
retract. Five items:
#BeforeBuild:
<pre><code class="lang-csharp">{
"Parsing": { "G89": { "X": 50, "Y": 30, "Z": -10, "R": 2, "F": 600, "P": 0.3 } },
"CannedCycle": {
"Term": "G89", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
}
}</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"CannedCycle": {
"Term": "G89", "ReturnMode": "G98",
"Params": { "X": 50, "Y": 30, "Z": -10, "R": 2 }
},
"Feedrate": { "FeedrateValue": 600, "Term": "G94", "Unit": "mm/min" },
"CompoundMotion": {
"Term": "G89",
"Items": [
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 2 }, "MotionEvent": { "Form": "McLinear", "IsRapid": true } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": -10 }, "MotionEvent": { "Form": "McLinear", "Feedrate_mmds": 10 } },
{ "Dwell": { "Time": 0.3 } },
{ "ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }, "MotionEvent": { "Form": "McLinear", "Feedrate_mmds": 10 } }
]
},
"ProgramXyz": { "X": 50, "Y": 30, "Z": 0 }
}</code></pre>
<h2 id="Hi_NcParsers_LogicSyntaxs_BoringCycleSyntax_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>G86 emits <a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a> items for spindle stop (before