deploy fixed MRR drift and webservice CylindroidHolder buckle branch update issue.

This commit is contained in:
2026-05-28 19:42:05 +08:00
parent d7836db45f
commit 95b5790622
140 changed files with 8079 additions and 14099 deletions
@@ -187,6 +187,116 @@ Heidenhain equivalent: PLANE SPATIAL (separate syntax).
</dd></dl>
<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>
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>,
and an identity Mat4d entry is added to
<a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a> so any
previously composed tilt rotation is reset:
</p>
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["G69"] } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"TiltTransform": { "Term": "G69" },
"ProgramToMcTransform": [
{
"Source": "TiltTransform",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1]
}
]
}</code></pre>
G68.2 with IJK = (0, 30, 0) and no kinematics dep — exercises the
pure ZXZ Fanuc euler math
(<code>Rz(K=0) * Rx(J=30°) * Rz(I=0) * Translate(0)</code> = Rx(30°))
without any IK refinement. The <a class="xref" href="Hi.NcParsers.Keywords.TiltTransform.html">TiltTransform</a> section
retains the G68.2 ctor params for debug; the chain entry's Mat4d
is the rotation matrix:
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "G68.2": { "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 } } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
"ProgramToMcTransform": [
{
"Source": "TiltTransform",
"Kind": "Static",
"Mat4d": [
1, 0, 0, 0,
0, 0.8660254037844387, 0.49999999999999994, 0,
0, -0.49999999999999994, 0.8660254037844387, 0,
0, 0, 0, 1
]
}
]
}</code></pre>
Same G68.2 IJK with a real
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcSolver.html">XyzabcSolver</a> (table-A / head-B
5-axis layout) — <code>hasPostAbc</code> is false but the kinematics
solves <code>OrientationToMcAbc(tiltByIjk)</code> successfully, so the
refinement path
<code>ijkAbcOrientation * orientationDelta * Translate(origin)</code>
runs. The resulting Mat4d preserves the IJK orientation but
aligns it with the kinematic ABC solution:
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "G68.2": { "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 } } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"TiltTransform": { "Term": "G68.2", "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
"ProgramToMcTransform": [
{
"Source": "TiltTransform",
"Kind": "Static",
"Mat4d": [
1, 0, 0, 0,
0, 0.8660254037844388, 0.5, 0,
0, -0.5, 0.8660254037844388, 0,
0, 0, 0, 1
]
}
]
}</code></pre>
G68.2 IJK with explicit post-processor rotary hints A=0, B=30 —
<code>hasPostAbc</code> is true, kinematics first solves
<code>tiltByIjk → ijkMcAbc</code>, then overrides A/B with the explicit
values to form <code>postMcAbc</code>; the final Mat4d combines
<code>postAbcOrient * orientationDeltaIjkToPost * Translate(origin)</code>.
The <a class="xref" href="Hi.NcParsers.Keywords.TiltTransform.html">TiltTransform</a> section gains the consumed
<code>A</code> and <code>B</code> entries:
#BeforeBuild:
<pre><code class="lang-csharp">{
"Parsing": {
"G68.2": { "X": 0, "Y": 0, "Z": 0, "I": 0, "J": 30, "K": 0 },
"A": 0,
"B": 30
}
}</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"TiltTransform": {
"Term": "G68.2",
"X": 0, "Y": 0, "Z": 0,
"I": 0, "J": 30, "K": 0,
"A": 0, "B": 30
},
"ProgramToMcTransform": [
{
"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, 0, 0, 1
]
}
]
}</code></pre>
<h2 id="Hi_NcParsers_LogicSyntaxs_IsoG68p2TiltSyntax_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p>G68.2 optionally uses <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> dependency for IK refinement.