This commit is contained in:
2026-09-09 17:35:23 +08:00
parent 2a98ae7556
commit 161af68fe3
1271 changed files with 58251 additions and 98639 deletions
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainLSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain linear movement (the leading L) syntax. Strips the leading L — spaced (L X+10) or glued directly to an axis/F word (LX+153.933Y+4.196A-77.516, the dominant shape of post-processed turbine files) — writes the Parsing.L = true statement marker, and grabs axis-tag values for any of (X, Y, Z, U, V, W, A, B, C) that appear afterwards as {axis}{signed-value} pairs; values are parsed as floats via . LN/LP/LBL lines are excluded by the gate&#39;s lookahead: a glued axis letter only counts when followed by a sign, digit, dot or Q variable, so the B of LBL (followed by another L) never matches. Glued M words (LM09) are accepted — stripping the L exposes the M word for the numbered-flag syntax; the richer LM140/LM128 statements never reach this gate because their dedicated owners run earlier in the Heidenhain Parsing bundle. Axis words land on the root of (not nested under L) so the shared Logic consumers — , , , — read them without per-brand path configuration. The L marker is consumed by which maps the statement (plus a one-shot FMAX flag) onto the shared G00/G01 motion-mode vocabulary. The radius-compensation words RL/RR/R0 are captured as boolean records on the Parsing root; the Logic-stage maps them onto the shared G41/G42/G40 vocabulary consumed by the radius compensation pass.">
<meta name="description" content="Heidenhain linear movement (the leading L) syntax. Strips the leading L — spaced (L X+10) or glued directly to an axis/F word (LX+153.933Y+4.196A-77.516, the dominant shape of post-processed turbine files) — writes the Parsing.L = true statement marker, and grabs axis-tag values for any of (X, Y, Z, U, V, W, A, B, C) that appear afterwards as {axis}{signed-value} pairs; values are parsed as floats via . LN/LP/LBL lines are excluded by the gate&#39;s lookahead: a glued axis letter only counts when followed by a sign, digit, dot or Q variable, so the B of LBL (followed by another L) never matches. Glued M words (LM09) are accepted — stripping the L exposes the M word for the numbered-flag syntax; the richer LM140/LM128 statements never reach this gate because their dedicated owners run earlier in the Heidenhain Parsing bundle. Axis words land on the root of (not nested under L) so the shared Logic consumers — , , , — read them without per-brand path configuration. The L marker is consumed by which maps the statement (plus a one-shot FMAX flag) onto the shared G00/G01 motion-mode vocabulary. The radius-compensation words RL/RR/R0 are captured as boolean records on the Parsing root; the Logic-stage maps them onto the shared G41/G42/G40 vocabulary consumed by the radius compensation pass. Incremental axis words (L IX+20 IY-15, mixed with absolute ones at will) land under the same plain axis keys, with a per-axis &quot;PositioningOverride&quot;: { &quot;X&quot;: &quot;Incremental&quot; } stamp on the block root for the shared resolve consumers — see . The glued gate admits the prefixed spelling too (LIX+20).">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -131,6 +131,14 @@ captured as boolean records on the Parsing root; the Logic-stage
them onto the shared G41/G42/G40 vocabulary consumed by the radius
compensation pass.
</p>
<p>
Incremental axis words (<code>L IX+20 IY-15</code>, mixed with absolute
ones at will) land under the same plain axis keys, with a per-axis
<code>"PositioningOverride": { "X": "Incremental" }</code> stamp on the
block root for the shared resolve consumers — see
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a>. The glued gate
admits the prefixed spelling too (<code>LIX+20</code>).
</p>
</div>
<div class="markdown conceptual"></div>
@@ -243,6 +251,37 @@ compensation pass.
"L": true, "Z": 387.616, "R0": true
}
}</code></pre>
<p>Incremental words (the manual's own example shape): the values land
under the plain axis keys and every incremental axis is stamped on
the block-root override section; nothing is left unread:
#BeforeBuild.UnparsedText: <code>L IX+20 IY-15</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": true, "X": 20, "Y": -15
},
"PositioningOverride": { "X": "Incremental", "Y": "Incremental" }
}</code></pre>
<p>Mixed block — only the incremental axis carries the stamp; the
absolute X follows the modal positioning as before:
#BeforeBuild.UnparsedText: <code>L X+60 IY-10</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": true, "X": 60, "Y": -10
},
"PositioningOverride": { "Y": "Incremental" }
}</code></pre>
<p>Glued incremental run — the gate admits the prefixed axis letter and
the second word is reached through the digit before it:
#BeforeBuild.UnparsedText: <code>LIX+20IY-15</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": true, "X": 20, "Y": -15
},
"PositioningOverride": { "X": "Incremental", "Y": "Incremental" }
}</code></pre>