HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html

421 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CoordinateOffsetUtil | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CoordinateOffsetUtil | HiAPI-C# 2025 ">
<meta name="description" content="Shared utilities for all coordinate offset syntaxes (ISO, Siemens, Heidenhain). Handles section IO, backward lookback, and composition.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil">
<h1 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil" class="text-break">
Class CoordinateOffsetUtil
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcParsers.html">NcParsers</a>.<a class="xref" href="Hi.NcParsers.LogicSyntaxs.html">LogicSyntaxs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Shared utilities for all coordinate offset syntaxes
(ISO, Siemens, Heidenhain). Handles section IO,
backward lookback, and <a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a> composition.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class CoordinateOffsetUtil</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">CoordinateOffsetUtil</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
</dd></dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_TransformSource" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.TransformSource">
TransformSource
</h3>
<div class="markdown level1 summary"><p>Identifier used as the transform source key when composing the
coordinate offset translation into <a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string TransformSource = &quot;CoordinateOffset&quot;</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_ComposeTranslation_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.ComposeTranslation*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_ComposeTranslation_System_Text_Json_Nodes_JsonObject_Hi_Geom_Vec3d_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.ComposeTranslation(System.Text.Json.Nodes.JsonObject,Hi.Geom.Vec3d)">
ComposeTranslation(JsonObject, Vec3d)
</h3>
<div class="markdown level1 summary"><p>Composes a translation matrix from the given offset and registers it
under <a class="xref" href="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.html#Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_TransformSource">TransformSource</a> in the block's transform stack.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void ComposeTranslation(JsonObject json, Vec3d offset)</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>Block JSON object to update.</p>
</dd>
<dt><code>offset</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Translation offset to apply.</p>
</dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_FindPreviousCoordinateId_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.FindPreviousCoordinateId*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_FindPreviousCoordinateId_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.FindPreviousCoordinateId(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece})">
FindPreviousCoordinateId(LazyLinkedListNode&lt;SyntaxPiece&gt;)
</h3>
<div class="markdown level1 summary"><p>Walks the previous node and returns its <a class="xref" href="Hi.NcParsers.Keywords.CoordinateOffset.html#Hi_NcParsers_Keywords_CoordinateOffset_CoordinateId">CoordinateId</a>
if any; used for modal lookback when the current block does not specify one.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string FindPreviousCoordinateId(LazyLinkedListNode&lt;SyntaxPiece&gt; node)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>node</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><p>Current node to look back from.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_GetCurrentCoordinateId_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.GetCurrentCoordinateId*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_GetCurrentCoordinateId_System_Text_Json_Nodes_JsonObject_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.GetCurrentCoordinateId(System.Text.Json.Nodes.JsonObject)">
GetCurrentCoordinateId(JsonObject)
</h3>
<div class="markdown level1 summary"><p>Gets CoordinateId from the current node's existing CoordinateOffset section
(e.g., set by <a class="xref" href="Hi.NcParsers.Initializers.StaticInitializer.html">StaticInitializer</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string GetCurrentCoordinateId(JsonObject json)</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></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_ResolveOffset_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.ResolveOffset*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_ResolveOffset_System_Collections_Generic_IEnumerable_Hi_NcParsers_Dependencys_INcDependency__System_String_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.ResolveOffset(System.Collections.Generic.IEnumerable{Hi.NcParsers.Dependencys.INcDependency},System.String)">
ResolveOffset(IEnumerable&lt;INcDependency&gt;, string)
</h3>
<div class="markdown level1 summary"><p>Resolves the offset for <code class="paramref">coordId</code> by scanning every
<a class="xref" href="Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> in <code class="paramref">ncDependencyList</code>
and returning the first non-null result. Returns null when no provider
has data for this id (callers should fall back to <a class="xref" href="Hi.Geom.Vec3d.html#Hi_Geom_Vec3d_Zero">Zero</a>).</p>
<p>
Multi-provider iteration lets a brand parameter table cover the
hardware-mapped subset (e.g. Fanuc G54G59, G54.1 P1P48 backed by
real parameter numbers) while a standalone <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>
covers HiNC-extension ids the brand table does not handle (e.g. G59.1G59.9).
</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Vec3d ResolveOffset(IEnumerable&lt;INcDependency&gt; ncDependencyList, string coordId)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ncDependencyList</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a>&gt;</dt>
<dd></dd>
<dt><code>coordId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_WriteSection_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.WriteSection*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_CoordinateOffsetUtil_WriteSection_System_Text_Json_Nodes_JsonObject_System_String_Hi_Geom_Vec3d_" data-uid="Hi.NcParsers.LogicSyntaxs.CoordinateOffsetUtil.WriteSection(System.Text.Json.Nodes.JsonObject,System.String,Hi.Geom.Vec3d)">
WriteSection(JsonObject, string, Vec3d)
</h3>
<div class="markdown level1 summary"><p>Writes the <a class="xref" href="Hi.NcParsers.Keywords.CoordinateOffset.html">CoordinateOffset</a> section with the given
coordinate id and XYZ offset components.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void WriteSection(JsonObject json, string coordId, Vec3d offset)</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>Block JSON object to update.</p>
</dd>
<dt><code>coordId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Coordinate system identifier (e.g., G54).</p>
</dd>
<dt><code>offset</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Offset translation in machine coordinates.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
</div>
</div>
</footer>
</body>
</html>