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
@@ -95,11 +95,11 @@
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a></dt>
<dt><a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_ClLinear">ClLinear</a> motion into CL-level
linear interpolation with per-step inverse kinematics.
Used when RTCP (G43.4/TRAORI/M128) is active and rotary axes change,
producing <a class="xref" href="Hi.Numerical.Acts.ActClDerivedMcXyzabcContour.html">ActClDerivedMcXyzabcContour</a>.</p>
producing <a class="xref" href="Hi.Numerical.Acts.ActClLinearMcXyzabcContour.html">ActClLinearMcXyzabcContour</a>.</p>
<p>
The CL (cutter location) endpoints are derived from MC endpoints via
forward kinematics, then interpolated linearly. The MC path is
@@ -174,11 +174,60 @@ Reads arc center, plane normal, and direction from the
<a class="xref" href="Hi.Numerical.Acts.ActFeedrate.html">ActFeedrate</a>/<a class="xref" href="Hi.Numerical.Acts.ActRapid.html">ActRapid</a> +
<a class="xref" href="Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a> or <a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcLinearContour.html">ActMcXyzabcLinearContour</a>.</p>
<p>
Discriminates by checking whether rotary axis values (A/B/C) are present
in <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a>:
<ul><li>XYZ only → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a></li><li>XYZABC → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcLinearContour.html">ActMcXyzabcLinearContour</a> with Fanuc
Discriminates by whether the block's rotary state actually CHANGED from
the previous modal state (<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">HasRotaryMotion(DVec3d, DVec3d, LazyLinkedListNode&lt;SyntaxPiece&gt;)</a>
— value comparison, not key presence:
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html#Hi_NcParsers_PostLogicSyntaxs_ModalCarrySyntax_MergeKeys">MergeKeys</a> completes every
motion block's <a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a>
with carried modal rotary values, so key presence no longer means the
block moved a rotary axis):
<ul><li>rotary unchanged → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzLinearContour.html">ActMcXyzLinearContour</a></li><li>rotary moved → <a class="xref" href="Hi.Numerical.Acts.ActMcXyzabcLinearContour.html">ActMcXyzabcLinearContour</a> with Fanuc
composite feedrate: <code>d = √(ΔX² + ΔY² + ΔZ² + ΔA_deg² + ΔB_deg² + ΔC_deg²)</code></li></ul>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.McPolarArcMotionSemantic.html">McPolarArcMotionSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_McPolarArc">McPolarArc</a> motion into
<a class="xref" href="Hi.Numerical.Acts.ActFeedrate.html">ActFeedrate</a> + <a class="xref" href="Hi.Numerical.Acts.ActMcPolarSpiralContour.html">ActMcPolarSpiralContour</a>.</p>
<p>
The arc geometry (center, direction, additional circles) was resolved by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html">ProgramRxczSyntax</a> on the polar hypothetical plane in central
(anchor-origin) coordinates; this semantic computes the plane arc length
via <a class="xref" href="Hi.Numerical.Acts.ActMcPolarSpiralContour.html">ActMcPolarSpiralContour</a>'s shared spiral derivative,
takes <code>duration = length / feedrate</code> (mirroring HardNc
<code>NcProc.GetActSpiralMcXyzContour</code>), and emits the polar spiral act
whose per-step polar→machine conversion chains the C-axis branch.
</p>
<p>
When <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a> compensated
the block (marked by <a class="xref" href="Hi.NcParsers.Keywords.PolarInterpolation.html#Hi_NcParsers_Keywords_PolarInterpolation_CompensatedEndCentral">CompensatedEndCentral</a>
in the motion section), the act structure mirrors HardNc
<code>NcProc.GetActsFromArcCommand</code>: an optional
<a class="xref" href="Hi.Numerical.Acts.ActMcPolarLinearContour.html">ActMcPolarLinearContour</a> bridge onto the offset circle
(transient begin), the spiral between the compensated endpoints around the
NOMINAL center, and an optional bridge off it (transient end) — the polar
twin of HardNc <code>GetActMcContourByLinearProgramPos</code>.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.McPolarLinearMotionSemantic.html">McPolarLinearMotionSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.Keywords.Generic.MotionForm.html#Hi_NcParsers_Keywords_Generic_MotionForm_McPolarLinear">McPolarLinear</a> motion into
<a class="xref" href="Hi.Numerical.Acts.ActFeedrate.html">ActFeedrate</a> + <a class="xref" href="Hi.Numerical.Acts.ActMcPolarLinearContour.html">ActMcPolarLinearContour</a>.</p>
<p>
Reads the anchor-relative polar positions written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramRxczSyntax.html">ProgramRxczSyntax</a> (begin from the previous block, end from
the current block) and hands the central (anchor-origin) pair to the act,
mirroring HardNc <code>NcProc.GetActMcPolarLinearContour</code>. Duration
mirrors HardNc <code>GetTimeCostByPolarLinearContour</code>, including the
C-axis speed clamp on the hypothetical component — the ceiling comes
from the rotary rate bucket
(<a class="xref" href="Hi.NcParsers.Dependencys.IRapidFeedrateConfig.html">IRapidFeedrateConfig</a>), the same number the
legacy import fills from HardNcEnv's <code>MaxRotarySpeedABC</code>.
</p>
Rapid polar events (G00 while G12.1 is active — disallowed by Fanuc and
warned at parse time) resolve to no act, matching HardNc.
</dd>
</dl>
<dl class="jumplist">
@@ -199,9 +248,40 @@ Does not emit any <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a>; o
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a></dt>
<dd><p>Resolves <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_SectionName">SectionName</a> section into
<a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a> (when M06 is present) or
<a class="xref" href="Hi.Numerical.Acts.ActToolingTeleport.html">ActToolingTeleport</a> (T-code only, no M06).
<a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a> when a change trigger is present
(<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_IsChangeKey">IsChangeKey</a> = true); a T-code-only
(pre-selection) block produces no act — magazine pre-rotation is PLC
work with no axis or spindle effect. The axis travel to the tooling
position is NOT emitted here: <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeMotionSyntax.html">ToolChangeMotionSyntax</a>
stamps it as a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a> at the syntax stage, and
this semantic is ordered after <a class="xref" href="Hi.NcParsers.Semantics.CompoundMotionSemantic.html">CompoundMotionSemantic</a> so
the <a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a> lands at the tooling position.
Reads <a class="xref" href="Hi.NcParsers.Dependencys.IToolingMcConfig.html#Hi_NcParsers_Dependencys_IToolingMcConfig_ToolingTime">ToolingTime</a> for the change duration.</p>
<p>
A string <code>ToolId</code> (Siemens <code>T="name"</code> call) is resolved to a
tool number through
<a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html#Hi_NcParsers_Dependencys_Siemens_SiemensToolOffsetTable_FindToolNumberByName_System_String_">FindToolNumberByName(string)</a>
— the act chain (<a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a>, tool-house lookup) is
int-keyed. An unresolvable name emits a
<code>ToolChange--NameUnresolved</code> warning and produces no act.
</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Semantics.ToolingTeleportSemantic.html">ToolingTeleportSemantic</a></dt>
<dd><p>Resolves the <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_SectionName">SectionName</a> section into
<a class="xref" href="Hi.Numerical.Acts.ActToolingTeleport.html">ActToolingTeleport</a>: the tool is equipped without the
machining-step operation (collision detection, volume removal) that
<a class="xref" href="Hi.NcParsers.Semantics.ToolChangeSemantic.html">ToolChangeSemantic</a>'s <a class="xref" href="Hi.Numerical.Acts.ActToolingStep.html">ActToolingStep</a> runs at
the chain's current pose. For pipelines whose source carries no machine
tool-change position: in CSV (recorded telemetry) the tool jumps to its
recorded position rather than running a modelled tool-changer cycle; in
CLSF the cutter-location stream has no machine coordinates at all, and a
step would stamp a cut at the not-yet-positioned device pose (identity =
the workpiece program zero). Fires only when
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ToolChangeSyntax.html#Hi_NcParsers_LogicSyntaxs_ToolChangeSyntax_IsChangeKey">IsChangeKey</a> is set (the block's tool id
differs from the previous one), so a long run of same-tool blocks emits a
single teleport.</p>
</dd>
</dl>
<h3 id="interfaces">