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.PostLogicSyntaxs.RadiusCompensationSyntax.html
T
2026-09-09 18:06:21 +08:00

647 lines
26 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 RadiusCompensationSyntax | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class RadiusCompensationSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Resolves cutter radius compensation (G41/G42/G40) by offsetting the tool path perpendicular to the programmed direction. Must be placed after motion syntaxes (, ) because it reads the section. Must NOT be placed inside because it requires look-forward (). For simple cases (line-line, no transient), the syntax overwrites MachineCoordinate with the offset position. For arc blocks that need transient bridging segments, the Motion section is replaced with a containing sub-items.">
<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.PostLogicSyntaxs.RadiusCompensationSyntax">
<h1 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax" class="text-break">
Class RadiusCompensationSyntax
</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.PostLogicSyntaxs.html">PostLogicSyntaxs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Resolves cutter radius compensation (G41/G42/G40) by offsetting the
tool path perpendicular to the programmed direction.</p>
<p>
Must be placed after motion syntaxes (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CircularMotionSyntax.html">CircularMotionSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.LinearMotionSyntax.html">LinearMotionSyntax</a>) because it reads the <a class="xref" href="Hi.Motion.html">Hi.Motion</a>
section. Must NOT be placed inside <a class="xref" href="Hi.NcParsers.Syntaxs.BundleSyntax.html">BundleSyntax</a> because it
requires look-forward (<a class="xref" href="Hi.Common.Collections.LazyLinkedListNode-1.html#Hi_Common_Collections_LazyLinkedListNode_1_Next">Next</a>).
</p>
<p>
For simple cases (line-line, no transient), the syntax overwrites
<code>MachineCoordinate</code> with the offset position. For arc blocks
that need transient bridging segments, the <code>Motion</code> section is
replaced with a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a> containing sub-items.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class RadiusCompensationSyntax : ISituNcSyntax, INcSyntax, IMakeXmlSource</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">RadiusCompensationSyntax</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.NcParsers.Syntaxs.ISituNcSyntax.html">ISituNcSyntax</a></div>
<div><a class="xref" href="Hi.NcParsers.Syntaxs.INcSyntax.html">INcSyntax</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></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>
<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 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_examples">Examples</h2>
<p>Cartesian G41 begin block (tool radius 5 via the D1 offset row): no
intersection — the position offsets perpendicular to the segment,
left of travel (+X move → +Y), and the compensated machine
coordinate plus the motion-section MotionProgramXyz are written:
#Previous:</p>
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "X": 0, "Y": 0, "Z": 0 } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "G41": { "D": 1 } },
"ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
"MotionEvent": { "Form": "McLinear" }
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"ProgramXyz": { "X": 10, "Y": 0, "Z": 0 },
"MotionEvent": { "Form": "McLinear", "MotionProgramXyz": { "X": 10, "Y": 5, "Z": 0 } },
"RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
"MachineCoordinateState": { "X": 10, "Y": 5, "Z": 0 }
}</code></pre>
<p>Polar continuation with parallel rays (the G12.1 branch): the
compensated central position offsets left of the +C travel
(−5 on the radius axis), <code>ProgramPolarRxcz</code> stays NOMINAL, and
the machine coordinate is re-derived from the compensated central —
radius √(35²+20²), C chained from the previous (compensated) angle:
#Previous:</p>
<pre><code class="lang-csharp">{
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 10, "Z": 0 },
"RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
"CompensatedCentral": { "X": 35, "Y": 10, "Z": 0 },
"MachineCoordinateState": { "C": 15.945395900922854, "X": 36.40054944640259, "Y": 0, "Z": 0 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
"ProgramXyz": { "X": 44.721359549995796, "Y": 0, "Z": 0 },
"MachineCoordinateState": { "C": 26.565051177077986, "X": 44.721359549995796, "Y": 0, "Z": 0 },
"MotionState": { "Term": "G01" },
"MotionEvent": { "Form": "McPolarLinear" }
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
"ProgramXyz": { "X": 44.721359549995796, "Y": 0, "Z": 0 },
"MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 },
"MotionState": { "Term": "G01" },
"MotionEvent": { "Form": "McPolarLinear" },
"RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
"CompensatedCentral": { "X": 35, "Y": 20, "Z": 0 }
}</code></pre>
<p>A bare G40 inside polar mode inherits the previous block's
(compensated) machine coordinate — the Cartesian McLinear on it is
the modal fallthrough, not real motion, so it counts as bare:
#Previous:</p>
<pre><code class="lang-csharp">{
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
"RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 },
"MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "Flags": ["G40"] },
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
"MachineCoordinateState": { "C": 26.565051177077986, "X": 44.721359549995796, "Y": 0, "Z": 0 },
"MotionState": { "Term": "G01" },
"MotionEvent": { "Form": "McLinear" }
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"PolarInterpolationState": { "Dir": "XC", "InitRxcz": { "X": 0, "Y": 0, "Z": 0 } },
"ProgramPolarRxcz": { "X": 40, "Y": 20, "Z": 0 },
"MachineCoordinateState": { "C": 29.744881296942225, "X": 40.311288741492746, "Y": 0, "Z": 0 },
"MotionState": { "Term": "G01" },
"MotionEvent": { "Form": "McLinear" },
"RadiusCompensation": { "Side": "None", "Term": "G40", "OffsetId": 1 }
}</code></pre>
<p>The first block after a program end — <code>#Previous:</code> carries the
<code>ProgramEnd</code> section next to a still-active G41 D1. This is the
reset edge (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramEndSyntax.html">ProgramEndSyntax</a>): the
controller's reset cancels cutter compensation, so the block is
written cancelled (G40) instead of inheriting G41; the modal D row
is kept, as it is across an explicit G40:
#Previous:</p>
<pre><code class="lang-csharp">{
"ProgramEnd": { "Term": "M02" },
"RadiusCompensation": { "Side": "Left", "Term": "G41", "OffsetId": 1, "Radius_mm": 5 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "RadiusCompensation": { "Side": "None", "Term": "G40", "OffsetId": 1 } }</code></pre>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax__ctor_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax__ctor" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.#ctor">
RadiusCompensationSyntax()
</h3>
<div class="markdown level1 summary"><p>Creates a default <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public RadiusCompensationSyntax()</code></pre>
</div>
<a id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax__ctor_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax__ctor_System_Xml_Linq_XElement_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.#ctor(System.Xml.Linq.XElement)">
RadiusCompensationSyntax(XElement)
</h3>
<div class="markdown level1 summary"><p>Reconstructs a <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a> from a project XML element
previously produced by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html#Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a>. The element carries no fields,
so <code class="paramref">src</code> is used only for factory dispatch.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public RadiusCompensationSyntax(XElement src)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>src</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>XML element previously produced by <a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html#Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MakeXmlSource_System_String_System_String_System_Boolean_">MakeXmlSource(string, string, bool)</a>.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_ArcBeginProgramXyzKey" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.ArcBeginProgramXyzKey">
ArcBeginProgramXyzKey
</h3>
<div class="markdown level1 summary"><p>JSON key for the arc begin program position inside CompoundMotion arc items.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ArcBeginProgramXyzKey = &quot;ArcBeginProgramXyz&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>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MotionProgramXyzKey" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.MotionProgramXyzKey">
MotionProgramXyzKey
</h3>
<div class="markdown level1 summary"><p>JSON key for the compensated program position inside Motion sections
and CompoundMotion arc items.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string MotionProgramXyzKey = &quot;MotionProgramXyz&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="properties">Properties
</h2>
<a id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_Name_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Name*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_Name" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Name">
Name
</h3>
<div class="markdown level1 summary"><p>Syntax kind name (typically the concrete type name).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Name { get; }</code></pre>
</div>
<h4 class="section">Property Value</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_PostLogicSyntaxs_RadiusCompensationSyntax_XName_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.XName*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_XName" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.XName">
XName
</h3>
<div class="markdown level1 summary"><p>XML element name for <a class="xref" href="Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Generators">Generators</a> registration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string XName { get; }</code></pre>
</div>
<h4 class="section">Property 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_PostLogicSyntaxs_RadiusCompensationSyntax_Build_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Build*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Build(Hi.Common.Collections.LazyLinkedListNode{Hi.NcParsers.Syntaxs.SyntaxPiece},System.Collections.Generic.List{Hi.NcParsers.Dependencys.INcDependency},Hi.NcParsers.NcDiagnosticProgress)">
Build(LazyLinkedListNode&lt;SyntaxPiece&gt;, List&lt;INcDependency&gt;, NcDiagnosticProgress)
</h3>
<div class="markdown level1 summary"><p>Build syntax arrangement into the
<code class="paramref">syntaxPieceNode</code> in-place.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Build(LazyLinkedListNode&lt;SyntaxPiece&gt; syntaxPieceNode, List&lt;INcDependency&gt; ncDependencyList, NcDiagnosticProgress ncDiagnosticProgress)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>syntaxPieceNode</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></dd>
<dt><code>ncDependencyList</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.list-1">List</a>&lt;<a class="xref" href="Hi.NcParsers.Dependencys.INcDependency.html">INcDependency</a>&gt;</dt>
<dd></dd>
<dt><code>ncDiagnosticProgress</code> <a class="xref" href="Hi.NcParsers.NcDiagnosticProgress.html">NcDiagnosticProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MakeXmlSource_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.MakeXmlSource*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
</h3>
<div class="markdown level1 summary"><p>Creates an XML representation of the object.
This method may also generate additional resources such as related files.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XElement MakeXmlSource(string baseDirectory, string relFile, bool exhibitionOnly)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The base directory for resolving relative paths</p>
</dd>
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path for the XML source</p>
</dd>
<dt><code>exhibitionOnly</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>if true, the extended file creation is suppressed.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.xml.linq.xelement">XElement</a></dt>
<dd><p>An XML element representing the object's state</p>
</dd>
</dl>
<h4 class="section" id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_MakeXmlSource_System_String_System_String_System_Boolean__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>For the demand of easy moving source folder (especially project folder) without configuration file path corruption, the relative file path is applied.
The <code class="paramref">baseDirectory</code> is typically the folder at the nearest configuration file folder.
Since the folder can be moving with the configuration file.</p>
</div>
<a id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_Reg_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Reg*"></a>
<h3 id="Hi_NcParsers_PostLogicSyntaxs_RadiusCompensationSyntax_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.Reg(Hi.Common.XmlUtils.XFactory)">
Reg(XFactory)
</h3>
<div class="markdown level1 summary"><p>Registers this type's deserializer with the given <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>
(or <a class="xref" href="Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Default">Default</a> when <code class="paramref">factory</code> is
<code>null</code>). Idempotent.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static void Reg(XFactory factory = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>factory</code> <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</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>