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.NcParsers.Dependencys.IIndexingPositionConfig.html
T

468 lines
20 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>Interface IIndexingPositionConfig | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IIndexingPositionConfig | HiAPI-C# 2025 ">
<meta name="description" content="Indexing-axis position table: maps 1-based indexing position numbers to axis coordinates for axes that only take up discrete stations (Hirth couplings, indexing rotary tables, turret-style workholders). Consumed by the coded-position coordinate functions (Siemens CAC()/CIC()/CDC()/CACP()/CACN() — unwrapped by , resolved by / via ). Implemented by using the Siemens machine data (MD30500 $MA_INDEX_AX_ASSIGN_POS_TAB per axis; global tables MD10910/MD10930; equidistant MD30501–MD30503). Positions are expressed in the axis&#39; native units (degrees for rotary, mm for linear) in the coordinate frame the axis word itself is written in — machine coordinates for rotary words, program coordinates for linear words. Position numbering is 1-based: number 1 is the first table entry (the Siemens machine-data help and alarm texts count this way; the 0-based value range printed in some programming-manual editions describes the machine-data array index, not the programmable number).">
<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.Dependencys.IIndexingPositionConfig">
<h1 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig" class="text-break">
Interface IIndexingPositionConfig
</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.Dependencys.html">Dependencys</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Indexing-axis position table: maps 1-based indexing position numbers to
axis coordinates for axes that only take up discrete stations (Hirth
couplings, indexing rotary tables, turret-style workholders). Consumed
by the coded-position coordinate functions (Siemens
<code>CAC()</code>/<code>CIC()</code>/<code>CDC()</code>/<code>CACP()</code>/<code>CACN()</code> —
unwrapped by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a>,
resolved by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> /
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> via
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CodedPositionUtil.html">CodedPositionUtil</a>).
Implemented by <a class="xref" href="Hi.NcParsers.Dependencys.Siemens.SiemensMachineDataTable.html">SiemensMachineDataTable</a> using the
Siemens machine data (MD30500 <code>$MA_INDEX_AX_ASSIGN_POS_TAB</code> per
axis; global tables MD10910/MD10930; equidistant MD30501–MD30503).</p>
<p>
Positions are expressed in the axis' native units (degrees for rotary,
mm for linear) in the coordinate frame the axis word itself is written
in — machine coordinates for rotary words, program coordinates for
linear words. Position numbering is 1-based: number 1 is the first
table entry (the Siemens machine-data help and alarm texts count this
way; the 0-based value range printed in some programming-manual
editions describes the machine-data array index, not the programmable
number).
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IIndexingPositionConfig : INcDependency, IMakeXmlSource</code></pre>
</div>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html#Hi_Common_XmlUtils_IMakeXmlSource_MakeXmlSource_System_String_System_String_System_Boolean_">IMakeXmlSource.MakeXmlSource(string, string, bool)</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
</div>
<div>
<a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
</div>
<div>
<a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
</div>
</dd></dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_PositionMatchTolerance" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.PositionMatchTolerance">
PositionMatchTolerance
</h3>
<div class="markdown level1 summary"><p>Tolerance, in axis units (degrees or mm), within which an axis
position is considered exactly on an indexing position by
<a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html#Hi_NcParsers_Dependencys_IIndexingPositionConfig_TryFindIndexingAnchor_System_String_System_Double_System_Int32__System_Boolean__">TryFindIndexingAnchor(string, double, out int, out bool)</a>. Anchors come from previous
exact table writes, so the tolerance only needs to absorb float
round-trip drift — real indexing spacings are many orders of
magnitude larger.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const double PositionMatchTolerance = 1E-06</code></pre>
</div>
<h4 class="section">Field Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_GetIndexingPositionCount_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.GetIndexingPositionCount*"></a>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_GetIndexingPositionCount_System_String_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.GetIndexingPositionCount(System.String)">
GetIndexingPositionCount(string)
</h3>
<div class="markdown level1 summary"><p>Number of programmable indexing positions: the table length for
table-assigned axes, the per-cycle position count for cyclic
equidistant axes, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32.maxvalue">MaxValue</a> for unbounded
(non-cyclic equidistant) axes, and 0 when the axis is not a usable
indexing axis.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">int GetIndexingPositionCount(string axisName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>axisName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Axis name (e.g., &ldquo;C&rdquo;).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_IsIndexingAxis_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.IsIndexingAxis*"></a>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_IsIndexingAxis_System_String_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.IsIndexingAxis(System.String)">
IsIndexingAxis(string)
</h3>
<div class="markdown level1 summary"><p>True when the axis is configured as an indexing axis with a usable
position table (a non-empty table, or a valid equidistant
definition). An axis declared indexing but with an empty/invalid
table reports false — the coded-position words then stay
unrecognized (loud residue) instead of resolving against garbage.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool IsIndexingAxis(string axisName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>axisName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Axis name (e.g., &ldquo;C&rdquo;).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_IsIndexingCyclic_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.IsIndexingCyclic*"></a>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_IsIndexingCyclic_System_String_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.IsIndexingCyclic(System.String)">
IsIndexingCyclic(string)
</h3>
<div class="markdown level1 summary"><p>True when position-number arithmetic wraps modulo
<a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html#Hi_NcParsers_Dependencys_IIndexingPositionConfig_GetIndexingPositionCount_System_String_">GetIndexingPositionCount(string)</a> — an indexing axis that is
also a modular rotary axis
(<a class="xref" href="Hi.NcParsers.Dependencys.IMachineAxisConfig.html#Hi_NcParsers_Dependencys_IMachineAxisConfig_IsModularRotary_System_String_">IsModularRotary(string)</a>). Advancing past
the last position continues at position 1.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool IsIndexingCyclic(string axisName)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>axisName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Axis name (e.g., &ldquo;C&rdquo;).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_TryFindIndexingAnchor_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.TryFindIndexingAnchor*"></a>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_TryFindIndexingAnchor_System_String_System_Double_System_Int32__System_Boolean__" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.TryFindIndexingAnchor(System.String,System.Double,System.Int32@,System.Boolean@)">
TryFindIndexingAnchor(string, double, out int, out bool)
</h3>
<div class="markdown level1 summary"><p>Locates an axis position relative to the indexing table for
incremental (<code>CIC</code>) resolution: <code class="paramref">floorNumber</code>
is the number of the nearest indexing position at or below
<code class="paramref">position</code> (cyclically behind on cyclic axes; 0
when the position lies below the whole table on a non-cyclic axis),
and <code class="paramref">exactlyOnPosition</code> reports a match within
<a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html#Hi_NcParsers_Dependencys_IIndexingPositionConfig_PositionMatchTolerance">PositionMatchTolerance</a>. False when the axis is not a
usable indexing axis.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool TryFindIndexingAnchor(string axisName, double position, out int floorNumber, out bool exactlyOnPosition)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>axisName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Axis name (e.g., &ldquo;C&rdquo;).</p>
</dd>
<dt><code>position</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Current axis coordinate (degrees or mm); rotary values may lie outside one revolution and are normalized by the implementation.</p>
</dd>
<dt><code>floorNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Number of the nearest indexing position at or (cyclically) below the given position.</p>
</dd>
<dt><code>exactlyOnPosition</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>True when the position sits on an indexing position within <a class="xref" href="Hi.NcParsers.Dependencys.IIndexingPositionConfig.html#Hi_NcParsers_Dependencys_IIndexingPositionConfig_PositionMatchTolerance">PositionMatchTolerance</a>.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_TryGetIndexingPosition_" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.TryGetIndexingPosition*"></a>
<h3 id="Hi_NcParsers_Dependencys_IIndexingPositionConfig_TryGetIndexingPosition_System_String_System_Int32_System_Double__" data-uid="Hi.NcParsers.Dependencys.IIndexingPositionConfig.TryGetIndexingPosition(System.String,System.Int32,System.Double@)">
TryGetIndexingPosition(string, int, out double)
</h3>
<div class="markdown level1 summary"><p>Resolves a 1-based indexing position number to its axis coordinate.
False when the axis is not a usable indexing axis or the number is
outside <code>[1, count]</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool TryGetIndexingPosition(string axisName, int positionNumber, out double position)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>axisName</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Axis name (e.g., &ldquo;C&rdquo;).</p>
</dd>
<dt><code>positionNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>1-based indexing position number.</p>
</dd>
<dt><code>position</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Resolved axis coordinate (degrees or mm).</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></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>