HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.Numerical.RadiusCompensationBuf.html

532 lines
19 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class RadiusCompensationBuf | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class RadiusCompensationBuf | HiAPI-C# 2025 ">
<meta name="description" content="Buffer for radius compensation (G41/G42) operations in numerical control. At each line junction, the offset paths of adjacent lines may form an intersection (intersected rays) or align directly (parallel rays). For straight lines, the tool goes to the intersection point. For arcs, the offset curve doesn&#39;t pass through the intersection, so transient points bridge the gap: Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc. Transient properties are null when rays are parallel (offset paths align, no corner needed) or when the adjacent line is not an arc.">
<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.RadiusCompensationBuf">
<h1 id="Hi_Numerical_RadiusCompensationBuf" data-uid="Hi.Numerical.RadiusCompensationBuf" class="text-break">
Class RadiusCompensationBuf
</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></dd></dl>
<dl><dt>Assembly</dt><dd>HiUniNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Buffer for radius compensation (G41/G42) operations in numerical control.</p>
<p>
At each line junction, the offset paths of adjacent lines may form an intersection
(intersected rays) or align directly (parallel rays). For straight lines, the tool
goes to the intersection point. For arcs, the offset curve doesn't pass through the
intersection, so transient points bridge the gap:
<code>Arc → TransientEnd → (linear) → Intersection → (linear) → TransientBegin → NextArc</code>.
</p>
<p>
Transient properties are null when rays are parallel (offset paths align, no corner needed)
or when the adjacent line is not an arc.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class RadiusCompensationBuf</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">RadiusCompensationBuf</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>
</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="constructors">Constructors
</h2>
<a id="Hi_Numerical_RadiusCompensationBuf__ctor_" data-uid="Hi.Numerical.RadiusCompensationBuf.#ctor*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf__ctor" data-uid="Hi.Numerical.RadiusCompensationBuf.#ctor">
RadiusCompensationBuf()
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Numerical.RadiusCompensationBuf.html">RadiusCompensationBuf</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public RadiusCompensationBuf()</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Numerical_RadiusCompensationBuf_CenterProgramPos_" data-uid="Hi.Numerical.RadiusCompensationBuf.CenterProgramPos*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_CenterProgramPos" data-uid="Hi.Numerical.RadiusCompensationBuf.CenterProgramPos">
CenterProgramPos
</h3>
<div class="markdown level1 summary"><p>Arc only. The circle center in program coordinates, computed from the arc's IJK
values and the begin position. Used by <a class="xref" href="Hi.Numerical.NcProc.html">NcProc</a> to generate spiral contours.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d CenterProgramPos { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_CompensatedPosOnProgramCoordinate_" data-uid="Hi.Numerical.RadiusCompensationBuf.CompensatedPosOnProgramCoordinate*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_CompensatedPosOnProgramCoordinate" data-uid="Hi.Numerical.RadiusCompensationBuf.CompensatedPosOnProgramCoordinate">
CompensatedPosOnProgramCoordinate
</h3>
<div class="markdown level1 summary"><p>The compensated tool-tip position on program coordinates (after radius offset).
For straight lines, this is the intersection of the adjacent offset lines.
For parallel rays, this is a direct perpendicular offset from the program position.
Can be Cartesian XYZ or Polar Coordinate Interpolation Mode (G12.1) XCZ.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d CompensatedPosOnProgramCoordinate { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_TransientBeginMc_" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientBeginMc*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_TransientBeginMc" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientBeginMc">
TransientBeginMc
</h3>
<div class="markdown level1 summary"><p>Arc only. Machine coordinates corresponding to <a class="xref" href="Hi.Numerical.RadiusCompensationBuf.html#Hi_Numerical_RadiusCompensationBuf_TransientBeginProgramPos">TransientBeginProgramPos</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DVec3d TransientBeginMc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_TransientBeginProgramPos_" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientBeginProgramPos*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_TransientBeginProgramPos" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientBeginProgramPos">
TransientBeginProgramPos
</h3>
<div class="markdown level1 summary"><p>Arc only. The point on this arc's offset curve where the arc motion begins,
when the previous line's offset path intersects at a corner.
Null when rays are parallel (no corner) or the previous line is not intersecting.
Set by the previous line's iteration in <a class="xref" href="Hi.Numerical.RadiusCompensationBuf.html#Hi_Numerical_RadiusCompensationBuf_ResolveRadiusCompensation_System_Collections_Generic_LinkedListNode_Hi_Numerical_HardNcLine__Hi_Numerical_HardNcEnv_Hi_Numerical_NcNoteCache_System_IProgress_System_Object__">ResolveRadiusCompensation(LinkedListNode&lt;HardNcLine&gt;, HardNcEnv, NcNoteCache, IProgress&lt;object&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d TransientBeginProgramPos { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_TransientEndMc_" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientEndMc*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_TransientEndMc" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientEndMc">
TransientEndMc
</h3>
<div class="markdown level1 summary"><p>Arc only. Machine coordinates corresponding to <a class="xref" href="Hi.Numerical.RadiusCompensationBuf.html#Hi_Numerical_RadiusCompensationBuf_TransientEndProgramPos">TransientEndProgramPos</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DVec3d TransientEndMc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_TransientEndProgramPos_" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientEndProgramPos*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_TransientEndProgramPos" data-uid="Hi.Numerical.RadiusCompensationBuf.TransientEndProgramPos">
TransientEndProgramPos
</h3>
<div class="markdown level1 summary"><p>Arc only. The point on this arc's offset curve where the arc motion ends,
when the next line's offset path intersects at a corner.
Null when rays are parallel (no corner) or the next line is not intersecting.
Set by the current line's iteration in <a class="xref" href="Hi.Numerical.RadiusCompensationBuf.html#Hi_Numerical_RadiusCompensationBuf_ResolveRadiusCompensation_System_Collections_Generic_LinkedListNode_Hi_Numerical_HardNcLine__Hi_Numerical_HardNcEnv_Hi_Numerical_NcNoteCache_System_IProgress_System_Object__">ResolveRadiusCompensation(LinkedListNode&lt;HardNcLine&gt;, HardNcEnv, NcNoteCache, IProgress&lt;object&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d TransientEndProgramPos { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Numerical_RadiusCompensationBuf_ResolveRadiusCompensation_" data-uid="Hi.Numerical.RadiusCompensationBuf.ResolveRadiusCompensation*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_ResolveRadiusCompensation_System_Collections_Generic_LinkedListNode_Hi_Numerical_HardNcLine__Hi_Numerical_HardNcEnv_Hi_Numerical_NcNoteCache_System_IProgress_System_Object__" data-uid="Hi.Numerical.RadiusCompensationBuf.ResolveRadiusCompensation(System.Collections.Generic.LinkedListNode{Hi.Numerical.HardNcLine},Hi.Numerical.HardNcEnv,Hi.Numerical.NcNoteCache,System.IProgress{System.Object})">
ResolveRadiusCompensation(LinkedListNode&lt;HardNcLine&gt;, HardNcEnv, NcNoteCache, IProgress&lt;object&gt;)
</h3>
<div class="markdown level1 summary"><p>Resolves radius compensation for the given node.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool ResolveRadiusCompensation(LinkedListNode&lt;HardNcLine&gt; srcNode, HardNcEnv ncEnv, NcNoteCache ncLineCache, IProgress&lt;object&gt; messageHost)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>srcNode</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.linkedlistnode-1">LinkedListNode</a>&lt;<a class="xref" href="Hi.Numerical.HardNcLine.html">HardNcLine</a>&gt;</dt>
<dd><p>The source node to resolve radius compensation for.</p>
</dd>
<dt><code>ncEnv</code> <a class="xref" href="Hi.Numerical.HardNcEnv.html">HardNcEnv</a></dt>
<dd><p>The numerical control environment.</p>
</dd>
<dt><code>ncLineCache</code> <a class="xref" href="Hi.Numerical.NcNoteCache.html">NcNoteCache</a></dt>
<dd><p>The NC line cache for storing messages.</p>
</dd>
<dt><code>messageHost</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>The message host for reporting issues.</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><p>True if radius compensation was resolved; otherwise, false.</p>
</dd>
</dl>
<a id="Hi_Numerical_RadiusCompensationBuf_ToString_" data-uid="Hi.Numerical.RadiusCompensationBuf.ToString*"></a>
<h3 id="Hi_Numerical_RadiusCompensationBuf_ToString" data-uid="Hi.Numerical.RadiusCompensationBuf.ToString">
ToString()
</h3>
<div class="markdown level1 summary"><p>Returns a string that represents the current object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
</div>
<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><p>A string that represents the current object.</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>