This commit is contained in:
2026-09-09 17:35:23 +08:00
parent 2a98ae7556
commit 161af68fe3
1271 changed files with 58251 additions and 98639 deletions
@@ -227,7 +227,19 @@ Class XyzabcUtil
<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>
@@ -475,6 +487,105 @@ to <span class="xref">Hi.Numerical.Xyzabc.IXyzabcChain.GetChainEnd</span>.</p>
<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)">