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 ToolChangeSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Consumes T (tool number) and M06 (tool change) from . T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { &amp;ldquo;ToolId&amp;rdquo;: 1, &amp;ldquo;IsChange&amp;rdquo;: true, &amp;ldquo;Term&amp;rdquo;: &amp;ldquo;M06&amp;rdquo; }. records the trigger command and is only written when is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it.">
<meta name="description" content="Consumes T (tool number) and M06 (tool change) from . T is modal — persists across blocks. M06 triggers the change. Writes resolved state to a ToolChange section: { &amp;ldquo;ToolId&amp;rdquo;: 1, &amp;ldquo;IsChange&amp;rdquo;: true, &amp;ldquo;Term&amp;rdquo;: &amp;ldquo;M06&amp;rdquo; }. records the trigger command and is only written when is true (i.e. the block actually carried the tool-change M code); modal-only blocks omit it. ToolId is an int for numeric calls (T5) and a string for Siemens string tool calls (T=&quot;D8R1&quot;, captured by ); both shapes carry modally. String names are resolved to tool numbers at the semantic layer () — this syntax records the call verbatim. The trigger is machine-configurable. A custom tool-change M-code (Siemens MD22560 $MC_TOOL_CHANGE_M_CODE) is declared on the controller parameter table () and reaches this syntax already expanded to M06 by . Turret/lathe machines where the T word itself performs the change (Siemens MD22550 $MC_TOOL_CHANGE_MODE = 0) set ; the block then triggers with recorded as . Without that config a bare T block stays pre-selection only — magazine rotation is the PLC&#39;s business and moves no feed axis.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -105,6 +105,28 @@ Writes resolved state to a <code>ToolChange</code> section:
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_TermKey">TermKey</a> records the trigger command and is only written
when <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_IsChangeKey">IsChangeKey</a> is true (i.e. the block actually carried
the tool-change M code); modal-only blocks omit it.</p>
<p>
<code>ToolId</code> is an int for numeric calls (<code>T5</code>) and a string for
Siemens string tool calls (<code>T="D8R1"</code>, captured by
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Siemens.SiemensToolCallSyntax.html">SiemensToolCallSyntax</a>); both
shapes carry modally. String names are resolved to tool numbers at the
semantic layer (<a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a>) — this
syntax records the call verbatim.
</p>
<p>
The trigger is machine-configurable. A custom tool-change M-code
(Siemens MD22560 <code>$MC_TOOL_CHANGE_M_CODE</code>) is declared on the
controller parameter table
(<a class="xref" href="Hi.NcParsers.Dependencys.MCodeEffects.html#Hi_NcParsers_Dependencys_MCodeEffects_IsToolChange">IsToolChange</a>) and reaches this
syntax already expanded to M06 by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html">MCodeExpansionSyntax</a>.
Turret/lathe machines where the <code>T</code> word itself performs the
change (Siemens MD22550 <code>$MC_TOOL_CHANGE_MODE</code> = 0) set
<a class="xref" href="Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html#Hi_NcParsers_Dependencys_IToolChangeTriggerConfig_ToolWordTriggersChange">ToolWordTriggersChange</a>;
the block then triggers with <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_ToolWordTerm">ToolWordTerm</a> recorded as
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_TermKey">TermKey</a>. Without that config a bare <code>T</code> block stays
pre-selection only — magazine rotation is the PLC's business and moves
no feed axis.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -211,6 +233,20 @@ place because <code>CleanupParsing</code> only runs on the M06 branch:
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["M06"] } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "ToolChange": { "ToolId": 5, "IsChange": true, "Term": "M06" } }</code></pre>
<p>Siemens string tool call + M06 — the name carries verbatim as a
string <code>ToolId</code>:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["M06"], "T": "D16R3Z6" } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "ToolChange": { "ToolId": "D16R3Z6", "IsChange": true, "Term": "M06" } }</code></pre>
<p>T alone under turret semantics (test hardcodes an
<a class="xref" href="Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html">IToolChangeTriggerConfig</a> dependency with
<code>ToolWordTriggersChange</code> = true) — the T word itself triggers the
change and <code>Term</code> records <code>&ldquo;T&rdquo;</code>:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "T": 9 } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "ToolChange": { "ToolId": 9, "IsChange": true, "Term": "T" } }</code></pre>
@@ -343,6 +379,37 @@ place because <code>CleanupParsing</code> only runs on the M06 branch:
<h3 id="Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_ToolWordTerm" data-uid="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.ToolWordTerm">
ToolWordTerm
</h3>
<div class="markdown level1 summary"><p><a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_TermKey">TermKey</a> value recorded when the <code>T</code> word itself triggered the change (<a class="xref" href="Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html#Hi_NcParsers_Dependencys_IToolChangeTriggerConfig_ToolWordTriggersChange">ToolWordTriggersChange</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ToolWordTerm = &quot;T&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>