fix SoftNcRunner GM code normalization.

This commit is contained in:
2026-05-06 13:21:19 +08:00
parent 0fe9497552
commit 2f57932000
1238 changed files with 69405 additions and 22511 deletions
@@ -99,6 +99,57 @@ Classes
<dd><p>Fanuc controller parameter table.
Stores system parameters (single value) and axis parameters (per-axis value)
following real Fanuc parameter numbering.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucPositionVariableLookup.html">FanucPositionVariableLookup</a></dt>
<dd><p>Fanuc-style position system variables read from the previous block's
runtime-state JSON sections:</p>
<ul><li><span class="term"><code>#5001-#5003</code></span>Block-end position X/Y/Z (workpiece) → previous block's <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>.</li><li><span class="term"><code>#5021-#5023</code></span>Current machine position X/Y/Z → previous block's <a class="xref" href="Hi.NcParsers.Keywords.MachineCoordinateState.html">MachineCoordinateState</a>.</li><li><span class="term"><code>#5041-#5043</code></span>Current absolute position X/Y/Z → previous block's <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>.</li></ul>
<p>
Stateless. Configured on
VariableEvaluatorSyntax.RuntimeVariableLookups rather than
<code>NcDependencyList</code> because the read needs the block node for
<a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html#Hi_Common_Collections_LazyLinkedListNode_1_Previous">Previous</a> access — there is no
long-lived dependency object that owns this data.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucToolOffsetVariableLookup.html">FanucToolOffsetVariableLookup</a></dt>
<dd><p>Fanuc-side adapter that exposes a wrapped <a class="xref" href="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a>
as an <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Evaluation.IVariableLookup.html">IVariableLookup</a> following Fanuc Memory C tool offset
addressing: <code>#2001+N → effective height of offset N</code>
(geometry wear).</p>
<p>
The underlying <a class="xref" href="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a> stays brand-neutral —
Heidenhain / Siemens can use the same storage with different addressing
by registering their own adapter alongside the table. Holds a reference
to the table rather than owning data so writes through the table show
up immediately in lookups via this adapter.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html">RetainedCommonVariableTable</a></dt>
<dd><p>Fanuc-style ISO controller common variable table for the retained range
<code>#500-#999</code>. These variables survive a power cycle (in real hardware
they live in NV-RAM) and are serialised into the project file.</p>
<p>
Excluded by design:
<ul><li><span class="term">Local <code>#1-#33</code></span>Call-frame scoped (Fanuc local variables); lives in the <code>SyntaxPiece</code> JSON dataflow, not here.</li><li><span class="term">Non-retained common <code>#100-#499</code></span>Cleared by program-end / power reset; lives in the <code>SyntaxPiece</code> JSON dataflow as well, not in this table.</li><li><span class="term">System <code>#1000+</code></span>Read-only or computed from runtime state; resolved by dedicated reading syntaxes against other dependencies (e.g. <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a>, tool offset / WCS tables).</li></ul>
<p>
Vacant (Fanuc <code>&lt;vacant&gt;</code>) is represented by <code>null</code>: either the dictionary
has no entry for the key, or the entry maps to <code>null</code>. Both are treated identically by <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html#Hi_NcParsers_Dependencys_Fanuc_RetainedCommonVariableTable_GetVariable_System_Int32_">GetVariable(int)</a>.
</p>
<p>
Naming rationale: Fanuc official documentation calls <code>#500-#999</code> "retained common variables"
(and <code>#100-#499</code> "non-retained common variables"). The umbrella term "macro variable" was
avoided because it conflicts with Custom Macro B's call-frame concept (G65/G66 push a frame
containing the local <code>#1-#33</code>); using <code>RetainedCommonVariableTable</code> reserves "macro"
for the call-frame topic.
</p>
</dd>
</dl>
<h3 id="enums">