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
@@ -97,7 +97,7 @@ Classes
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.CncBrandDependency.html">CncBrandDependency</a></dt>
<dd><p>Explicit CNC controller brand identifier carried in
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcDependencyList">NcDependencyList</a>.
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a>.
Use <code>ncDependencyList.OfType&lt;CncBrandDependency&gt;().FirstOrDefault()</code>
to retrieve the brand.</p>
</dd>
@@ -131,6 +131,13 @@ Implements <a class="xref" href="Hi.NcParsers.Dependencys.IIsoCoordinateConfig.h
G54–G59 codes to preset rows 1–6, the conventional Heidenhain
compatibility mapping for ISO/DIN programs running on a Heidenhain.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.HeidenhainDatumTableProxy.html">HeidenhainDatumTableProxy</a></dt>
<dd><p>Get-or-create <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> for <a class="xref" href="Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a>:
a placeholder in the shared <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> that
resolves the host project's own per-case datum preset / datum shift tables.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -141,6 +148,22 @@ G54.1 P1–P48 → #7001+ (stride 20).
Shared between <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a> (which calls these
&ldquo;ParamId&rdquo;) and <a class="xref" href="Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html">SyntecParameterTable</a> (which calls them
&ldquo;PrId&rdquo;) because both follow the same numeric scheme.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.MCodeEffects.html">MCodeEffects</a></dt>
<dd><p>What one machine-declared M-code does. Real-machine OEM M-codes are
frequently composite — e.g. an <code>M13</code> that means &ldquo;spindle CW +
flood coolant on&rdquo; — so a declaration carries every effect the code
performs rather than a single meaning, and additionally an
<a class="xref" href="Hi.NcParsers.Dependencys.MCodeEffects.html#Hi_NcParsers_Dependencys_MCodeEffects_UnmodeledNote">UnmodeledNote</a> for the parts this simulation does not
model. Declaring only the known parts and staying loud about the rest
keeps a composite code from being half-consumed silently.
Stored per machine in
<a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_MCodeDeclarations">MCodeDeclarations</a> and
consumed by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html">MCodeExpansionSyntax</a>, which
expands the declared code into the canonical ISO flags the regular
consumers already understand.</p>
</dd>
</dl>
<h3 id="interfaces">
@@ -149,7 +172,7 @@ Interfaces
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.IBlockSkipConfig.html">IBlockSkipConfig</a></dt>
<dd><p>Runtime state of the controller's Block Delete / Block Skip switches.
Present in <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcDependencyList">NcDependencyList</a> exposes this to
Present in <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> exposes this to
the runner so that blocks whose head carries <code>/</code> or <code>/N</code>
(parsed by <a class="xref" href="Hi.NcParsers.ParsingSyntaxs.BlockSkipSyntax.html">BlockSkipSyntax</a> into
<a class="xref" href="Hi.NcParsers.Keywords.BlockSkip.html">BlockSkip</a>) are skipped at semantic time.</p>
@@ -160,7 +183,7 @@ toggled independently via panel switches or system parameters.
</p>
<p>
When this dependency is absent from
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_NcDependencyList">NcDependencyList</a>, no block is skipped
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a>, no block is skipped
(safest default: simulate the full machining). The syntax still
consumes the <code>/</code> prefix so no <code>UnparsedText--Remaining</code>
diagnostic is produced.
@@ -185,6 +208,32 @@ the default value in those cases.
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.IHomeMcConfig.html">IHomeMcConfig</a></dt>
<dd><p>G28 first reference position (home machine coordinate) per axis.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html">IIndexingPositionConfig</a></dt>
<dd><p>Indexing-axis position table: maps 1-based indexing position numbers to
axis coordinates for axes that only take up discrete stations (Hirth
couplings, indexing rotary tables, turret-style workholders). Consumed
by the coded-position coordinate functions (Siemens
<code>CAC()</code>/<code>CIC()</code>/<code>CDC()</code>/<code>CACP()</code>/<code>CACN()</code> —
unwrapped by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a>,
resolved by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> /
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> via
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html">CodedPositionUtil</a>).
Implemented by <a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html">SiemensMachineDataTable</a> using the
Siemens machine data (MD30500 <code>$MA_INDEX_AX_ASSIGN_POS_TAB</code> per
axis; global tables MD10910/MD10930; equidistant MD30501–MD30503).</p>
<p>
Positions are expressed in the axis' native units (degrees for rotary,
mm for linear) in the coordinate frame the axis word itself is written
in — machine coordinates for rotary words, program coordinates for
linear words. Position numbering is 1-based: number 1 is the first
table entry (the Siemens machine-data help and alarm texts count this
way; the 0-based value range printed in some programming-manual
editions describes the machine-data array index, not the programmable
number).
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -201,6 +250,19 @@ Implementations include
<a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html">SiemensFrameTable</a> (Sinumerik <code>$P_UIFR</code> frames),
and <a class="xref" href="Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a> (Heidenhain preset rows).
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.IMCodeDeclarationConfig.html">IMCodeDeclarationConfig</a></dt>
<dd><p>Machine-declared M-code map: what each machine-specific (OEM/PLC) M-code
does, as <a class="xref" href="Hi.NcParsers.Dependencys.MCodeEffects.html">MCodeEffects</a> — possibly several effects per code
(tool change, spindle direction, coolant) plus a note for behavior this
simulation does not model. Consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MCodeExpansionSyntax.html">MCodeExpansionSyntax</a>, which expands declared
codes into the canonical ISO flags ahead of the regular consumers.
Machine-level (per-case parameter table) rather than brand vocabulary —
implemented by <a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a>, alongside the
narrower <a class="xref" href="Hi.NcParsers.Dependencys.ISpindleControlConfig.html">ISpindleControlConfig</a> face over the same storage.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -212,6 +274,37 @@ Compatible with Fanuc, Siemens, Heidenhain, Mazak, Okuma.</p>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a></dt>
<dd><p>Marker interface for objects that participate in the NC dependency list resolved by the soft-NC runtime.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyListHost.html">INcDependencyListHost</a></dt>
<dd><p>Hosts a per-case <a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a> list that
<a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> placeholders in a shared
<a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> resolve their data against. Implemented by the
object owning both the shared runner and the varied setting data —
e.g. <code>MachiningProject</code>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a></dt>
<dd><p>An <a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a> placeholder that resolves the <em>real</em>
dependency lazily at pipeline-build time instead of carrying the data
itself. Lets a shared <a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> hold only the fixed
pipeline logic while the frequently-varied data lives on the owning
<a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyListHost.html">INcDependencyListHost</a> (e.g. a <code>MachiningProject</code>).</p>
<p>
"Maker and taker": <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html#Hi_NcParsers_Dependencys_INcDependencyProxy_GetNcDependency">GetNcDependency()</a> either constructs the
dependency on demand (maker) or fetches one from the host wired by
<a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html#Hi_NcParsers_Dependencys_INcDependencyProxy_InitNcDependencyHost_Hi_NcParsers_Dependencys_INcDependencyListHost_">InitNcDependencyHost(INcDependencyListHost)</a> (taker). A get-or-create proxy does
both — it takes the host's instance when present and otherwise makes one,
installing it into the host list so it persists and is editable per case.
</p>
<p>
A proxy may carry runtime-only state (the wired host, a memoized resolved
dependency). That state is host-wired per run and MUST NOT be written by
<a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html#Hi_Common_XmlUtils_IMakeXmlSource_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a> — same
runtime-only posture as <a class="xref" href="Hi.NcParsers.Dependencys.SystemWired.ProjectFolderDependency.html">ProjectFolderDependency</a>.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -235,6 +328,23 @@ that lives in the <code>SyntaxPiece</code> JSON dataflow and is bounded by call
Implemented by <a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> using
brand-specific parameter numbers (e.g., Fanuc #1420, Siemens MD32000,
Heidenhain MP1010).</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.ISpindleControlConfig.html">ISpindleControlConfig</a></dt>
<dd><p>Machine-specific spindle control codes: maps custom spindle direction
M-codes to <a class="xref" href="Hi.Numerical.SpindleDirection.html">SpindleDirection</a> — e.g., an ultrasonic spindle
started by <code>M203</code> (CW) and stopped by <code>M205</code> (STOP) instead of
ISO M03/M05. Consulted by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.SpindleSpeedSyntax.html">SpindleSpeedSyntax</a> in addition to the
built-in ISO defaults (M03/M04/M05), which always stay in effect;
a configured code wins over its ISO meaning when both match.
Machine-level (per-case parameter table) rather than brand vocabulary —
implemented by <a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> as a
spindle-direction face over its
<a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html#Hi_NcParsers_Dependencys_ControllerParameterTableBase_MCodeDeclarations">MCodeDeclarations</a> storage
(the multi-effect <a class="xref" href="Hi.NcParsers.Dependencys.IMCodeDeclarationConfig.html">IMCodeDeclarationConfig</a> map), so one
code is never half-recognized by two separate maps.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -244,6 +354,22 @@ Unit is mm for linear axes, deg for rotary axes.
Implemented by <a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a> using
brand-specific parameter numbers (e.g., Fanuc #1300/#1320,
Siemens MD36100/MD36110, Heidenhain MP420/MP430).</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.IToolChangeTriggerConfig.html">IToolChangeTriggerConfig</a></dt>
<dd><p>Machine-level tool-change trigger mode. Machining centers with a
magazine treat a bare <code>T</code> word as pre-selection only (the magazine
rotates, no feed axis moves) and change the tool on the trigger M-code;
lathes/turret machines index the turret — and thereby change the tool —
on the <code>T</code> word itself. Real controllers declare this per machine
(e.g. Siemens MD22550 <code>$MC_TOOL_CHANGE_MODE</code>, where 0 means the
<code>T</code> word performs the change). Consulted by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html">ToolChangeSyntax</a>; machine-level (per-case
parameter table) rather than brand vocabulary — implemented by
<a class="xref" href="Hi.NcParsers.Dependencys.ControllerParameterTableBase.html">ControllerParameterTableBase</a>. Custom trigger M-codes are
the separate <a class="xref" href="Hi.NcParsers.Dependencys.IMCodeDeclarationConfig.html">IMCodeDeclarationConfig</a> concern
(<a class="xref" href="Hi.NcParsers.Dependencys.MCodeEffects.html#Hi_NcParsers_Dependencys_MCodeEffects_IsToolChange">IsToolChange</a>).</p>
</dd>
</dl>
<dl class="jumplist">