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
@@ -188,8 +188,31 @@ Heidenhain equivalent: PLANE SPATIAL (separate syntax).
<h2 id="Hi_NcParsers_LogicSyntaxs_IsoG68p2TiltSyntax_examples">Examples</h2>
<p>G69 cancel via <a class="xref" href="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html#Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TryHandleG69_System_Text_Json_Nodes_JsonObject_System_Text_Json_Nodes_JsonObject_">TryHandleG69(JsonObject, JsonObject)</a> — the
kinematics-free short-circuit path that writes the identity tilt.</p>
<p>Real-kinematics cases below wire <code>TestDeps.CodeKinematics</code>
with the default chain code <code>[O][Z][A][w];[O][Y][X][B][S][t]</code>
— a <b>table-A / head-B 5-axis</b> machine. A pivots around -X
through origin (table side); B pivots around +Y through origin
(head side). Both pivot axes pass through <code>(0,0,0)</code> because
<a class="xref" href="Hi.Numerical.Xyzabc.CodeXyzabcChain.html">CodeXyzabcChain</a> uses zero-offset
component attachments — origin pivots are physically realistic
for a table-table trunnion layout but not for a head pivot on a
real table-head machine; here the zero-offset chain is a
pedagogical simplification. Only the IK-refinement cases (2 and
3) use kinematics; cases 0 (G69 cancel) and 1 (pure IJK euler)
are kinematics-free.</p>
<p>
Verification cue: the IK refinement path computes
<code>orientationDelta = ijkAbcOrient.Inverse * ijkRotation</code> to
preserve the exact IJK orientation while aligning with the
kinematic ABC solution. For this chain at IJK=(0,30°,0), the
solver's polished convergence lands the table-A angle within
~1e-8 rad of 30°, and that residual lives in the Mat4d
off-diagonals visible in case 3 (≈1e-8-scale entries).
</p>
<p>
G69 cancel via <a class="xref" href="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html#Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TryHandleG69_System_Text_Json_Nodes_JsonObject_System_Text_Json_Nodes_JsonObject_">TryHandleG69(JsonObject, JsonObject)</a> — the
kinematics-free short-circuit path that writes the identity tilt.
</p>
<p>
Standalone <code>G69</code> — the flag is consumed,
<a class="xref" href="Hi.NcParsers.Keywords.TiltTransform.html">TiltTransform</a> is written with <code>Term: "G69"</code>,
@@ -253,8 +276,8 @@ aligns it with the kinematic ABC solution:
"Kind": "Static",
"Mat4d": [
1, 0, 0, 0,
0, 0.8660254037844388, 0.5, 0,
0, -0.5, 0.8660254037844388, 0,
0, 0.8660254037844388, 0.49999999999999994, 0,
0, -0.49999999999999994, 0.8660254037844388, 0,
0, 0, 0, 1
]
}
@@ -288,9 +311,9 @@ The <a class="xref" href="Hi.NcParsers.Keywords.TiltTransform.html">TiltTransfor
"Source": "TiltTransform",
"Kind": "Static",
"Mat4d": [
0.8660254037844387, 0.0002477343364339079, -0.4999999386276948, 0,
0, 0.9999998772553897, 0.0004954686728678159, 0,
0.49999999999999994, -0.00042908845748289027, 0.8660252974844881, 0,
0.8660254037844387, 9.927341754201178E-09, -0.4999999999999999, 0,
0, 0.9999999999999999, 1.985468350840236E-08, 0,
0.49999999999999994, -1.719466030237639E-08, 0.8660254037844386, 0,
0, 0, 0, 1
]
}
@@ -310,6 +333,15 @@ the tilt is computed as:
where <code>orientationDelta = kinematicRotation(ijkAbc).Inverse * ijkRotation</code>
preserves the exact IJK orientation while aligning with the post-processor's solution.
</p>
<p>
When kinematics is configured but the inverse-kinematics solve fails
(orientation outside rotary-axis travel, or unrepresentable by the
chain), the tilt falls back to the un-refined IJK euler result and a
validation warning is emitted — <code>Coord-Tilt--001</code> on the plain
IJK path, <code>Coord-Tilt--002</code> on the explicit A/B/C path. A missing
kinematics dependency is not a warning: IK is optional refinement for
G68.2 and the euler tilt is a complete result on its own.
</p>
</div>