This commit is contained in:
2026-09-13 19:45:24 +08:00
parent 397a7a8cc4
commit 2db889ad89
58 changed files with 3526 additions and 213 deletions
@@ -204,6 +204,69 @@ stays Static.</p>
<a id="Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_PinTiltInMachineSpaceAcrossRotaryWords_" data-uid="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.PinTiltInMachineSpaceAcrossRotaryWords*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_PinTiltInMachineSpaceAcrossRotaryWords_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Text_Json_Nodes_JsonObject_System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__" data-uid="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.PinTiltInMachineSpaceAcrossRotaryWords(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Text.Json.Nodes.JsonObject,System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency})">
PinTiltInMachineSpaceAcrossRotaryWords(LazyLinkedListNode&lt;SyntaxPiece&gt;, JsonObject, List&lt;INcDependency&gt;)
</h3>
<div class="markdown level1 summary"><p>Pins the tilted-plane feature frame in <b>machine</b> space across a
rotary word: on a block that spoke A/B/C (one-shot
<a class="xref" href="Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a> record) under an active tilt, rewrites the
block's <a class="xref" href="Hi.NcParsers.LogicSyntaxs.TiltTransformUtil.html#Hi_NcParsers_LogicSyntaxs_TiltTransformUtil_TransformSource">TransformSource</a> entry so that
<code>Tilt(cur)·Pivot(cur) == Tilt(prev)·Pivot(prev)</code> — the feature
point the program addresses stays where it was in machine space and
the table turns underneath it. This is the Fanuc TWP behaviour HardNc
reproduces through <code>NcArgG68p2.PostMcAbc_rad</code> (the delta between
the line's rotary word and the IJK solution re-anchors the feature
frame; the comment there cites CHEM20180926 N10, whose
<code>G81 … C20.</code>/<code>C40.</code>/… drill a bolt circle on the periphery
while the tip never leaves its machine position). Without it the
carried tilt stays attached to the table and every C-indexed hole
lands on the same spot of the part.</p>
<p>
Silently no-ops when the block spoke no rotary word, when
<a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> is absent, or when the previous
block carries no <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_PivotTransformSource">PivotTransformSource</a>
entry (the tilt was not yet active there — nothing to pin). Must run
before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html#Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_ComposePivotEntry_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Text_Json_Nodes_JsonObject_System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__">ComposePivotEntry(LazyLinkedListNode&lt;SyntaxPiece&gt;, JsonObject, List&lt;INcDependency&gt;)</a> on the same block so the
pivot it composes is the one the rewritten tilt was solved against.
Brand gates decide whether their tilt vocabulary wants this
(<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PivotTransformationSyntax.html">PivotTransformationSyntax</a> applies it to G68.2 without
RTCP: under G43.4 the tool centre point is tracked in the
workpiece-fixed feature frame while the rotaries move — the tilted
CL→NC writeback replays on that contract — so a rotary word there is
contouring, not indexing, and the carried tilt stays on the table).
</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void PinTiltInMachineSpaceAcrossRotaryWords(LazyLinkedListNode&lt;SyntaxPiece&gt; syntaxPieceNode, JsonObject json, List&lt;INcDependency&gt; ncDependencyList)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>syntaxPieceNode</code> <a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html">LazyLinkedListNode</a>&lt;<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a>&gt;</dt>
<dd></dd>
<dt><code>json</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a></dt>
<dd></dd>
<dt><code>ncDependencyList</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_ResolveEndpointAbc_" data-uid="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.ResolveEndpointAbc*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_ResolveEndpointAbc_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__Hi_NcParsers_Dependencys_IMachineAxisConfig_" data-uid="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.ResolveEndpointAbc(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},Hi.NcParsers.Dependencys.IMachineAxisConfig)">