deploy fixed MRR drift and webservice CylindroidHolder buckle branch update issue.
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user