deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.

This commit is contained in:
2026-08-27 14:51:37 +08:00
parent 1fc510af5e
commit 2a98ae7556
1468 changed files with 182837 additions and 18888 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 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 .">
<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.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -98,10 +98,39 @@ Class HeidenhainLSyntax
</div>
<div class="markdown summary"><p>Heidenhain linear movement (the leading L) syntax. Strips the leading
<code>L</code> and grabs axis-tag values for any of
<a class="xref" href="Hi.NcParsers.Syntaxs.NcSyntaxUtil.html#Hi_NcParsers_Syntaxs_NcSyntaxUtil_AxisTagList">AxisTagList</a> (X, Y, Z, U, V, W, A, B, C) that
appear afterwards as <code>{axis}{signed-value}</code> pairs; values are
parsed as floats via <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html#Hi_NcParsers_ParsingSyntaxs_FloatTagValueSyntax_ToFloat_System_String_">ToFloat(string)</a>.</p>
<code>L</code> — spaced (<code>L X+10</code>) or glued directly to an axis/F word
(<code>LX+153.933Y+4.196A-77.516</code>, the dominant shape of post-processed
turbine files) — writes the <code>Parsing.L = true</code> statement marker,
and grabs axis-tag values for any of <a class="xref" href="Hi.NcParsers.Syntaxs.NcSyntaxUtil.html#Hi_NcParsers_Syntaxs_NcSyntaxUtil_AxisTagList">AxisTagList</a>
(X, Y, Z, U, V, W, A, B, C) that appear afterwards as
<code>{axis}{signed-value}</code> pairs; values are parsed as floats via
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.FloatTagValueSyntax.html#Hi_NcParsers_ParsingSyntaxs_FloatTagValueSyntax_ToFloat_System_String_">ToFloat(string)</a>. <code>LN</code>/<code>LP</code>/<code>LBL</code>
lines are excluded by the gate's lookahead: a glued axis letter only
counts when followed by a sign, digit, dot or Q variable, so the B of
<code>LBL</code> (followed by another L) never matches. Glued M words
(<code>LM09</code>) are accepted — stripping the L exposes the M word for
the numbered-flag syntax; the richer <code>LM140</code>/<code>LM128</code>
statements never reach this gate because their dedicated owners run
earlier in the Heidenhain Parsing bundle.</p>
<p>
Axis words land on the <b>root</b> of <a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a>
(not nested under <code>L</code>) so the shared Logic consumers —
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> — read them without
per-brand path configuration. The <code>L</code> marker is consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html">HeidenhainMotionModeSyntax</a> which
maps the statement (plus a one-shot <code>FMAX</code> flag) onto the shared
G00/G01 motion-mode vocabulary.
</p>
<p>
The radius-compensation words <code>RL</code>/<code>RR</code>/<code>R0</code> are
captured as boolean records on the Parsing root; the Logic-stage
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRadiusCompSyntax.html">HeidenhainRadiusCompSyntax</a> maps
them onto the shared G41/G42/G40 vocabulary consumed by the radius
compensation pass.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -188,14 +217,30 @@ parsed as floats via <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.FloatTagV
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": { "X": 10, "Y": 20, "Z": -5 }
"L": true, "X": 10, "Y": 20, "Z": -5
}
}</code></pre>
<p>#BeforeBuild.UnparsedText: <code>L A+45 B-15</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": { "A": 45, "B": -15 }
"L": true, "A": 45, "B": -15
}
}</code></pre>
<p>#BeforeBuild.UnparsedText: <code>LX+153.933Y+4.196Z+387.616A-77.516C-10.365</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"L": true, "X": 153.933, "Y": 4.196, "Z": 387.616,
"A": -77.516, "C": -10.365
}
}</code></pre>
<p>#BeforeBuild.UnparsedText: <code>LZ+387.616R0FMAX</code>
#AfterBuild:</p>
<pre><code class="lang-csharp">{
"UnparsedText": "FMAX",
"Parsing": {
"L": true, "Z": 387.616, "R0": true
}
}</code></pre>
@@ -266,6 +311,74 @@ parsed as floats via <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.FloatTagV
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_ParsingSyntaxs_Heidenhain_HeidenhainLSyntax_CompWords" data-uid="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.CompWords">
CompWords
</h3>
<div class="markdown level1 summary"><p>Radius-compensation words captured as boolean Parsing-root records.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static readonly string[] CompWords</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>[]</dt>
<dd></dd>
</dl>
<h3 id="Hi_NcParsers_ParsingSyntaxs_Heidenhain_HeidenhainLSyntax_StatementKey" data-uid="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLSyntax.StatementKey">
StatementKey
</h3>
<div class="markdown level1 summary"><p>Key of the statement marker written to the root of
<a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> (<code>&ldquo;L&rdquo;: true</code>); consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainMotionModeSyntax.html">HeidenhainMotionModeSyntax</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string StatementKey = &quot;L&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>