Archived
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:
@@ -107,7 +107,7 @@ block, applicable to any interpolated point along the contour.</li><li><a class=
|
||||
of a rotary-state-dependent transform (RTCP rotary-dynamic). Composing it
|
||||
produces a correct endpoint MC, but interpolated points along the contour
|
||||
must be derived per-step by motion semantics
|
||||
(<a class="xref" href="Hi.NcParsers.Semantics.ClLinearMotionSemantic.html">ClLinearMotionSemantic</a>); do not apply it to
|
||||
(<a class="xref" href="Hi.NcParsers.Semantics.ClLinearMcMotionSemantic.html">ClLinearMcMotionSemantic</a>); do not apply it to
|
||||
interpolated ProgramXyz.</li></ul>
|
||||
Both kinds carry a real Mat4d so composition stays a pure matrix product —
|
||||
no entry has a missing matrix. Use <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_HasDynamicEntry_System_Text_Json_Nodes_JsonObject_">HasDynamicEntry(JsonObject)</a> to detect
|
||||
@@ -484,6 +484,91 @@ the endpoint-semantic contract.</p>
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransformAtAbc_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.GetComposedTransformAtAbc*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransformAtAbc_System_Text_Json_Nodes_JsonObject_Hi_Geom_Vec3d_Hi_Geom_Vec3d_Hi_Numerical_Xyzabc_IMachineKinematics_System_Double_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.GetComposedTransformAtAbc(System.Text.Json.Nodes.JsonObject,Hi.Geom.Vec3d,Hi.Geom.Vec3d,Hi.Numerical.Xyzabc.IMachineKinematics,System.Double)">
|
||||
GetComposedTransformAtAbc(JsonObject, Vec3d, Vec3d, IMachineKinematics, double)
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Composes the chain into the Mat4d valid at an INTERPOLATED contour
|
||||
point whose rotary state is <code class="paramref">stepAbc_rad</code>, by
|
||||
rebuilding every <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_KindDynamic">KindDynamic</a> entry at that rotary state
|
||||
while keeping every <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_KindStatic">KindStatic</a> entry's stored snapshot.
|
||||
The per-step dual of <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransform_System_Text_Json_Nodes_JsonObject_">GetComposedTransform(JsonObject)</a>, which is
|
||||
endpoint-only when the chain carries a Dynamic entry.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static Mat4d GetComposedTransformAtAbc(JsonObject json, Vec3d stepAbc_rad, Vec3d endpointAbc_rad, IMachineKinematics kinematics, double toolHeightOffset_mm)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>json</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.text.json.nodes.jsonobject">JsonObject</a></dt>
|
||||
<dd><p>The block's JSON sections carrying the chain.</p>
|
||||
</dd>
|
||||
<dt><code>stepAbc_rad</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
|
||||
<dd><p>The interpolated point's MC rotary state in
|
||||
radians (NaN axes are treated as 0, mirroring
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PivotTransformUtil.html#Hi_NcParsers_LogicSyntaxs_PivotTransformUtil_ResolveEndpointAbc_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__Hi_NcParsers_Dependencys_IMachineAxisConfig_">ResolveEndpointAbc(LazyLinkedListNode<SyntaxPiece>, IMachineAxisConfig)</a>).</p>
|
||||
</dd>
|
||||
<dt><code>endpointAbc_rad</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
|
||||
<dd><p>The block-endpoint MC rotary state in
|
||||
radians — the state the stored Dynamic snapshots were built at.</p>
|
||||
</dd>
|
||||
<dt><code>kinematics</code> <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a></dt>
|
||||
<dd><p>The machine kinematics; null keeps every
|
||||
stored snapshot.</p>
|
||||
</dd>
|
||||
<dt><code>toolHeightOffset_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
|
||||
<dd><p>The block's
|
||||
<a class="xref" href="Hi.NcParsers.Keywords.ToolHeightCompensation.html">ToolHeightCompensation</a> offset in mm (the value its
|
||||
Dynamic height entry was built with).</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h4 class="section" id="Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransformAtAbc_System_Text_Json_Nodes_JsonObject_Hi_Geom_Vec3d_Hi_Geom_Vec3d_Hi_Numerical_Xyzabc_IMachineKinematics_System_Double__remarks">Remarks</h4>
|
||||
<div class="markdown level1 remarks"><p>Rebuild rules, per Dynamic entry source:</p>
|
||||
<ul><li><a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_ToolHeightCompensationSource">ToolHeightCompensationSource</a> — rebuilt with
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_MakeToolHeightMat_Hi_Numerical_Xyzabc_IMachineKinematics_Hi_Geom_Vec3d_System_Double_">MakeToolHeightMat(IMachineKinematics, Vec3d, double)</a> at <code class="paramref">stepAbc_rad</code>
|
||||
and <code class="paramref">toolHeightOffset_mm</code>: the same construction
|
||||
every writer uses (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html">G43p4RtcpSyntax</a>,
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensTraoriSyntax.html">SiemensTraoriSyntax</a>), so at
|
||||
<code class="paramref">stepAbc_rad</code> equal to the block-endpoint ABC the
|
||||
rebuilt matrix is bit-identical to the stored snapshot.</li><li><a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_PivotTransformSource">PivotTransformSource</a> — rebuilt
|
||||
anchor-agnostically as
|
||||
<code>stored · K(endpointAbc) · K(stepAbc)⁻¹</code>, recovering the
|
||||
writer's pre-pivot anchor (<code>preFrameToPn = stored · K(endpointAbc)</code>,
|
||||
see <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_MakePivotTransformMat_Hi_Numerical_Xyzabc_IMachineKinematics_Hi_Geom_Vec3d_Hi_Geom_Mat4d_">MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d)</a>)
|
||||
from the snapshot itself instead of assuming the NC pipeline's
|
||||
machine-zero anchor — the CLSF pivot
|
||||
(<a class="xref" href="Hi.Numerical.ClsfParsers.ClToMcTransformSyntax.html">ClToMcTransformSyntax</a>) folds a
|
||||
fixture-topology anchor into the same entry and stays correct here.</li><li>Any other Dynamic source — kept as stored (no rebuild recipe;
|
||||
no shipped writer produces one).</li></ul>
|
||||
With a <code>null</code> <code class="paramref">kinematics</code> every entry keeps its
|
||||
stored snapshot, collapsing to <a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransform_System_Text_Json_Nodes_JsonObject_">GetComposedTransform(JsonObject)</a> —
|
||||
correct for the only kinematics-less Dynamic corner (the
|
||||
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.G43p4RtcpSyntax.html">G43p4RtcpSyntax</a> UnitZ height fallback,
|
||||
whose matrix does not depend on ABC).
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_TransformationUtil_GetTransformBySource_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.GetTransformBySource*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_TransformationUtil_GetTransformBySource_System_Text_Json_Nodes_JsonObject_System_String_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.GetTransformBySource(System.Text.Json.Nodes.JsonObject,System.String)">
|
||||
@@ -580,10 +665,39 @@ a Pn-frame point, but expressed as a reusable Mat4d so the chain
|
||||
stays a pure matrix product (no per-point IK call inside
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_GetComposedTransform_System_Text_Json_Nodes_JsonObject_">GetComposedTransform(JsonObject)</a>).</p>
|
||||
<p>
|
||||
The pre-pivot anchor is the machine-zero attacher point
|
||||
<code>McToPn(0).Point</code> as a <b>pure translation</b> — the same
|
||||
origin anchor HardNc keeps in
|
||||
<code>HardNcEnv.AttacherAtMcZeroOnTableCoordinate</code>. Program-frame
|
||||
vectors already point along the Pn (table-buckle) axes, so only
|
||||
<code>K(0)</code>'s translation may enter the anchor. Folding the full
|
||||
<code>K(0)</code> (its linear part encodes per-axis motion sense — a
|
||||
workpiece-side linear axis contributes a <b>negated</b> row)
|
||||
would flip those axes' program components before the IK; on a
|
||||
machine whose Z rides the table (e.g. the B-x7000 WAC chain,
|
||||
table branch <code>Base→Z→B→W</code>) that mirrored every program Z
|
||||
and, at B≈180°, threw the resolved MC off by twice the
|
||||
pivot-to-attacher distance (~3.5 m).
|
||||
</p>
|
||||
<p>
|
||||
Requiring machine files to be modelled the other way instead —
|
||||
workpiece-side axes negative, which makes <code>K(0)</code>'s linear part
|
||||
the identity and the two constructions equivalent — was evaluated as
|
||||
an alternative to this fix and deliberately rejected.
|
||||
<a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> resolves either axis direction, so a
|
||||
file that positions correctly through
|
||||
<a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html#Hi_Numerical_Xyzabc_IMachineKinematics_PnToMc_Hi_Geom_DVec3d_Hi_Geom_DVec3d__">PnToMc(DVec3d, out DVec3d)</a> has to position correctly
|
||||
through this transform as well; a precondition enforced here and
|
||||
nowhere else would only make one consumer diverge from the kinematics
|
||||
on files every other consumer accepts. The modelling convention
|
||||
governs how MC values read against the machine panel, and belongs to
|
||||
a check on the data when it loads — never to this matrix.
|
||||
</p>
|
||||
<p>
|
||||
Constructed by probing <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html#Hi_Numerical_Xyzabc_IMachineKinematics_McToPn_Hi_Geom_DVec3d_">McToPn(DVec3d)</a> at
|
||||
the four standard basis points (origin + XYZ unit vectors) at the
|
||||
target ABC to derive <code>K(abc)</code>, and similarly at ABC=0 to derive
|
||||
<code>K(0)</code>; returns <code>K(0) · K(abc).GetInverse()</code>. Topology-
|
||||
target ABC to derive <code>K(abc)</code>; returns
|
||||
<code>T(McToPn(0).Point) · K(abc).GetInverse()</code>. Topology-
|
||||
agnostic — works for any affine kinematic chain regardless of axis
|
||||
order. Legacy <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html#Hi_Numerical_Xyzabc_IMachineKinematics_PnToMc_Hi_Geom_DVec3d_Hi_Geom_DVec3d__">PnToMc(DVec3d, out DVec3d)</a> remains the
|
||||
reference oracle.
|
||||
@@ -619,6 +733,57 @@ reference oracle.
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_TransformationUtil_MakePivotTransformMat_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.MakePivotTransformMat*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_TransformationUtil_MakePivotTransformMat_Hi_Numerical_Xyzabc_IMachineKinematics_Hi_Geom_Vec3d_Hi_Geom_Mat4d_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.MakePivotTransformMat(Hi.Numerical.Xyzabc.IMachineKinematics,Hi.Geom.Vec3d,Hi.Geom.Mat4d)">
|
||||
MakePivotTransformMat(IMachineKinematics, Vec3d, Mat4d)
|
||||
|
||||
</h3>
|
||||
|
||||
<div class="markdown level1 summary"><p>Variant anchored to an arbitrary pre-pivot frame: builds the
|
||||
<a class="xref" href="Hi.NcParsers.Syntaxs.TransformationUtil.html#Hi_NcParsers_Syntaxs_TransformationUtil_PivotTransformSource">PivotTransformSource</a> Mat4d
|
||||
<code>preFrameToPn · K(abc)⁻¹</code> that maps a point of the chain's
|
||||
accumulated pre-pivot frame directly to MC at the block's endpoint
|
||||
ABC. The two-parameter overload is this variant specialised to the
|
||||
NC pipeline's machine-zero program frame
|
||||
(<code>preFrameToPn = T(McToPn(0).Point)</code>, translation only — see
|
||||
its remarks for why <code>K(0)</code>'s linear part must stay out); the
|
||||
CLSF pipeline passes its workpiece→Pn fixture-topology matrix
|
||||
instead, so the pivot entry absorbs the workpiece placement
|
||||
together with the kinematics.</p>
|
||||
</div>
|
||||
<div class="markdown level1 conceptual"></div>
|
||||
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-csharp hljs">public static Mat4d MakePivotTransformMat(IMachineKinematics kinematics, Vec3d abc_rad, Mat4d preFrameToPn)</code></pre>
|
||||
</div>
|
||||
|
||||
<h4 class="section">Parameters</h4>
|
||||
<dl class="parameters">
|
||||
<dt><code>kinematics</code> <a class="xref" href="Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>abc_rad</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
|
||||
<dd></dd>
|
||||
<dt><code>preFrameToPn</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
<h4 class="section">Returns</h4>
|
||||
<dl class="parameters">
|
||||
<dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
|
||||
<dd></dd>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a id="Hi_NcParsers_Syntaxs_TransformationUtil_MakeToolHeightMat_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.MakeToolHeightMat*"></a>
|
||||
|
||||
<h3 id="Hi_NcParsers_Syntaxs_TransformationUtil_MakeToolHeightMat_Hi_Numerical_Xyzabc_IMachineKinematics_Hi_Geom_Vec3d_System_Double_" data-uid="Hi.NcParsers.Syntaxs.TransformationUtil.MakeToolHeightMat(Hi.Numerical.Xyzabc.IMachineKinematics,Hi.Geom.Vec3d,System.Double)">
|
||||
|
||||
Reference in New Issue
Block a user