This commit is contained in:
2026-09-13 19:45:24 +08:00
parent 397a7a8cc4
commit 2db889ad89
58 changed files with 3526 additions and 213 deletions
@@ -518,6 +518,37 @@ never carries to later blocks.
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.RadiusCompensation.html">RadiusCompensation</a></dt>
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IRadiusCompensationDef.html">IRadiusCompensationDef</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a></dt>
<dd><p>One-shot block-root record of the rotary axis words the block itself
commanded — keyed by axis name (<code>A</code>/<code>B</code>/<code>C</code>), valued
with the word as programmed: degrees for a plain word, the signed
delta for a per-word incremental word (Siemens <code>IC()</code>, klartext
<code>IC+</code>), the indexing position number for a coded-position word
(<code>CAC()</code>/<code>CIC()</code>/…). The resolved absolute angle lives in
<a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a>; this
section only says <i>which</i> rotary axes this block spoke.</p>
<p>
Written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> when it consumes
A/B/C from <code>Parsing</code> into <code>MachineCoordinateState</code> — and
only for axes the <a class="xref" href="Hi.NcParsers.Dependencys.IMachineAxisConfig.html">IMachineAxisConfig</a> declares
rotary. After the PostLogic carry <code>MachineCoordinateState</code> is a
modal record (key presence never means "commanded"), so consumers that
must know whether <b>this</b> block carried a rotary word read this
section instead:
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> (a rotary-only
block under an active canned cycle is a modal repeat — Fanuc's
any-axis-word rule, HardNc parity: the table indexes, then the cycle
drills again) and
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">WriteCompoundMotion(JsonObject, string, JsonArray, Vec3d)</a>
(the cycle's pre-positioning item carries the block's MC A/B/C so the
physical rotary state matches the root record instead of lagging one
block behind). Not listed in any
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a> key set — it never
carries to later blocks.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -650,7 +681,11 @@ Contains a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_Nc
<span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span>.</p>
<p>Item types (discriminated by key presence):</p>
<ul><li><a class="xref" href="Hi.Motion.html">Hi.Motion</a> — rapid/feed linear motion
(<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a> + <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html">IMachineCoordinateStateDef</a>)</li><li><a class="xref" href="Hi.NcParsers.Keywords.Dwell.html">Dwell</a> — pause (<a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html#Hi_NcParsers_Keywords_IDwellDef_Time">Time</a> in seconds)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a> — spindle direction change
(<a class="xref" href="Hi.NcParsers.Keywords.IMotionEventDef.html">IMotionEventDef</a> + <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html">IMachineCoordinateStateDef</a>;
an item's <code>MachineCoordinateState</code> may carry A/B/C — G28 / tool-change
stages write them, and on a canned-cycle block that spoke a rotary word
(<a class="xref" href="Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a>) the first motion item carries the block's
root ABC — in which case the semantic emits the 6-axis contour act)</li><li><a class="xref" href="Hi.NcParsers.Keywords.Dwell.html">Dwell</a> — pause (<a class="xref" href="Hi.NcParsers.Keywords.IDwellDef.html#Hi_NcParsers_Keywords_IDwellDef_Time">Time</a> in seconds)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleControl.html">SpindleControl</a> — spindle direction change
(<a class="xref" href="Hi.NcParsers.Keywords.ISpindleControlDef.html#Hi_NcParsers_Keywords_ISpindleControlDef_Direction">Direction</a>)</li><li><a class="xref" href="Hi.NcParsers.Keywords.SpindleOrientation.html">SpindleOrientation</a> — oriented spindle stop (OSS)
(<a class="xref" href="Hi.NcParsers.Keywords.ISpindleOrientationDef.html#Hi_NcParsers_Keywords_ISpindleOrientationDef_Angle_deg">Angle_deg</a>)</li></ul>
</dd>
@@ -763,7 +798,9 @@ as NaN sentinels.
<p>
After the PostLogic carry the section is a MODAL record: key presence
means "state known", never "this block commanded the axis". Consumers
needing "commanded" must read the block's Parsing words or compare
needing "commanded" must read the block's Parsing words, the one-shot
<a class="xref" href="Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a> record (the rotary words this block itself
spoke, written by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a>), or compare
values against the previous block (see
<code>LinearMotionUtil.HasRotaryMotion</code>). The only presence-as-commanded
carve-out is <code>CompoundMotion.Items[*]</code> item-level sections, which