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
@@ -432,11 +432,59 @@ purely functional marker the local-variable I/O syntaxes consult.
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.PlaneSelect.html">PlaneSelect</a></dt>
<dd><p>Section key holder for <a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html">IPlaneSelectDef</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.PolarInterpolation.html">PolarInterpolation</a></dt>
<dd><p>Inner-key constants of the
<a class="xref" href="Hi.NcParsers.Keywords.IPolarInterpolationDef.html#Hi_NcParsers_Keywords_IPolarInterpolationDef_PolarInterpolationState">PolarInterpolationState</a> section.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Positioning.html">Positioning</a></dt>
<dd><p>Section key holder + concrete implementation for <a class="xref" href="Hi.NcParsers.Keywords.IPositioningDef.html">IPositioningDef</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a></dt>
<dd><p>Per-word positioning override — a non-modal block-root section keyed
by word name (axis words and the I/J/K interpolation parameters)
whose values are <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Absolute">Absolute</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Shortest">Shortest</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_PositiveOnly">PositiveOnly</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a>, plus the coded-position
(indexing axis) family <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_CodedAbsolute">CodedAbsolute</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_CodedIncremental">CodedIncremental</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_CodedShortest">CodedShortest</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_CodedPositiveOnly">CodedPositiveOnly</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_CodedNegativeOnly">CodedNegativeOnly</a>.
Overrides the modal G90/G91 <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html">Positioning</a> state (and, for
I/J/K, the default incremental center reading) for the listed words
on this block only.</p>
<p>
Written by
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a> when a
word carries one of the Siemens per-word coordinate function
wrappers <code>AC()</code> / <code>IC()</code> / <code>DC()</code> / <code>ACP()</code> /
<code>ACN()</code> or their coded-position counterparts <code>CAC()</code> /
<code>CIC()</code> / <code>CDC()</code> / <code>CACP()</code> / <code>CACN()</code>.
Consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> (linear axes) and
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> (rotary axes) — both treat
every non-Incremental value as an absolute write, and both resolve a
coded entry's indexing position number through
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html">CodedPositionUtil</a> and rewrite the entry to
its plain counterpart in place — by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcCyclicPathSyntax.html">McAbcCyclicPathSyntax</a> (the directional
window for <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_PositiveOnly">PositiveOnly</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a> and the non-modular-axis
boundary warning; it never sees a coded value), and by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html">SiemensCircularMotionSyntax</a>
(absolute I/J/K center components); words without an entry keep the
default behavior unchanged. The section is not listed in any
ModalCarry key set — it never carries to later blocks.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -657,12 +705,23 @@ LogicSyntaxs (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.G53p1RotaryPositionSyntax.html">G53p1RotaryPositionSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html">ReferenceReturnSyntax</a>); seeded on the init
block by <a class="xref" href="Hi.NcParsers.Initializers.HomeMcInitializer.html">HomeMcInitializer</a>; carried across
non-motion blocks by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>.</p>
non-motion blocks — and per-key completed on partially-written blocks
(an XYZ-only motion block receives the carried modal rotary values) —
by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>.</p>
<p>
Only configured axes appear as keys (X/Y/Z/A/B/C). Non-existent axes
(e.g., A/B/C on a 3-axis machine) are <b>omitted</b> rather than written
as NaN sentinels.
</p>
<p>
After the PostLogic carry the section is a MODAL record: key presence
means "state known", never "this block commanded the axis". Consumers
needing "commanded" must read the block's Parsing words or compare
values against the previous block (see
<code>LinearMotionUtil.HasRotaryMotion</code>). The only presence-as-commanded
carve-out is <code>CompoundMotion.Items[*]</code> item-level sections, which
the carry never touches.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -672,7 +731,7 @@ a motion command, regardless of whether the resulting displacement is non-zero.
A redundant <code>G01 X10</code> on a block already at X10 still gets a
<a class="xref" href="Hi.NcParsers.Keywords.MotionEvent.html">MotionEvent</a>; the motion semantics
(<a class="xref" href="Hi.NcParsers.Semantics.McLinearMotionSemantic.html">McLinearMotionSemantic</a>,
<a class="xref" href="Hi.NcParsers.Semantics.McArcMotionSemantic.html">McArcMotionSemantic</a>, <a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a>)
<a class="xref" href="Hi.NcParsers.Semantics.McArcMotionSemantic.html">McArcMotionSemantic</a>, <a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a>)
then early-return on <code>distance &lt;= 0</code> and emit no
<a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>. NOT carried forward across blocks.</p>
<p>
@@ -738,6 +797,30 @@ ISO: G17/G18/G19. Heidenhain: implicit from L/CC syntax.
<a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html#Hi_NcParsers_Keywords_IPlaneSelectDef_Term">Term</a> carries the brand-specific G-code; <a class="xref" href="Hi.NcParsers.Keywords.IPlaneSelectDef.html#Hi_NcParsers_Keywords_IPlaneSelectDef_Plane">Plane</a>
stores the conventional, brand-neutral axis-pair name (XY/ZX/YZ).
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.IPolarInterpolationDef.html">IPolarInterpolationDef</a></dt>
<dd><p>JSON section schemas for Fanuc Polar Coordinate Interpolation (G12.1/G13.1).
Property names are used as JSON keys via <code>nameof</code>.</p>
<p>
<a class="xref" href="Hi.NcParsers.Keywords.IPolarInterpolationDef.html#Hi_NcParsers_Keywords_IPolarInterpolationDef_PolarInterpolationState">PolarInterpolationState</a> is the modal valve: its presence on a
block means polar interpolation is active there. It is written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PolarInterpolationSyntax.html">PolarInterpolationSyntax</a> on the G12.1 block and
re-materialized onto every following block until a G13.1 block ends the
mode (single-step lookback carry, same pattern as
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html">PositioningSyntax</a> — not registered on
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>).
</p>
<p>
<a class="xref" href="Hi.NcParsers.Keywords.IPolarInterpolationDef.html#Hi_NcParsers_Keywords_IPolarInterpolationDef_ProgramPolarRxcz">ProgramPolarRxcz</a> is the per-block polar position, relative to
the G12.1 anchor (<a class="xref" href="Hi.NcParsers.Keywords.PolarInterpolation.html#Hi_NcParsers_Keywords_PolarInterpolation_InitRxcz">InitRxcz</a>). Rxcz axes:
X = radius-direction linear axis in mm (the NC word X is a <b>diameter</b>
and is halved on parse), Y = hypothetical rotary-substitute axis in mm,
Z = real Z in mm. The absolute (rotation-center-origin) position used by
the math is <code>InitRxcz + ProgramPolarRxcz</code>, mirroring HardNc
<code>PolarEntry.CentralProgramPolarRxcz</code>.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -875,7 +958,7 @@ rotary-state-dependent transform (RTCP rotary-dynamic). Composition still
yields a correct endpoint MC, but the matrix is not contour-valid:
intermediate CL-point positions cannot be derived by applying it to an
interpolated ProgramXyz. The semantic layer
(<a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a>) handles per-step IK
(<a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a>) handles per-step IK
separately.</li></ul>
Use <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_HasDynamicEntry_System_Text_Json_Nodes_JsonObject_">HasDynamicEntry(JsonObject)</a> to detect
the presence of any Dynamic entry on this block.