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
@@ -94,18 +94,69 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a> motion into CL-level
linear interpolation with per-step inverse kinematics.
Used when RTCP (G43.4/TRAORI/M128) is active and rotary axes change,
producing <a class="xref" href="Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html">ActClDerivedMcXyzabcContour</a>.</p>
<p>
The CL (cutter location) endpoints are derived from MC endpoints via
forward kinematics, then interpolated linearly. The MC path is
non-linear because the tool orientation changes during the move.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.CompoundMotionSemantic.html">CompoundMotionSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.ICompoundMotionDef.html">ICompoundMotionDef</a> into acts
by delegating <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a> to
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonarray">ResolveItems(JsonArray, JsonObject, Vec3d, IRapidFeedrateConfig)</a>.</p>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonarray">ResolveItems(JsonArray, LazyLinkedListNode&lt;SyntaxPiece&gt;, Vec3d, IRapidFeedrateConfig, NcDiagnosticProgress, IMachineAxisConfig)</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.CoolantSemantic.html">CoolantSemantic</a></dt>
<dd><p>Resolves the <a class="xref" href="Hi.NcParsers.Keywords.ICoolantDef.html">ICoolantDef</a> JSON section (written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CoolantSyntax.html">CoolantSyntax</a> from M07/M08/M09) into an
<a class="xref" href="Hi.Numerical.Acts.ActCooling.html">ActCooling</a> act. Only emits when the coolant mode
changes from the previous block — modal state is suppressed so
downstream consumers (e.g. <a class="xref" href="Hi.Numerical.Acts.StateActRunner.html">StateActRunner</a>) see one
act per real transition rather than one per block.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.CsScriptBeginSemantic.html">CsScriptBeginSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_BeginScript">BeginScript</a> into <a class="xref" href="Hi.Numerical.Acts.ActLineCsScript.html">ActLineCsScript</a>.
Must be placed at the beginning of <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcSemanticList">NcSemanticList</a>
so that the script runs before motion and other acts.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.CsScriptEndSemantic.html">CsScriptEndSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_EndScript">EndScript</a> into <a class="xref" href="Hi.Numerical.Acts.ActLineCsScript.html">ActLineCsScript</a>.
Must be placed at the end of <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcSemanticList">NcSemanticList</a>
so that the script runs after motion and other acts.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.CsScriptSemantic.html">CsScriptSemantic</a></dt>
<dd><p>Base class for resolving <a class="xref" href="Hi.NcParsers.Keywords.CsScript.html">CsScript</a> JSON entries into
<a class="xref" href="Hi.Numerical.Acts.ActLineCsScript.html">ActLineCsScript</a>. Subclasses specify which script key
to read (<a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_BeginScript">BeginScript</a> or <a class="xref" href="Hi.NcParsers.Keywords.CsScript.html#Hi_NcParsers_Keywords_CsScript_EndScript">EndScript</a>).</p>
<p>
Also supports an external script dictionary via <a class="xref" href="Hi.NcParsers.Semantics.CsScriptSemantic.html#Hi_NcParsers_Semantics_CsScriptSemantic_ExternalScripts">ExternalScripts</a>.
When set, each NC block's <a class="xref" href="Hi.Common.FileLines.FileLineIndex.html">FileLineIndex</a> is looked up in the
dictionary and the matched script is emitted as an additional
<a class="xref" href="Hi.Numerical.Acts.ActLineCsScript.html">ActLineCsScript</a>. This allows runtime injection of per-line
scripts without modifying the NC file.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.MachineCoordinateStepSemantic.html">MachineCoordinateStepSemantic</a></dt>
<dd><p>Read MachineCoordinate from <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateDef_MachineCoordinate">MachineCoordinate</a> in JsonObject
<dd><p>Read MachineCoordinate from <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a> in JsonObject
and produce <a class="xref" href="Hi.Numerical.Acts.ActMcXyzStep.html">ActMcXyzStep</a>.
Requires ProgramXyzSyntax to have computed McXyz first.</p>
Requires <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> to have computed McXyz first.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -124,7 +175,7 @@ Reads arc center, plane normal, and direction from the
<a class="xref" href="Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a> or <a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcLinearContour.html">ActMcXyzabcLinearContour</a>.</p>
<p>
Discriminates by checking whether rotary axis values (A/B/C) are present
in <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateDef_MachineCoordinate">MachineCoordinate</a>:
in <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a>:
<ul><li>XYZ only → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a></li><li>XYZABC → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcLinearContour.html">ActMcXyzabcLinearContour</a> with Fanuc
composite feedrate: <code>d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²)</code></li></ul>
@@ -136,6 +187,21 @@ composite feedrate: <code>d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg²
<a class="xref" href="Hi.Numerical.Acts.ActSpindleSpeed.html">ActSpindleSpeed</a> and <a class="xref" href="Hi.Numerical.Acts.ActSpindleDirection.html">ActSpindleDirection</a>.
Only emits when spindle speed or direction actually changes
from the previous block.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.StrokeLimitCheckSemantic.html">StrokeLimitCheckSemantic</a></dt>
<dd><p>Reports a diagnostic error when <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a>
exceeds the stroke limits defined in <a class="xref" href="Hi.NcParsers.Dependencys.IStrokeLimitConfig.html">IStrokeLimitConfig</a>.
Does not emit any <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>; only produces diagnostics.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_SectionName">SectionName</a> section into
<a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a> (when M06 is present) or
<a class="xref" href="Hi.Numerical.Acts.ActToolingTeleport.html">ActToolingTeleport</a> (T-code only, no M06).
Reads <a class="xref" href="Hi.NcParsers.Dependencys.IToolingMcConfig.html#Hi_NcParsers_Dependencys_IToolingMcConfig_ToolingTime">ToolingTime</a> for the change duration.</p>
</dd>
</dl>
<h3 id="interfaces">