This repository has been archived on 2026-10-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.Xyzabc.XyzabcUtil.html
T
2026-09-17 10:22:49 +08:00

818 lines
30 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class XyzabcUtil | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class XyzabcUtil | HiAPI-C# 2025 ">
<meta name="description" content="Utility of XYZABC device.">
<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.Numerical.Xyzabc.XyzabcUtil">
<h1 id="Hi_Numerical_Xyzabc_XyzabcUtil" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil" class="text-break">
Class XyzabcUtil
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Numerical.html">Numerical</a>.<a class="xref" href="Hi.Numerical.Xyzabc.html">Xyzabc</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Utility of XYZABC device.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class XyzabcUtil</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">XyzabcUtil</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="methods">Methods
</h2>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_BuildAnchorToSolid_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.BuildAnchorToSolid*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_BuildAnchorToSolid_System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_NcMech_Solids_Solid__System_Collections_Generic_IEnumerable_Hi_Mech_Topo_Anchor__System_Collections_Generic_Dictionary_System_String_Hi_NcMech_Solids_Solid__" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.BuildAnchorToSolid(System.Collections.Generic.Dictionary{Hi.Mech.Topo.Anchor,Hi.NcMech.Solids.Solid},System.Collections.Generic.IEnumerable{Hi.Mech.Topo.Anchor},System.Collections.Generic.Dictionary{System.String,Hi.NcMech.Solids.Solid})">
BuildAnchorToSolid(Dictionary&lt;Anchor, Solid&gt;, IEnumerable&lt;Anchor&gt;, Dictionary&lt;string, Solid&gt;)
</h3>
<div class="markdown level1 summary"><p>Builds a dictionary mapping anchors to solids.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void BuildAnchorToSolid(this Dictionary&lt;Anchor, Solid&gt; dstAnchorToSolidDictionary, IEnumerable&lt;Anchor&gt; anchors, Dictionary&lt;string, Solid&gt; keyToSolid)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>dstAnchorToSolidDictionary</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a>, <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>&gt;</dt>
<dd><p>The destination dictionary to populate</p>
</dd>
<dt><code>anchors</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a>&gt;</dt>
<dd><p>List of anchors</p>
</dd>
<dt><code>keyToSolid</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>&gt;</dt>
<dd><p>Dictionary mapping anchor names to solids</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GenerateCollisionIndexPairs_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GenerateCollisionIndexPairs*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GenerateCollisionIndexPairs_Hi_Numerical_Xyzabc_IXyzabcChain_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GenerateCollisionIndexPairs(Hi.Numerical.Xyzabc.IXyzabcChain)">
GenerateCollisionIndexPairs(IXyzabcChain)
</h3>
<div class="markdown level1 summary"><p>Generate collision index pairs for the XYZABC chain.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static List&lt;CollisionIndexPair&gt; GenerateCollisionIndexPairs(this IXyzabcChain xyzabcChain)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>xyzabcChain</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>The XYZABC chain</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.Collision.CollisionIndexPair.html">CollisionIndexPair</a>&gt;</dt>
<dd><p>List of collision index pairs</p>
</dd>
</dl>
<h4 class="section" id="Hi_Numerical_Xyzabc_XyzabcUtil_GenerateCollisionIndexPairs_Hi_Numerical_Xyzabc_IXyzabcChain__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The pairs are read off the two anchor chains from the ground anchor to the tool end and to
the worktable end, so both end anchors must resolve; a chain missing one fails through
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchors_Hi_Numerical_Xyzabc_IXyzabcChain_">RequireEndAnchors(IXyzabcChain)</a> with the keyword named. This is the first consumer on the
machine-file load path when the file says <code>AutoGenerate</code>.</p>
</div>
<h4 class="section">Exceptions</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.invalidoperationexception">InvalidOperationException</a></dt>
<dd><p>An end anchor is missing.</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMc_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_DVec3d__" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMc(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Geom.DVec3d@)">
GetMc(IXyzabcChain, out DVec3d)
</h3>
<div class="markdown level1 summary"><p>Get machine coordinates.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void GetMc(this IXyzabcChain device, out DVec3d mc)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>The XYZABC device</p>
</dd>
<dt><code>mc</code> <a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>Output machine coordinate as DVec3d</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMc_Hi_Numerical_Xyzabc_IXyzabcChain_System_Double__System_Double__System_Double__System_Double__System_Double__System_Double__" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMc(Hi.Numerical.Xyzabc.IXyzabcChain,System.Double@,System.Double@,System.Double@,System.Double@,System.Double@,System.Double@)">
GetMc(IXyzabcChain, out double, out double, out double, out double, out double, out double)
</h3>
<div class="markdown level1 summary"><p>Get machine coordinates.
The output value set to NAN if the corresponding transformer does not exist.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void GetMc(this IXyzabcChain device, out double mcX, out double mcY, out double mcZ, out double mcA, out double mcB, out double mcC)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate X</p>
</dd>
<dt><code>mcY</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Y</p>
</dd>
<dt><code>mcZ</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Z</p>
</dd>
<dt><code>mcA</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate A (rad)</p>
</dd>
<dt><code>mcB</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate B (rad)</p>
</dd>
<dt><code>mcC</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate C (rad)</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMcAbc_rad_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMcAbc_rad*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMcAbc_rad_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Numerical_Xyzabc_Abc__" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMcAbc_rad(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Numerical.Xyzabc.Abc@)">
GetMcAbc_rad(IXyzabcChain, out Abc)
</h3>
<div class="markdown level1 summary"><p>Get machine coordinates.
The output value set to NAN if the corresponding transformer does not exist.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void GetMcAbc_rad(this IXyzabcChain device, out Abc mcAbc_rad)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcAbc_rad</code> <a class="xref" href="Hi.Numerical.Xyzabc.Abc.html">Abc</a></dt>
<dd><p>Output machine coordinates ABC in radians</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMcXyzabc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMcXyzabc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetMcXyzabc_Hi_Numerical_Xyzabc_IXyzabcChain_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetMcXyzabc(Hi.Numerical.Xyzabc.IXyzabcChain)">
GetMcXyzabc(IXyzabcChain)
</h3>
<div class="markdown level1 summary"><p>Get machine coordinates as DVec3d.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static DVec3d GetMcXyzabc(this IXyzabcChain device)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>The XYZABC device</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>Machine coordinate as DVec3d. ABC in rad.</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetNp_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetNp*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetNp_Hi_Numerical_Xyzabc_IXyzabcChain_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetNp(Hi.Numerical.Xyzabc.IXyzabcChain)">
GetNp(IXyzabcChain)
</h3>
<div class="markdown level1 summary"><p>Get normal and position from <span class="xref">Hi.Numerical.Xyzabc.IXyzabcChain.GetChainBegin</span>
to <span class="xref">Hi.Numerical.Xyzabc.IXyzabcChain.GetChainEnd</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static DVec3d GetNp(this IXyzabcChain src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>src</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>normal and position</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_GetTransformationMat4d_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetTransformationMat4d*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_GetTransformationMat4d_Hi_Numerical_Xyzabc_IXyzabcChain_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.GetTransformationMat4d(Hi.Numerical.Xyzabc.IXyzabcChain)">
GetTransformationMat4d(IXyzabcChain)
</h3>
<div class="markdown level1 summary"><p>Get transformation matrix from <span class="xref">Hi.Numerical.Xyzabc.IXyzabcChain.GetChainBegin</span>
to <span class="xref">Hi.Numerical.Xyzabc.IXyzabcChain.GetChainEnd</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static Mat4d GetTransformationMat4d(this IXyzabcChain src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>src</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
<dd><p>transformation matrix</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchor_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.RequireEndAnchor*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchor_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Mech_Topo_IGetAnchor_System_String_System_String_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.RequireEndAnchor(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Mech.Topo.IGetAnchor,System.String,System.String)">
RequireEndAnchor(IXyzabcChain, IGetAnchor, string, string)
</h3>
<div class="markdown level1 summary"><p>Fails with the name of the missing end anchor instead of with a
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.nullreferenceexception">NullReferenceException</a> somewhere past it.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void RequireEndAnchor(this IXyzabcChain src, IGetAnchor buckle, string keyword, string role)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>The chain being validated.</p>
</dd>
<dt><code>buckle</code> <a class="xref" href="Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></dt>
<dd><p>The end anchor accessor to validate.</p>
</dd>
<dt><code>keyword</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The exact anchor name the chain requires, <code>t</code> or <code>w</code>.</p>
</dd>
<dt><code>role</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The end's role, for the message.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchor_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Mech_Topo_IGetAnchor_System_String_System_String__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The topology keyword vocabulary is matched exactly — see
<a class="xref" href="Hi.Numerical.Xyzabc.GeneralXyzabcChain.html#Hi_Numerical_Xyzabc_GeneralXyzabcChain_UpdateByMechanism">UpdateByMechanism()</a> — so a chain whose end anchor is spelled
in another letter case has no end anchor at all. That is the one cause worth naming outright,
because nothing else in the application points at letter case. Every consumer that
dereferences a buckle unconditionally should pass through here first; the two today are
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_GenerateCollisionIndexPairs_Hi_Numerical_Xyzabc_IXyzabcChain_">GenerateCollisionIndexPairs(IXyzabcChain)</a> (the machine-file load path, where
<code>AutoGenerate</code> collision pairs walk from the ground anchor to each end) and
<a class="xref" href="Hi.Numerical.Xyzabc.ReflectedXyzabcChain.html">ReflectedXyzabcChain</a> (the solver).</p>
</div>
<h4 class="section">Exceptions</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.invalidoperationexception">InvalidOperationException</a></dt>
<dd><p>The chain carries no such end anchor.</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchors_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.RequireEndAnchors*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchors_Hi_Numerical_Xyzabc_IXyzabcChain_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.RequireEndAnchors(Hi.Numerical.Xyzabc.IXyzabcChain)">
RequireEndAnchors(IXyzabcChain)
</h3>
<div class="markdown level1 summary"><p>Requires both end anchors — the worktable end <code>w</code> and the tool end <code>t</code> — with
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchor_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Mech_Topo_IGetAnchor_System_String_System_String_">RequireEndAnchor(IXyzabcChain, IGetAnchor, string, string)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void RequireEndAnchors(this IXyzabcChain src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>The chain being validated.</p>
</dd>
</dl>
<h4 class="section">Exceptions</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.invalidoperationexception">InvalidOperationException</a></dt>
<dd><p>Either end anchor is missing.</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_DVec3d_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Geom.DVec3d)">
SetMc(IXyzabcChain, DVec3d)
</h3>
<div class="markdown level1 summary"><p>Set machine coordinate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetMc(this IXyzabcChain device, DVec3d mc)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mc</code> <a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>machine coordinate</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_Vec3d_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Geom.Vec3d)">
SetMc(IXyzabcChain, Vec3d)
</h3>
<div class="markdown level1 summary"><p>Set machine coordinate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetMc(this IXyzabcChain device, Vec3d mcXyz)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcXyz</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Machine coordinate XYZ</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_System_Double_System_Double_System_Double_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc(Hi.Numerical.Xyzabc.IXyzabcChain,System.Double,System.Double,System.Double)">
SetMc(IXyzabcChain, double, double, double)
</h3>
<div class="markdown level1 summary"><p>Set machine coordinate.
The input value do no effect if the corresponding transformer does not exist.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetMc(this IXyzabcChain device, double mcX, double mcY, double mcZ)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate X</p>
</dd>
<dt><code>mcY</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Y</p>
</dd>
<dt><code>mcZ</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Z</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMc(Hi.Numerical.Xyzabc.IXyzabcChain,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)">
SetMc(IXyzabcChain, double, double, double, double, double, double)
</h3>
<div class="markdown level1 summary"><p>Set machine coordinate.
The input value do no effect if the corresponding transformer does not exist.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetMc(this IXyzabcChain device, double mcX, double mcY, double mcZ, double mcA, double mcB, double mcC)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcX</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate X</p>
</dd>
<dt><code>mcY</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Y</p>
</dd>
<dt><code>mcZ</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate Z</p>
</dd>
<dt><code>mcA</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate A</p>
</dd>
<dt><code>mcB</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate B</p>
</dd>
<dt><code>mcC</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>machine coordinate C</p>
</dd>
</dl>
<a id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMcAbc_rad_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMcAbc_rad*"></a>
<h3 id="Hi_Numerical_Xyzabc_XyzabcUtil_SetMcAbc_rad_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_Vec3d_" data-uid="Hi.Numerical.Xyzabc.XyzabcUtil.SetMcAbc_rad(Hi.Numerical.Xyzabc.IXyzabcChain,Hi.Geom.Vec3d)">
SetMcAbc_rad(IXyzabcChain, Vec3d)
</h3>
<div class="markdown level1 summary"><p>Set machine coordinate.
The input value do no effect if the corresponding transformer does not exist.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void SetMcAbc_rad(this IXyzabcChain device, Vec3d mcAbc_rad)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>device</code> <a class="xref" href="Hi.Numerical.Xyzabc.IXyzabcChain.html">IXyzabcChain</a></dt>
<dd><p>device</p>
</dd>
<dt><code>mcAbc_rad</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>Machine coordinate ABC in radians</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>