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
@@ -400,38 +400,6 @@ Errors relative to the input geometry are distributed at sharp edges and curved
</h2>
<a id="Hi_Cbtr_CubeTree_CollisionFlag_" data-uid="Hi.Cbtr.CubeTree.CollisionFlag*"></a>
<h3 id="Hi_Cbtr_CubeTree_CollisionFlag" data-uid="Hi.Cbtr.CubeTree.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_Cbtr_CubeTree_CubetreePtr_" data-uid="Hi.Cbtr.CubeTree.CubetreePtr*"></a>
<h3 id="Hi_Cbtr_CubeTree_CubetreePtr" data-uid="Hi.Cbtr.CubeTree.CubetreePtr">
@@ -406,7 +406,7 @@ Class CubeTreeFile
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Cbtr.CubeTree.html">CubeTree</a></dt>
<dd><p>The loaded cube tree, or null if the file path is empty or null.</p>
<dd><p>The loaded cube tree, or null if the file path is empty/null or the file does not exist.</p>
</dd>
</dl>
@@ -357,38 +357,6 @@ Class AnchoredCollidableLeaf
<a id="Hi_Collision_AnchoredCollidableLeaf_CollisionFlag_" data-uid="Hi.Collision.AnchoredCollidableLeaf.CollisionFlag*"></a>
<h3 id="Hi_Collision_AnchoredCollidableLeaf_CollisionFlag" data-uid="Hi.Collision.AnchoredCollidableLeaf.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag indicating the collision status of this collidable object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -222,42 +222,6 @@ Class CollidableStl
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Collision_CollidableStl_CollisionFlag_" data-uid="Hi.Collision.CollidableStl.CollisionFlag*"></a>
<h3 id="Hi_Collision_CollidableStl_CollisionFlag" data-uid="Hi.Collision.CollidableStl.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -256,38 +256,6 @@ Class FuncAnchoredCollidable
<a id="Hi_Collision_FuncAnchoredCollidable_CollisionFlag_" data-uid="Hi.Collision.FuncAnchoredCollidable.CollisionFlag*"></a>
<h3 id="Hi_Collision_FuncAnchoredCollidable_CollisionFlag" data-uid="Hi.Collision.FuncAnchoredCollidable.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag indicating the collision status of this collidable object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_Collision_FuncAnchoredCollidable_GetAnchoredCollidableNodeFunc_" data-uid="Hi.Collision.FuncAnchoredCollidable.GetAnchoredCollidableNodeFunc*"></a>
<h3 id="Hi_Collision_FuncAnchoredCollidable_GetAnchoredCollidableNodeFunc" data-uid="Hi.Collision.FuncAnchoredCollidable.GetAnchoredCollidableNodeFunc">
@@ -121,9 +121,6 @@ A leaf node represents a collidable object that doesn't contain other collidable
<div>
<a class="xref" href="Hi.Collision.IAnchoredCollidableBased.html#Hi_Collision_IAnchoredCollidableBased_GetAnchoredCollidableNode">IAnchoredCollidableBased.GetAnchoredCollidableNode()</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_CollisionFlag">ICollidable.CollisionFlag</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_GetCollidee">ICollidable.GetCollidee()</a>
</div>
@@ -145,42 +145,6 @@ Interface ICollidable
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Collision_ICollidable_CollisionFlag_" data-uid="Hi.Collision.ICollidable.CollisionFlag*"></a>
<h3 id="Hi_Collision_ICollidable_CollisionFlag" data-uid="Hi.Collision.ICollidable.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
@@ -115,9 +115,6 @@ Only <a class="xref" href="Hi.Collision.TriTree.html">TriTree</a> and <a class="
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_CollisionFlag">ICollidable.CollisionFlag</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_GetCollidee">ICollidable.GetCollidee()</a>
</div>
@@ -114,9 +114,6 @@ Interface IGetTriTree
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_CollisionFlag">ICollidable.CollisionFlag</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_GetCollidee">ICollidable.GetCollidee()</a>
</div>
@@ -233,38 +233,6 @@ It wraps <a class="xref" href="Hi.Geom.NativeStl.html">NativeStl</a>.</p>
</h2>
<a id="Hi_Collision_TriTree_CollisionFlag_" data-uid="Hi.Collision.TriTree.CollisionFlag*"></a>
<h3 id="Hi_Collision_TriTree_CollisionFlag" data-uid="Hi.Collision.TriTree.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_Collision_TriTree_NativeStl_" data-uid="Hi.Collision.TriTree.NativeStl*"></a>
<h3 id="Hi_Collision_TriTree_NativeStl" data-uid="Hi.Collision.TriTree.NativeStl">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MessageCollector | HiAPI-C# 2025 ">
<meta name="description" content="A minimal of that buffers every reported message into . Intended as a per-call / per-request sink: a caller injects it into a have-both function (one that takes an IProgress&amp;lt;IMessage&amp;gt; messageProgress), runs the operation, then reads the collected messages back — e.g. to return them in an HTTP response so a REST / AI caller sees progress, success, and error notifications inline. Unlike the session / strip sinks (SessionProgress, StepDiagnosticProgress) it fires no events and holds no session or pipeline state; it is cheap to create and discard for the lifetime of a single call.">
<meta name="description" content="A minimal of that buffers every reported message into . Intended as a per-call / per-request sink: a caller injects it into a have-both function (one that takes an IProgress&amp;lt;IMessage&amp;gt; messageProgress), runs the operation, then reads the collected messages back — e.g. to return them in an HTTP response so a REST / AI caller sees progress, success, and error notifications inline. Unlike the session / step sinks (ShellProgress, StepDiagnosticProgress) it fires no events and holds no session or pipeline state; it is cheap to create and discard for the lifetime of a single call.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -103,7 +103,7 @@ sink: a caller injects it into a have-both function (one that takes an
<code>IProgress&lt;IMessage&gt; messageProgress</code>), runs the operation, then reads the
collected messages back — e.g. to return them in an HTTP response so a REST / AI
caller sees progress, success, and error notifications inline.</p>
<p>Unlike the session / strip sinks (<code>SessionProgress</code>, <code>StepDiagnosticProgress</code>) it
<p>Unlike the session / step sinks (<code>ShellProgress</code>, <code>StepDiagnosticProgress</code>) it
fires no events and holds no session or pipeline state; it is cheap to create and
discard for the lifetime of a single call.</p>
</div>
@@ -125,7 +125,7 @@ sink: a caller injects it into a have-both function (one that takes an
<code>IProgress&lt;IMessage&gt; messageProgress</code>), runs the operation, then reads the
collected messages back — e.g. to return them in an HTTP response so a REST / AI
caller sees progress, success, and error notifications inline.</p>
<p>Unlike the session / strip sinks (<code>SessionProgress</code>, <code>StepDiagnosticProgress</code>) it
<p>Unlike the session / step sinks (<code>ShellProgress</code>, <code>StepDiagnosticProgress</code>) it
fires no events and holds no session or pipeline state; it is cheap to create and
discard for the lifetime of a single call.</p>
</dd>
@@ -267,7 +267,10 @@ Returns false when the source version is unknown (null) — without
the explicit guard, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.version">Version</a>'s comparison
operator ranks a null left operand as OLDEST and every legacy
patch would fire on an unversioned file, contradicting this
contract that version-gated upgrades rely on.</p>
contract that version-gated upgrades rely on. A reader that wants
&ldquo;no stamp anywhere&rdquo; to mean &ldquo;older than every gate&rdquo; says so by
constructing a carrier with an explicit floor version (e.g.
<code>0.0</code>) rather than a null one.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -184,8 +184,8 @@ Class DispEngine
<p>The <code>DispEngine</code> is the core rendering and interaction engine for HiAPI applications.</p>
<h2 id="related-documentation">Related Documentation</h2>
<ul>
<li><a href="../fundamentals/rendering/rendering-canvas/index.html">Using RenderingCanvas with DispEngine</a></li>
<li><a href="../fundamentals/rendering/rendering-canvas/custom-implementation.html">Building Your Own Rendering Canvas</a></li>
<li><a class="xref" href="../technique/rendering/rendering-canvas.html">Using RenderingCanvas with DispEngine</a></li>
<li><a class="xref" href="../technique/rendering/custom-rendering-canvas.html">Building Your Own Rendering Canvas</a></li>
</ul>
<p>The DispEngine provides a unified API for handling rendering, user interaction, and touch gestures across different UI frameworks.</p>
</div>
File diff suppressed because it is too large Load Diff
@@ -340,6 +340,48 @@ The order of z values should be from small to large in general case.</p>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Geom_Cylindroid_ProfileTolerance_mm" data-uid="Hi.Geom.Cylindroid.ProfileTolerance_mm">
ProfileTolerance_mm
</h3>
<div class="markdown level1 summary"><p>Profile snapping tolerance (mm) used by <a class="xref" href="Hi.Geom.Cylindroid.html#Hi_Geom_Cylindroid_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a>: a radius
within it is the axis, and a point within it of the previous kept point
is a duplicate. Authoring tools emit such points — e.g. a chamfer tip
stored as <code>(0, 0), (0, 4.4e-16)</code> — and a duplicate would revolve
into a ring of zero-area triangles. The exact-arithmetic sweep in
the native core cannot orient a zero-area triangle (its cross
product reduces to the zero vector) and aborts the process, so the
mesh must never carry one.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const double ProfileTolerance_mm = 1E-09</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="properties">Properties
</h2>
@@ -638,7 +680,9 @@ This function is usually used to compute the bounding box of elements.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
<div class="markdown level1 summary"><p>Gets the STL mesh at <a class="xref" href="Hi.Geom.Cylindroid.html#Hi_Geom_Cylindroid_DefaultPolarResolution2d">DefaultPolarResolution2d</a>.
Resolution-aware callers pass their value through
<a class="xref" href="Hi.Geom.Cylindroid.html#Hi_Geom_Cylindroid_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a> instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -650,7 +694,7 @@ This function is usually used to compute the bounding box of elements.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL geometry object</p>
<dd><p>The STL mesh at the default resolution.</p>
</dd>
</dl>
@@ -788,6 +832,45 @@ Since the folder can be moving with the configuration file.</p>
<a id="Hi_Geom_Cylindroid_NormalizeProfile_" data-uid="Hi.Geom.Cylindroid.NormalizeProfile*"></a>
<h3 id="Hi_Geom_Cylindroid_NormalizeProfile_System_Collections_Generic_IEnumerable_Hi_Geom_PairZr__" data-uid="Hi.Geom.Cylindroid.NormalizeProfile(System.Collections.Generic.IEnumerable{Hi.Geom.PairZr})">
NormalizeProfile(IEnumerable&lt;PairZr&gt;)
</h3>
<div class="markdown level1 summary"><p>Returns <code class="paramref">src</code> with radii within
<a class="xref" href="Hi.Geom.Cylindroid.html#Hi_Geom_Cylindroid_ProfileTolerance_mm">ProfileTolerance_mm</a> of the axis snapped to 0 and
consecutive points within that tolerance of each other merged.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static List&lt;PairZr&gt; NormalizeProfile(IEnumerable&lt;PairZr&gt; 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.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="Hi.Geom.PairZr.html">PairZr</a>&gt;</dt>
<dd></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.Geom.PairZr.html">PairZr</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Geom_Cylindroid_Reg_" data-uid="Hi.Geom.Cylindroid.Reg*"></a>
<h3 id="Hi_Geom_Cylindroid_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.Geom.Cylindroid.Reg(Hi.Common.XmlUtils.XFactory)">
@@ -564,7 +564,9 @@ This function is usually used to compute the bounding box of elements.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
<div class="markdown level1 summary"><p>Gets the STL mesh at the generated cylindroid's default resolution.
Resolution-aware callers pass their value through
<a class="xref" href="Hi.Geom.ExtendedCylinder.html#Hi_Geom_ExtendedCylinder_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a> instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -576,7 +578,7 @@ This function is usually used to compute the bounding box of elements.</p>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL geometry object</p>
<dd><p>The STL mesh at the default resolution.</p>
</dd>
</dl>
@@ -0,0 +1,389 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class GenStlFuncHost | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class GenStlFuncHost | HiAPI-C# 2025 ">
<meta name="description" content="A class that hosts a function to generate STL geometry at a caller-chosen resolution.">
<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.Geom.GenStlFuncHost">
<h1 id="Hi_Geom_GenStlFuncHost" data-uid="Hi.Geom.GenStlFuncHost" class="text-break">
Class GenStlFuncHost
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
</div>
<div class="markdown summary"><p>A class that hosts a function to generate STL geometry at a caller-chosen
resolution.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class GenStlFuncHost : IGetStl, IGenStl</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">GenStlFuncHost</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</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.Geom.PairZrUtil.html#Hi_Geom_PairZrUtil_GetZrList_Hi_Geom_IGetStl_">PairZrUtil.GetZrList(IGetStl)</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_Geom_GenStlFuncHost__ctor_" data-uid="Hi.Geom.GenStlFuncHost.#ctor*"></a>
<h3 id="Hi_Geom_GenStlFuncHost__ctor" data-uid="Hi.Geom.GenStlFuncHost.#ctor">
GenStlFuncHost()
</h3>
<div class="markdown level1 summary"><p>Default constructor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public GenStlFuncHost()</code></pre>
</div>
<a id="Hi_Geom_GenStlFuncHost__ctor_" data-uid="Hi.Geom.GenStlFuncHost.#ctor*"></a>
<h3 id="Hi_Geom_GenStlFuncHost__ctor_System_Func_Hi_Geom_Resolution_IPolarResolution2d_Hi_Geom_Stl__" data-uid="Hi.Geom.GenStlFuncHost.#ctor(System.Func{Hi.Geom.Resolution.IPolarResolution2d,Hi.Geom.Stl})">
GenStlFuncHost(Func&lt;IPolarResolution2d, Stl&gt;)
</h3>
<div class="markdown level1 summary"><p>Constructor with STL generator function.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public GenStlFuncHost(Func&lt;IPolarResolution2d, Stl&gt; genStlFunc)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>genStlFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>, <a class="xref" href="Hi.Geom.Stl.html">Stl</a>&gt;</dt>
<dd><p>Function that generates an STL object for a given resolution</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Geom_GenStlFuncHost_GenStlFunc_" data-uid="Hi.Geom.GenStlFuncHost.GenStlFunc*"></a>
<h3 id="Hi_Geom_GenStlFuncHost_GenStlFunc" data-uid="Hi.Geom.GenStlFuncHost.GenStlFunc">
GenStlFunc
</h3>
<div class="markdown level1 summary"><p>Gets or sets the function that generates the STL object.
The resolution argument may be null; the generator then applies its own default.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IPolarResolution2d, Stl&gt; GenStlFunc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>, <a class="xref" href="Hi.Geom.Stl.html">Stl</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_Geom_GenStlFuncHost_GenStl_" data-uid="Hi.Geom.GenStlFuncHost.GenStl*"></a>
<h3 id="Hi_Geom_GenStlFuncHost_GenStl_Hi_Geom_Resolution_IPolarResolution2d_" data-uid="Hi.Geom.GenStlFuncHost.GenStl(Hi.Geom.Resolution.IPolarResolution2d)">
GenStl(IPolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Generates a new STL.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GenStl(IPolarResolution2d resolution)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a></dt>
<dd><p>Polar resolution</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>A newly created STL.</p>
</dd>
</dl>
<a id="Hi_Geom_GenStlFuncHost_GetStl_" data-uid="Hi.Geom.GenStlFuncHost.GetStl*"></a>
<h3 id="Hi_Geom_GenStlFuncHost_GetStl" data-uid="Hi.Geom.GenStlFuncHost.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry at the generator's default resolution.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The generated STL 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>
@@ -102,7 +102,7 @@ Class GeomCombination
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class GeomCombination : IStlSource, IGetStl, IMakeXmlSource, IGenStl</code></pre>
<pre><code class="lang-csharp hljs">public class GeomCombination : IStlSource, IGetStl, IMakeXmlSource, IGenStl, IExpandToBox3d</code></pre>
</div>
@@ -123,6 +123,7 @@ Class GeomCombination
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
</dd>
</dl>
@@ -174,6 +175,12 @@ Class GeomCombination
<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.Geom.GeomUtil.html#Hi_Geom_GeomUtil_ExpandToBox3d_Hi_Geom_IExpandToBox3d_Hi_Geom_Mat4d_Hi_Geom_Box3d_">GeomUtil.ExpandToBox3d(IExpandToBox3d, Mat4d, Box3d)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.GeomUtil.html#Hi_Geom_GeomUtil_GetBox3d_Hi_Geom_IExpandToBox3d_">GeomUtil.GetBox3d(IExpandToBox3d)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.PairZrUtil.html#Hi_Geom_PairZrUtil_GetZrList_Hi_Geom_IGetStl_">PairZrUtil.GetZrList(IGetStl)</a>
</div>
@@ -436,6 +443,44 @@ Class GeomCombination
<a id="Hi_Geom_GeomCombination_ExpandToBox3d_" data-uid="Hi.Geom.GeomCombination.ExpandToBox3d*"></a>
<h3 id="Hi_Geom_GeomCombination_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.Geom.GeomCombination.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the given box by the sources' own boxes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ExpandToBox3d(Box3d dst)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>dst</code> <a class="xref" href="Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>The box to expand.</p>
</dd>
</dl>
<h4 class="section" id="Hi_Geom_GeomCombination_ExpandToBox3d_Hi_Geom_Box3d__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>A rough, quick operation: bounds queries never generate a mesh, so a
source without <a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a> support contributes
nothing.</p>
</div>
<a id="Hi_Geom_GeomCombination_GenStl_" data-uid="Hi.Geom.GeomCombination.GenStl*"></a>
<h3 id="Hi_Geom_GeomCombination_GenStl_Hi_Geom_Resolution_IPolarResolution2d_" data-uid="Hi.Geom.GeomCombination.GenStl(Hi.Geom.Resolution.IPolarResolution2d)">
@@ -482,7 +527,9 @@ Class GeomCombination
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
<div class="markdown level1 summary"><p>Gets the combined STL mesh with each source at its own default
resolution. Resolution-aware callers pass their value through
<a class="xref" href="Hi.Geom.GeomCombination.html#Hi_Geom_GeomCombination_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a> instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -494,7 +541,7 @@ Class GeomCombination
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL geometry object</p>
<dd><p>The combined STL mesh.</p>
</dd>
</dl>
@@ -107,11 +107,6 @@ Interfaces
<dd><p>Interface for objects that control STL resolution parameters for both linear and angular measurements.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html">IPolarResolution2dSourceProperty</a></dt>
<dd><p>Provides a property for the source of polar resolution.</p>
</dd>
</dl>
</article>
@@ -365,6 +365,47 @@ The content of <code class="paramref">tris</code> is copied by <code>this.tris =
<a id="Hi_Geom_Stl__ctor_" data-uid="Hi.Geom.Stl.#ctor*"></a>
<h3 id="Hi_Geom_Stl__ctor_System_IO_Stream_Hi_Geom_Stl_StlType_System_Threading_CancellationToken_" data-uid="Hi.Geom.Stl.#ctor(System.IO.Stream,Hi.Geom.Stl.StlType,System.Threading.CancellationToken)">
Stl(Stream, StlType, CancellationToken)
</h3>
<div class="markdown level1 summary"><p>Ctor by stream with cooperative cancellation. The reading loops observe
<code class="paramref">cancel</code> periodically.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl(Stream stream, Stl.StlType stlType, CancellationToken cancel)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stream</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.stream">Stream</a></dt>
<dd><p>stl data stream</p>
</dd>
<dt><code>stlType</code> <a class="xref" href="Hi.Geom.Stl.html">Stl</a>.<a class="xref" href="Hi.Geom.Stl.StlType.html">StlType</a></dt>
<dd><p>stl data format</p>
</dd>
<dt><code>cancel</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Token to cancel the read; cancelling throws
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.operationcanceledexception">OperationCanceledException</a> and leaves this instance unusable.</p>
</dd>
</dl>
<a id="Hi_Geom_Stl__ctor_" data-uid="Hi.Geom.Stl.#ctor*"></a>
<h3 id="Hi_Geom_Stl__ctor_System_Int32_" data-uid="Hi.Geom.Stl.#ctor(System.Int32)">
@@ -434,6 +475,85 @@ The content of <code class="paramref">tris</code> is copied by <code>this.tris =
<a id="Hi_Geom_Stl__ctor_" data-uid="Hi.Geom.Stl.#ctor*"></a>
<h3 id="Hi_Geom_Stl__ctor_System_String_Hi_Geom_Stl_StlType_System_Threading_CancellationToken_" data-uid="Hi.Geom.Stl.#ctor(System.String,Hi.Geom.Stl.StlType,System.Threading.CancellationToken)">
Stl(string, StlType, CancellationToken)
</h3>
<div class="markdown level1 summary"><p>Ctor by file with cooperative cancellation. The reading loops observe
<code class="paramref">cancel</code> periodically, so aborting a large file load
(hundreds of MB) takes effect promptly instead of running to completion.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl(string file, Stl.StlType stlType, CancellationToken cancel)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>file</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>stl file</p>
</dd>
<dt><code>stlType</code> <a class="xref" href="Hi.Geom.Stl.html">Stl</a>.<a class="xref" href="Hi.Geom.Stl.StlType.html">StlType</a></dt>
<dd><p>stl file format</p>
</dd>
<dt><code>cancel</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Token to cancel the read; cancelling throws
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.operationcanceledexception">OperationCanceledException</a> and leaves this instance unusable.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_Geom_Stl_DegenerateCrossTolerance" data-uid="Hi.Geom.Stl.DegenerateCrossTolerance">
DegenerateCrossTolerance
</h3>
<div class="markdown level1 summary"><p>Cross-product length below which a triangle counts as degenerate for
<a class="xref" href="Hi.Geom.Stl.html#Hi_Geom_Stl_RemoveDegenerateTris_System_Double_">RemoveDegenerateTris(double)</a> (1e-12 mm², i.e. two edges
collinear or a vertex pair coincident to ~1e-6 mm).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const double DegenerateCrossTolerance = 1E-12</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="properties">Properties
</h2>
@@ -678,6 +798,46 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_Stl_RemoveDegenerateTris_" data-uid="Hi.Geom.Stl.RemoveDegenerateTris*"></a>
<h3 id="Hi_Geom_Stl_RemoveDegenerateTris_System_Double_" data-uid="Hi.Geom.Stl.RemoveDegenerateTris(System.Double)">
RemoveDegenerateTris(double)
</h3>
<div class="markdown level1 summary"><p>Drops triangles whose cross product is (numerically) the zero vector.
A mesh consumer that orients triangles exactly — the native sweep —
aborts on such a triangle, and it contributes no surface anyway.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int RemoveDegenerateTris(double crossTolerance = 1E-12)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>crossTolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></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><p>The number of triangles removed.</p>
</dd>
</dl>
<a id="Hi_Geom_Stl_Transform_" data-uid="Hi.Geom.Stl.Transform*"></a>
<h3 id="Hi_Geom_Stl_Transform_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Stl.Transform(Hi.Geom.Mat4d)">
@@ -593,6 +593,51 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Geom_StlFile_LoadStlByFile_" data-uid="Hi.Geom.StlFile.LoadStlByFile*"></a>
<h3 id="Hi_Geom_StlFile_LoadStlByFile_System_String_System_Threading_CancellationToken_" data-uid="Hi.Geom.StlFile.LoadStlByFile(System.String,System.Threading.CancellationToken)">
LoadStlByFile(string, CancellationToken)
</h3>
<div class="markdown level1 summary"><p>Loads an STL file from the specified base directory into the cache, with
cooperative cancellation of the underlying read. A cancelled load throws
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.operationcanceledexception">OperationCanceledException</a> and leaves <a class="xref" href="Hi.Geom.StlFile.html#Hi_Geom_StlFile_CacheStl">CacheStl</a>
unchanged (the previous cache, if any, stays valid).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl LoadStlByFile(string baseDirectory, CancellationToken cancel)</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 where the file is located</p>
</dd>
<dt><code>cancel</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd><p>Token to cancel the read</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The loaded STL object, or null if the file path is empty</p>
</dd>
</dl>
<a id="Hi_Geom_StlFile_MakeXmlSource_" data-uid="Hi.Geom.StlFile.MakeXmlSource*"></a>
<h3 id="Hi_Geom_StlFile_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Geom.StlFile.MakeXmlSource(System.String,System.String,System.Boolean)">
@@ -707,6 +752,13 @@ Since the folder can be moving with the configuration file.</p>
<h4 class="section" id="Hi_Geom_StlFile_SaveStlToFile_System_String__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Does nothing when there is no path or no cached mesh. A source file that
was never loaded (missing on disk) must stay missing — the read side
then reports a <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.filenotfoundexception">FileNotFoundException</a> naming the path —
rather than be replaced by a 0-byte STL, which reads back as an opaque
&ldquo;Stl Loading failed&rdquo; and gets committed into project repositories.</p>
</div>
@@ -160,8 +160,9 @@ Class StlUtil
</h3>
<div class="markdown level1 summary"><p>To <a class="xref" href="Hi.Disp.Drawing.html">Drawing</a>, in form of faces.
If <a class="xref" href="Hi.Geom.IGetStl.html#Hi_Geom_IGetStl_GetStl">GetStl()</a> is null, return null.</p>
<div class="markdown level1 summary"><p>To <a class="xref" href="Hi.Disp.Drawing.html">Drawing</a>, in form of faces, at the source's default
resolution.
If the source yields no <a class="xref" href="Hi.Geom.Stl.html">Stl</a>, return null.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -200,8 +201,9 @@ If <a class="xref" href="Hi.Geom.IGetStl.html#Hi_Geom_IGetStl_GetStl">GetStl()</
</h3>
<div class="markdown level1 summary"><p>To <a class="xref" href="Hi.Disp.Drawing.html">Drawing</a>, in form of lines.
If <a class="xref" href="Hi.Geom.IGetStl.html#Hi_Geom_IGetStl_GetStl">GetStl()</a> is null, return null.</p>
<div class="markdown level1 summary"><p>To <a class="xref" href="Hi.Disp.Drawing.html">Drawing</a>, in form of lines, at the source's default
resolution.
If the source yields no <a class="xref" href="Hi.Geom.Stl.html">Stl</a>, return null.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -240,7 +242,8 @@ If <a class="xref" href="Hi.Geom.IGetStl.html#Hi_Geom_IGetStl_GetStl">GetStl()</
</h3>
<div class="markdown level1 summary"><p>Converts an STL geometry to a sparkle line drawing.</p>
<div class="markdown level1 summary"><p>Converts an STL geometry to a sparkle line drawing, at the source's
default resolution.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -540,6 +540,13 @@ Also recomputes the cross.</p>
<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 triangle is degenerate (zero area), so its cross is the zero
vector and has no direction.</p>
</dd>
</dl>
@@ -496,8 +496,11 @@ if they implement the appropriate cloning interfaces.</p>
<h4 class="section" id="Hi_Geom_TransformationGeom_ExpandToBox3d_Hi_Geom_Box3d__remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This method updates the provided box to encompass the transformed geometry.
If the geometry or its STL representation is null, no expansion occurs.</p>
<div class="markdown level1 remarks"><p>A rough, quick operation (view fitting): the geometry's own box is
transformed corner-wise — a conservative superset of the transformed
geometry's true bounds. Bounds queries never generate a mesh, so a
geometry without <a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a> support contributes
nothing.</p>
</div>
@@ -147,6 +147,12 @@ The data contains in a <a class="xref" href="Hi.Geom.Box3d.html">Box3d</a> is <a
<dt><a class="xref" href="Hi.Geom.Flat3d.html">Flat3d</a></dt>
<dd><p>Represents a 3D plane defined by a unit normal vector and its signed distance from the origin.
The plane equation is: Ax + By + Cz + d = 0, where (A,B,C) is the normal vector and d is the distance to origin.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Geom.GenStlFuncHost.html">GenStlFuncHost</a></dt>
<dd><p>A class that hosts a function to generate STL geometry at a caller-chosen
resolution.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -153,7 +153,7 @@ Interface IGetMachiningEquipment
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
<div class="markdown level1 summary"><p>Get the runtime <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -179,42 +179,6 @@ Interface IGetMachiningEquipment
<a id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
</h3>
<div class="markdown level1 summary"><p>Source-compatible delegate for callers written against the pre-rename
name; the equipment has been machining-scoped (not milling-only) since
<code>MillingEquipment</code> became <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
MachiningEquipment GetMillingEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></p>
</dd>
</dl>
</article>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IMachiningEquipment | HiAPI-C# 2025 ">
<meta name="description" content="Machining equipment.">
<meta name="description" content="Machining equipment — implemented by both topology faces of the equipment split: the authored and the runtime . XML IO is NOT part of this contract — only the authored face serializes.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,12 +97,15 @@ Interface IMachiningEquipment
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Machining equipment.</p>
<div class="markdown summary"><p>Machining equipment — implemented by both topology faces of the equipment
split: the authored <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a> and the runtime
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>. XML IO is NOT part of this contract —
only the authored face serializes.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain</code></pre>
<pre><code class="lang-csharp hljs">public interface IMachiningEquipment : IDisplayee, IExpandToBox3d, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain</code></pre>
</div>
@@ -120,9 +123,6 @@ Interface IMachiningEquipment
<div>
<a class="xref" href="Hi.Geom.IExpandToBox3d.html#Hi_Geom_IExpandToBox3d_ExpandToBox3d_Hi_Geom_Box3d_">IExpandToBox3d.ExpandToBox3d(Box3d)</a>
</div>
<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>
<div>
<a class="xref" href="Hi.Mech.Topo.IGetAnchoredDisplayeeList.html#Hi_Mech_Topo_IGetAnchoredDisplayeeList_GetAnchoredDisplayeeList">IGetAnchoredDisplayeeList.GetAnchoredDisplayeeList()</a>
</div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MachiningEquipment | HiAPI-C# 2025 ">
<meta name="description" content="Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc..">
<meta name="description" content="The runtime (execution) face of the machining equipment: the topology instance the runner drives — tool-change graph surgery, collision detection, live axis poses. Materialised from the authored face () and NEVER serialized: runtime data cannot reach the project file by construction.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,12 +97,16 @@ Class MachiningEquipment
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc..</p>
<div class="markdown summary"><p>The runtime (execution) face of the machining equipment: the topology
instance the runner drives — tool-change graph surgery, collision
detection, live axis poses. Materialised from the authored face
(<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_MaterialiseMachiningEquipment_System_String_System_IProgress_Hi_Common_Messages_IMessage__">MaterialiseMachiningEquipment(string, IProgress&lt;IMessage&gt;)</a>) and NEVER
serialized: runtime data cannot reach the project file by construction.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IMakeXmlSource, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment</code></pre>
<pre><code class="lang-csharp hljs">public class MachiningEquipment : IMachiningEquipment, IDisplayee, IExpandToBox3d, IGetAnchoredDisplayeeList, IGetProgramCl, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetMachiningChain, IGetMachiningEquipment</code></pre>
</div>
@@ -122,7 +126,6 @@ Class MachiningEquipment
<div><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a></div>
<div><a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetAnchoredDisplayeeList.html">IGetAnchoredDisplayeeList</a></div>
<div><a class="xref" href="Hi.CutterLocations.IGetProgramCl.html">IGetProgramCl</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetAsmb.html">IGetAsmb</a></div>
@@ -245,48 +248,6 @@ Class MachiningEquipment
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment__ctor_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.#ctor*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment__ctor_System_Xml_Linq_XElement_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.#ctor(System.Xml.Linq.XElement,System.String,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
MachiningEquipment(XElement, string, string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a> class from XML data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningEquipment(XElement src, string baseDirectory, string relFile, IProgress&lt;IMessage&gt; progress)</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>The XML element containing the equipment configuration.</p>
</dd>
<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 file 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 XML serialization.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for diagnostic messages emitted during construction.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
@@ -363,8 +324,9 @@ This is a convenience property that converts between Celsius and Kelvin.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Kelvin.
This represents the ambient temperature of the machining environment.</p>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Kelvin. Runtime-stamped
from the authored face at materialise; the authored value's home is
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_K">BackgroundTemperature_K</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -396,8 +358,10 @@ This represents the ambient temperature of the machining environment.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the coolant heat condition settings.
This includes coolant temperature and heat transfer coefficients.</p>
<div class="markdown level1 summary"><p>Gets or sets the coolant heat condition settings. Runtime-stamped from
the authored face at materialise (shared reference — the runtime only
reads it); the authored home is
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_CoolantHeatCondition">CoolantHeatCondition</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -422,41 +386,6 @@ This includes coolant temperature and heat transfer coefficients.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatConditionFile_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.CoolantHeatConditionFile*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatConditionFile" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.CoolantHeatConditionFile">
CoolantHeatConditionFile
</h3>
<div class="markdown level1 summary"><p>Gets or sets the file path of the coolant heat condition
(WorkpieceMaterial pattern: when set, XML IO externalizes
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_CoolantHeatCondition">CoolantHeatCondition</a> to this side-file; when null the
condition serializes inline).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string CoolantHeatConditionFile { get; set; }</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_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Fixture*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Fixture">
@@ -521,39 +450,6 @@ condition serializes inline).</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningChainFile_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MachiningChainFile*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningChainFile" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MachiningChainFile">
MachiningChainFile
</h3>
<div class="markdown level1 summary"><p>Gets or sets the file path of the solid machining chain.
This is used for XML serialization and file management.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string MachiningChainFile { get; set; }</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_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningTool_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MachiningTool*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningTool" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MachiningTool">
@@ -593,8 +489,10 @@ This is used for XML serialization and file management.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the spindle capability configuration.
This defines the operational capabilities and limits of the spindle.</p>
<div class="markdown level1 summary"><p>Gets or sets the spindle capability configuration. Runtime-stamped from
the authored face at materialise (shared reference — the runtime only
reads it); the authored home is
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_SpindleCapability">SpindleCapability</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -619,39 +517,6 @@ This defines the operational capabilities and limits of the spindle.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_SpindleCapabilityFile_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.SpindleCapabilityFile*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_SpindleCapabilityFile" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.SpindleCapabilityFile">
SpindleCapabilityFile
</h3>
<div class="markdown level1 summary"><p>Gets or sets the file path of the spindle capability configuration.
This is used for XML serialization and file management.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string SpindleCapabilityFile { get; set; }</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_Machining_MachiningEquipmentUtils_MachiningEquipment_TableToComp_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.TableToComp*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_TableToComp" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.TableToComp">
@@ -751,38 +616,6 @@ If <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_XName_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.XName*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_XName" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Name for XML IO.</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>
@@ -1032,7 +865,7 @@ This function is usually used to compute the bounding box of elements.</p>
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
<div class="markdown level1 summary"><p>Get the runtime <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1058,42 +891,6 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetMillingEquipment" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetMillingEquipment">
GetMillingEquipment()
</h3>
<div class="markdown level1 summary"><p>Source-compatible delegate for callers written against the pre-rename
name — the interface's default member is not reachable through a
concrete-typed reference, so it is restated here.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
public MachiningEquipment GetMillingEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p>This equipment.</p>
</dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetProgramCl_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetProgramCl*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_GetProgramCl" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.GetProgramCl">
@@ -1195,39 +992,34 @@ otherwise, return the XYZ from workpiece geomanchor to tool tip.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MakeXmlSource_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MakeXmlSource*"></a>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_IsCollisionRed_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.IsCollisionRed*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.MakeXmlSource(System.String,System.String,System.Boolean)">
MakeXmlSource(string, string, bool)
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_IsCollisionRed_System_Object_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.IsCollisionRed(System.Object)">
IsCollisionRed(object)
</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 class="markdown level1 summary"><p>Whether the latest <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Detect_System_Boolean_">Detect(bool)</a> pass flagged
<code class="paramref">item</code> as colliding. Display paths use this through
<a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.html">CollisionRedScope</a> to paint the part red.</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>
<pre><code class="lang-csharp hljs">public bool IsCollisionRed(object item)</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>
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>A displayed item (typically a <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>).</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>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>true if the item is currently collision-red.</p>
</dd>
</dl>
@@ -1237,11 +1029,6 @@ This method may also generate additional resources such as related files.</p>
<h4 class="section" id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_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>
@@ -1274,39 +1061,6 @@ This method should be called before performing collision detection.</p>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Reg_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Reg*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.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>
and chains <code>Reg(factory)</code> on dependents. 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>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_ResetCollisionFlags_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.ResetCollisionFlags*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_ResetCollisionFlags" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.ResetCollisionFlags">
@@ -96,7 +96,11 @@ Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p>Machining Equipment. Include the machining chain, workpiece, tool and fixture, etc..</p>
<dd><p>The runtime (execution) face of the machining equipment: the topology
instance the runner drives — tool-change graph surgery, collision
detection, live axis poses. Materialised from the authored face
(<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_MaterialiseMachiningEquipment_System_String_System_IProgress_Hi_Common_Messages_IMessage__">MaterialiseMachiningEquipment(string, IProgress&lt;IMessage&gt;)</a>) and NEVER
serialized: runtime data cannot reach the project file by construction.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -114,6 +118,20 @@ The adjacent solids will not be added to the <a class="xref" href="Hi.Collision.
<dl class="jumplist">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipmentUtil.html">MachiningEquipmentUtil</a></dt>
<dd><p>Utility methods for working with machining equipment.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a></dt>
<dd><p>The authored (setup) face of the machining equipment: the machine chain,
workpiece, fixture, environment data and the Setup-page tool selection,
with the project XML IO. This is the ONLY face that persists — the runtime
face (<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>) is materialised from it and never
serialized, so a mid-run save can no longer write live poses or the
runner-equipped tool into the project file.</p>
<p>
The XML wire name stays <code>"MachiningEquipment"</code> (see <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_XName">XName</a>):
shipped project files keep their layout, only the deserialized object changed.
</p>
</dd>
</dl>
<h3 id="interfaces">
@@ -126,7 +144,10 @@ Interfaces
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IMachiningEquipment.html">IMachiningEquipment</a></dt>
<dd><p>Machining equipment.</p>
<dd><p>Machining equipment — implemented by both topology faces of the equipment
split: the authored <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a> and the runtime
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>. XML IO is NOT part of this contract —
only the authored face serializes.</p>
</dd>
</dl>
<h3 id="enums">
@@ -186,8 +186,8 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
<a id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot__ctor_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.#ctor*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot__ctor_Hi_Geom_DVec3d_Hi_Geom_DVec3d_Hi_Common_SeqPair_Hi_Geom_Mat4d__System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_Geom_Mat4d__System_Double___System_Boolean_Hi_Machining_IMachiningTool_Hi_NcMech_Workpieces_WorkpieceService_System_Double_Hi_Physics_CoolantHeatCondition_System_Collections_Generic_SortedList_System_Double_System_Double__" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.#ctor(Hi.Geom.DVec3d,Hi.Geom.DVec3d,Hi.Common.SeqPair{Hi.Geom.Mat4d},System.Collections.Generic.Dictionary{Hi.Mech.Topo.Anchor,Hi.Geom.Mat4d},System.Double[],System.Boolean,Hi.Machining.IMachiningTool,Hi.NcMech.Workpieces.WorkpieceService,System.Double,Hi.Physics.CoolantHeatCondition,System.Collections.Generic.SortedList{System.Double,System.Double})">
StepMotionSnapshot(DVec3d, DVec3d, SeqPair&lt;Mat4d&gt;, Dictionary&lt;Anchor, Mat4d&gt;, double[], bool, IMachiningTool, WorkpieceService, double, CoolantHeatCondition, SortedList&lt;double, double&gt;)
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot__ctor_Hi_Geom_DVec3d_Hi_Geom_DVec3d_Hi_Common_SeqPair_Hi_Geom_Mat4d__System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_Geom_Mat4d__System_Double___System_Boolean_Hi_Machining_IMachiningTool_Hi_NcMech_Workpieces_WorkpieceService_System_Double_Hi_Physics_CoolantHeatCondition_System_Collections_Generic_SortedList_System_Double_System_Double__Hi_Geom_DVec3d_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.#ctor(Hi.Geom.DVec3d,Hi.Geom.DVec3d,Hi.Common.SeqPair{Hi.Geom.Mat4d},System.Collections.Generic.Dictionary{Hi.Mech.Topo.Anchor,Hi.Geom.Mat4d},System.Double[],System.Boolean,Hi.Machining.IMachiningTool,Hi.NcMech.Workpieces.WorkpieceService,System.Double,Hi.Physics.CoolantHeatCondition,System.Collections.Generic.SortedList{System.Double,System.Double},Hi.Geom.DVec3d)">
StepMotionSnapshot(DVec3d, DVec3d, SeqPair&lt;Mat4d&gt;, Dictionary&lt;Anchor, Mat4d&gt;, double[], bool, IMachiningTool, WorkpieceService, double, CoolantHeatCondition, SortedList&lt;double, double&gt;, DVec3d)
</h3>
@@ -196,7 +196,7 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StepMotionSnapshot(DVec3d GeomCl, DVec3d ProgramCl, SeqPair&lt;Mat4d&gt; Seq, Dictionary&lt;Anchor, Mat4d&gt; AnchorTransformDictionary, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double BackgroundTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList&lt;double, double&gt; FluteZToDzList)</code></pre>
<pre><code class="lang-csharp hljs">public StepMotionSnapshot(DVec3d GeomCl, DVec3d ProgramCl, SeqPair&lt;Mat4d&gt; Seq, Dictionary&lt;Anchor, Mat4d&gt; AnchorTransformDictionary, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double BackgroundTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList&lt;double, double&gt; FluteZToDzList, DVec3d PreTipPose = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -233,6 +233,13 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
</dd>
<dt><code>FluteZToDzList</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.sortedlist-2">SortedList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>&gt;</dt>
<dd><p>Sorted list mapping flute Z positions to their deltas.</p>
</dd>
<dt><code>PreTipPose</code> <a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>The tip pose the previous <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">StepMotion(bool, double, Mat4d)</a> call fed to the
valve, on the workpiece-geometry coordinate &ndash; whether or not that call produced a step
(the valve skips a collinear return over a segment it already covered). Null on the first
call after a reset. The one-step reference for the real tip feedrate; <code>Seq.pre</code> is not,
it may span two steps back.</p>
</dd>
</dl>
@@ -507,6 +514,42 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
<a id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_PreTipPose_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.PreTipPose*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_PreTipPose" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.PreTipPose">
PreTipPose
</h3>
<div class="markdown level1 summary"><p>The tip pose the previous <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">StepMotion(bool, double, Mat4d)</a> call fed to the
valve, on the workpiece-geometry coordinate &ndash; whether or not that call produced a step
(the valve skips a collinear return over a segment it already covered). Null on the first
call after a reset. The one-step reference for the real tip feedrate; <code>Seq.pre</code> is not,
it may span two steps back.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DVec3d PreTipPose { get; init; }</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_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_ProgramCl_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.ProgramCl*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_ProgramCl" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.ProgramCl">
@@ -566,7 +566,9 @@ Will be removed when <a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner
</h3>
<div class="markdown level1 summary"><p>Gets or sets the fixture.</p>
<div class="markdown level1 summary"><p>Gets or sets the authored fixture (setup face). The runtime face
follows by rebuild; runtime readers use
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Fixture">Fixture</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -831,7 +833,9 @@ post-run reset.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining chain.</p>
<div class="markdown level1 summary"><p>Gets or sets the authored machining chain (setup face). The runtime
face follows by rebuild; runtime readers use
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningChain">MachiningChain</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -896,13 +900,15 @@ This is used for XML serialization and file management.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining equipment used for milling.
Updates related components when changed.</p>
<div class="markdown level1 summary"><p>The runtime (execution) equipment face — service-owned, materialised
from <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SetupEquipment">SetupEquipment</a> at project assignment and session
boundaries, never serialized. Runtime consumers (runner, physics,
collision, execution display) read this.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningEquipment MachiningEquipment { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public MachiningEquipment MachiningEquipment { get; }</code></pre>
</div>
@@ -1099,7 +1105,9 @@ is loaded/assigned; an explicit setting then survives
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining tool.</p>
<div class="markdown level1 summary"><p>Gets or sets the Setup-page selected tool (setup face). The tool the
runner currently drives is
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_MachiningTool">MachiningTool</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1489,6 +1497,41 @@ active session.</p>
<a id="Hi_MachiningProcs_LocalProjectService_SetupEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.SetupEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SetupEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.SetupEquipment">
SetupEquipment
</h3>
<div class="markdown level1 summary"><p>The authored (setup) equipment face of the loaded project — the only
persisted face. Authoring surfaces (setup pages, equipment editors)
read and write this; runtime follows by rebuild (see
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_NotifySetupEquipmentEdited">NotifySetupEquipmentEdited()</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SetupEquipment SetupEquipment { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ShellProgress_" data-uid="Hi.MachiningProcs.LocalProjectService.ShellProgress*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ShellProgress" data-uid="Hi.MachiningProcs.LocalProjectService.ShellProgress">
@@ -1664,8 +1707,9 @@ runner / act-processing chain.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the workpiece to be machined.
Ensures proper initialization of workpiece properties.</p>
<div class="markdown level1 summary"><p>Gets or sets the authored workpiece (setup face). The runtime face
follows by rebuild; runtime readers use
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a>.<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Workpiece">Workpiece</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -2088,6 +2132,36 @@ reported to the injected <code class="paramref">messageProgress</code>.</p>
<a id="Hi_MachiningProcs_LocalProjectService_EnsureExecutionEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.EnsureExecutionEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EnsureExecutionEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.EnsureExecutionEquipment">
EnsureExecutionEquipment()
</h3>
<div class="markdown level1 summary"><p>Ensures the runtime <a class="xref" href="Hi.MachiningSteps.IMachiningService.html#Hi_MachiningSteps_IMachiningService_MachiningEquipment">MachiningEquipment</a> reflects the
authored setup face — re-materialising it when setup edits are pending
(equipment split: follow = rebuild at session boundaries). Default:
no-op, for hosts without a setup face (e.g. test stubs).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void EnsureExecutionEquipment()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_FixedPace_" data-uid="Hi.MachiningProcs.LocalProjectService.FixedPace*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_FixedPace_System_Double_System_Double_" data-uid="Hi.MachiningProcs.LocalProjectService.FixedPace(System.Double,System.Double)">
@@ -2130,6 +2204,38 @@ reported to the injected <code class="paramref">messageProgress</code>.</p>
<a id="Hi_MachiningProcs_LocalProjectService_ForwardSetupEnvironmentToExecution_" data-uid="Hi.MachiningProcs.LocalProjectService.ForwardSetupEnvironmentToExecution*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ForwardSetupEnvironmentToExecution" data-uid="Hi.MachiningProcs.LocalProjectService.ForwardSetupEnvironmentToExecution">
ForwardSetupEnvironmentToExecution()
</h3>
<div class="markdown level1 summary"><p>Forwards the authored environment values (background temperature,
coolant condition, spindle capability) onto the runtime face. These are
pure data with no topology involvement, so eager forwarding is safe and
keeps environment edits immediate — a full materialise is not needed
for them. Call after writing the environment members on
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SetupEquipment">SetupEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ForwardSetupEnvironmentToExecution()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_GetInspectingKeyPresentName_" data-uid="Hi.MachiningProcs.LocalProjectService.GetInspectingKeyPresentName*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetInspectingKeyPresentName_Hi_Common_StringLocalizer_" data-uid="Hi.MachiningProcs.LocalProjectService.GetInspectingKeyPresentName(Hi.Common.StringLocalizer)">
@@ -2209,7 +2315,7 @@ reported to the injected <code class="paramref">messageProgress</code>.</p>
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
<div class="markdown level1 summary"><p>Get the runtime <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -2268,42 +2374,6 @@ reported to the injected <code class="paramref">messageProgress</code>.</p>
<a id="Hi_MachiningProcs_LocalProjectService_GetMillingEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.GetMillingEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetMillingEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.GetMillingEquipment">
GetMillingEquipment()
</h3>
<div class="markdown level1 summary"><p>Source-compatible delegate for callers written against the pre-rename
name — the interface's default member is not reachable through a
concrete-typed reference, so it is restated here.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
public MachiningEquipment GetMillingEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p>The loaded project's equipment, or null when none is loaded.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_GetSessionShell_" data-uid="Hi.MachiningProcs.LocalProjectService.GetSessionShell*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetSessionShell" data-uid="Hi.MachiningProcs.LocalProjectService.GetSessionShell">
@@ -2338,23 +2408,33 @@ public MachiningEquipment GetMillingEquipment()</code></pre>
<a id="Hi_MachiningProcs_LocalProjectService_LoadProject_" data-uid="Hi.MachiningProcs.LocalProjectService.LoadProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_LoadProject_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.LoadProject(System.String)">
LoadProject(string)
<h3 id="Hi_MachiningProcs_LocalProjectService_LoadProject_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.LoadProject(System.String,System.IProgress{Hi.Common.Messages.IMessage})">
LoadProject(string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Loads a project by file path relative to the admin directory.</p>
<div class="markdown level1 summary"><p>Loads a project by absolute file path. Load-time diagnostics (a machine
or part STL the project references but that is missing on disk, an
unloadable child XML, …) do not fail the load: the project comes up
without that geometry and each problem is reported as an
<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> — always to the service logger, and also to
<code class="paramref">messageProgress</code> when the caller injects one.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void LoadProject(string projectPath)</code></pre>
<pre><code class="lang-csharp hljs">public void LoadProject(string projectPath, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>projectPath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The absolute file path</p>
</dd>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional caller-injected sink for the load-time diagnostics (e.g. a
<a class="xref" href="Hi.Common.Messages.MessageCollector.html">MessageCollector</a> a web controller hands back in its
response). Null keeps logger-only reporting.</p>
</dd>
</dl>
@@ -2402,6 +2482,39 @@ public MachiningEquipment GetMillingEquipment()</code></pre>
<a id="Hi_MachiningProcs_LocalProjectService_NotifySetupEquipmentEdited_" data-uid="Hi.MachiningProcs.LocalProjectService.NotifySetupEquipmentEdited*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NotifySetupEquipmentEdited" data-uid="Hi.MachiningProcs.LocalProjectService.NotifySetupEquipmentEdited">
NotifySetupEquipmentEdited()
</h3>
<div class="markdown level1 summary"><p>Marks the authored face edited so the runtime face follows. Follow is
a REBUILD (never live incremental sync): immediately when no session is
active, otherwise at the next session boundary
(<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_BeginSession">BeginSession()</a> / the next play's
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EnsureExecutionEquipment">EnsureExecutionEquipment()</a> / a player reset).
The facade setters call this; call it manually after mutating
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SetupEquipment">SetupEquipment</a> members in place.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void NotifySetupEquipmentEdited()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_PlayBrandNcFile_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayBrandNcFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PlayBrandNcFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayBrandNcFile(System.String,System.String)">
@@ -2862,19 +2975,28 @@ Idempotent on <code class="paramref">key</code>.</p>
<a id="Hi_MachiningProcs_LocalProjectService_ReloadProject_" data-uid="Hi.MachiningProcs.LocalProjectService.ReloadProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ReloadProject" data-uid="Hi.MachiningProcs.LocalProjectService.ReloadProject">
ReloadProject()
<h3 id="Hi_MachiningProcs_LocalProjectService_ReloadProject_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.ReloadProject(System.IProgress{Hi.Common.Messages.IMessage})">
ReloadProject(IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Reloads the current project.</p>
<div class="markdown level1 summary"><p>Reloads the current project from disk, discarding in-memory edits.
Load-time diagnostics are reported the same way as in
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_LoadProject_System_String_System_IProgress_Hi_Common_Messages_IMessage__">LoadProject(string, IProgress&lt;IMessage&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ReloadProject()</code></pre>
<pre><code class="lang-csharp hljs">public void ReloadProject(IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional caller-injected sink for the load-time diagnostics; null keeps
logger-only reporting.</p>
</dd>
</dl>
@@ -3342,10 +3464,9 @@ runs as brand NC).</p>
</h3>
<div class="markdown level1 summary"><p>Call on MachiningEquipment Or MachiningChainChanged.
i.e. Update By MachiningEquipment Or MachiningChain.
The function is called on <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningEquipment">MachiningEquipment</a> and its delegate property changed.
If the changing is raised outer from THIS service, this updating function should be manual called.</p>
<div class="markdown level1 summary"><p>Re-binds everything derived from the runtime equipment face. Runs as
the tail of <span class="xref">Hi.MachiningProcs.LocalProjectService.MaterialiseExecutionEquipment()</span>; call manually
only after mutating the runtime face outside the service.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -678,7 +678,15 @@ This property is provided as a member value getter and should not be modified.</
</h3>
<div class="markdown level1 summary"><p>Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution.</p>
<div class="markdown level1 summary"><p>Adjusts the APT cutter STL resolution based on NC resolution and workpiece resolution.
The derived value is runtime data: it is equipped by swapping the shaper
and strut solids (<a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_Hi_Geom_Resolution_PolarResolution2d_">SetShaperStlResolution(PolarResolution2d)</a> /
<a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_SetStrutStlResolution_Hi_Geom_Resolution_PolarResolution2d_">SetStrutStlResolution(PolarResolution2d)</a>), never written
onto the authored cutter. On the shipped configurations the derived value
is constant within a play, so the repeated calls keep the same solid; with
<a class="xref" href="Hi.MachiningProcs.MachiningActRunner.html#Hi_MachiningProcs_MachiningActRunner_EnableMotionDependentMachiningResolution">EnableMotionDependentMachiningResolution</a> (an unshipped
scripting switch, default false) the feed-derived value varies and each
change swaps the solid — the mesh-rebuild cost is that mode's price.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -330,8 +330,8 @@ Note: This feature is pending testing.</p>
<div class="markdown level1 summary"><p>Gets or sets whether the per-step physics runs on the native (core.dll)
kernels. Default is true, and in shipping builds the native kernel is
the only physics implementation: setting this to false requires the
managed reference implementation (the non-shipping HiMech.PhysicsRef
assembly, registered at startup by dev/test hosts) and throws without
managed reference implementation (not shipped; registered at startup by
dev/test hosts) and throws without
it. Both implementations produce the same results. Runtime-only (not
persisted to project XML), in the <code>EnableSoftNcRunner</code>
progressive-switch convention. Delegates to the kernel-level switch on
@@ -659,6 +659,41 @@ members flat for back-compat.</p>
<a id="Hi_MachiningProcs_MachiningProject_SetupEquipment_" data-uid="Hi.MachiningProcs.MachiningProject.SetupEquipment*"></a>
<h3 id="Hi_MachiningProcs_MachiningProject_SetupEquipment" data-uid="Hi.MachiningProcs.MachiningProject.SetupEquipment">
SetupEquipment
</h3>
<div class="markdown level1 summary"><p>The authored equipment face — the ONLY equipment face this project
persists. The runtime face (<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>) lives on
<code>LocalProjectService</code>, materialised from this one, and never
reaches the project file.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SetupEquipment SetupEquipment { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_MachiningProject_TimeMapping_" data-uid="Hi.MachiningProcs.MachiningProject.TimeMapping*"></a>
<h3 id="Hi_MachiningProcs_MachiningProject_TimeMapping" data-uid="Hi.MachiningProcs.MachiningProject.TimeMapping">
@@ -785,37 +820,6 @@ members flat for back-compat.</p>
<a id="Hi_MachiningProcs_MachiningProject_GetMachiningEquipment_" data-uid="Hi.MachiningProcs.MachiningProject.GetMachiningEquipment*"></a>
<h3 id="Hi_MachiningProcs_MachiningProject_GetMachiningEquipment" data-uid="Hi.MachiningProcs.MachiningProject.GetMachiningEquipment">
GetMachiningEquipment()
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningEquipment GetMachiningEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_MachiningProject_GetMachiningProject_" data-uid="Hi.MachiningProcs.MachiningProject.GetMachiningProject*"></a>
<h3 id="Hi_MachiningProcs_MachiningProject_GetMachiningProject" data-uid="Hi.MachiningProcs.MachiningProject.GetMachiningProject">
@@ -849,28 +853,26 @@ members flat for back-compat.</p>
<a id="Hi_MachiningProcs_MachiningProject_GetMillingEquipment_" data-uid="Hi.MachiningProcs.MachiningProject.GetMillingEquipment*"></a>
<a id="Hi_MachiningProcs_MachiningProject_GetSetupEquipment_" data-uid="Hi.MachiningProcs.MachiningProject.GetSetupEquipment*"></a>
<h3 id="Hi_MachiningProcs_MachiningProject_GetMillingEquipment" data-uid="Hi.MachiningProcs.MachiningProject.GetMillingEquipment">
GetMillingEquipment()
<h3 id="Hi_MachiningProcs_MachiningProject_GetSetupEquipment" data-uid="Hi.MachiningProcs.MachiningProject.GetSetupEquipment">
GetSetupEquipment()
</h3>
<div class="markdown level1 summary"><p>Source-compatible delegate for callers written against the pre-rename
name.</p>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_SetupEquipment">SetupEquipment</a> — the authored equipment face.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to GetMachiningEquipment.&quot;)]
public MachiningEquipment GetMillingEquipment()</code></pre>
<pre><code class="lang-csharp hljs">public SetupEquipment GetSetupEquipment()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd><p>The project's equipment.</p>
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a></dt>
<dd><p><a class="xref" href="Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_SetupEquipment">SetupEquipment</a></p>
</dd>
</dl>
@@ -453,8 +453,8 @@ Apply relative file path from <a class="xref" href="Hi.MachiningProcs.ProxyProje
<a id="Hi_MachiningProcs_ProxyProjectService_LoadProject_" data-uid="Hi.MachiningProcs.ProxyProjectService.LoadProject*"></a>
<h3 id="Hi_MachiningProcs_ProxyProjectService_LoadProject_System_String_" data-uid="Hi.MachiningProcs.ProxyProjectService.LoadProject(System.String)">
LoadProject(string)
<h3 id="Hi_MachiningProcs_ProxyProjectService_LoadProject_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.ProxyProjectService.LoadProject(System.String,System.IProgress{Hi.Common.Messages.IMessage})">
LoadProject(string, IProgress&lt;IMessage&gt;)
</h3>
@@ -463,13 +463,17 @@ Apply relative file path from <a class="xref" href="Hi.MachiningProcs.ProxyProje
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void LoadProject(string relativeFilePath)</code></pre>
<pre><code class="lang-csharp hljs">public void LoadProject(string relativeFilePath, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relativeFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The relative file path from the admin directory root</p>
</dd>
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional caller-injected sink for the load-time diagnostics (see
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_LoadProject_System_String_System_IProgress_Hi_Common_Messages_IMessage__">LoadProject(string, IProgress&lt;IMessage&gt;)</a>); null keeps logger-only reporting.</p>
</dd>
</dl>
@@ -519,8 +523,8 @@ Apply relative file path from <a class="xref" href="Hi.MachiningProcs.ProxyProje
<a id="Hi_MachiningProcs_ProxyProjectService_ReloadProject_" data-uid="Hi.MachiningProcs.ProxyProjectService.ReloadProject*"></a>
<h3 id="Hi_MachiningProcs_ProxyProjectService_ReloadProject" data-uid="Hi.MachiningProcs.ProxyProjectService.ReloadProject">
ReloadProject()
<h3 id="Hi_MachiningProcs_ProxyProjectService_ReloadProject_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.ProxyProjectService.ReloadProject(System.IProgress{Hi.Common.Messages.IMessage})">
ReloadProject(IProgress&lt;IMessage&gt;)
</h3>
@@ -529,9 +533,16 @@ Apply relative file path from <a class="xref" href="Hi.MachiningProcs.ProxyProje
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ReloadProject()</code></pre>
<pre><code class="lang-csharp hljs">public void ReloadProject(IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>messageProgress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Optional caller-injected sink for the load-time diagnostics (see
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ReloadProject_System_IProgress_Hi_Common_Messages_IMessage__">ReloadProject(IProgress&lt;IMessage&gt;)</a>); null keeps logger-only reporting.</p>
</dd>
</dl>
@@ -727,7 +727,7 @@ public bool EnableSampleNormalization { get; set; }</code></pre>
<h4 class="section" id="Hi_MachiningProcs_SessionShell_EnableSampleNormalization_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
The R-value decreases from 99% to 70% in an observed moment-training case.
Don't apply this option.</p>
</div>
@@ -117,9 +117,6 @@ Interface IMachiningService
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMachiningEquipment">IGetMachiningEquipment.GetMachiningEquipment()</a>
</div>
<div>
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_IGetMachiningEquipment_GetMillingEquipment">IGetMachiningEquipment.GetMillingEquipment()</a>
</div>
</dd></dl>
<dl class="typelist extensionMethods">
@@ -802,6 +799,36 @@ latest run.</p>
<a id="Hi_MachiningSteps_IMachiningService_EnsureExecutionEquipment_" data-uid="Hi.MachiningSteps.IMachiningService.EnsureExecutionEquipment*"></a>
<h3 id="Hi_MachiningSteps_IMachiningService_EnsureExecutionEquipment" data-uid="Hi.MachiningSteps.IMachiningService.EnsureExecutionEquipment">
EnsureExecutionEquipment()
</h3>
<div class="markdown level1 summary"><p>Ensures the runtime <a class="xref" href="Hi.MachiningSteps.IMachiningService.html#Hi_MachiningSteps_IMachiningService_MachiningEquipment">MachiningEquipment</a> reflects the
authored setup face — re-materialising it when setup edits are pending
(equipment split: follow = rebuild at session boundaries). Default:
no-op, for hosts without a setup face (e.g. test stubs).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">void EnsureExecutionEquipment()</code></pre>
</div>
<a id="Hi_MachiningSteps_IMachiningService_GetSessionShell_" data-uid="Hi.MachiningSteps.IMachiningService.GetSessionShell*"></a>
<h3 id="Hi_MachiningSteps_IMachiningService_GetSessionShell" data-uid="Hi.MachiningSteps.IMachiningService.GetSessionShell">
@@ -228,7 +228,7 @@ Note that the spindle information is only for milling behavior.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachineMotionStep(TimeSpan stepDuration, TimeSpan accumulatedTime, double beginSpindleAngle_rad, double[] mcValues, double feedrate_mmds, double spindleSpeed_radds, SpindleDirection spindleDirection, CoolantMode coolantMode, int toolId, Mat4d programZeroToWorkpieceGeomToMat4d, Mat4d workpieceGeomToProgramZeroMat4d, SeqPair&lt;Mat4d&gt; seqOnWorkpieceGeomCoordinate)</code></pre>
<pre><code class="lang-csharp hljs">public MachineMotionStep(TimeSpan stepDuration, TimeSpan accumulatedTime, double beginSpindleAngle_rad, double[] mcValues, double commandedClFeedrate_mmds, double spindleSpeed_radds, SpindleDirection spindleDirection, CoolantMode coolantMode, int toolId, Mat4d programZeroToWorkpieceGeomToMat4d, Mat4d workpieceGeomToProgramZeroMat4d, SeqPair&lt;Mat4d&gt; seqOnWorkpieceGeomCoordinate)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -245,8 +245,8 @@ Note that the spindle information is only for milling behavior.</p>
<dt><code>mcValues</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>[]</dt>
<dd><p>The machine coordinate values.</p>
</dd>
<dt><code>feedrate_mmds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The feed rate in millimeters per second.</p>
<dt><code>commandedClFeedrate_mmds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The controller's commanded CL feedrate in millimeters per second.</p>
</dd>
<dt><code>spindleSpeed_radds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The spindle speed in radians per second.</p>
@@ -286,6 +286,51 @@ Note that the spindle information is only for milling behavior.</p>
</h2>
<a id="Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds_" data-uid="Hi.MachiningSteps.MachineMotionStep.ActualTipFeedrate_mmds*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds" data-uid="Hi.MachiningSteps.MachineMotionStep.ActualTipFeedrate_mmds">
ActualTipFeedrate_mmds
</h3>
<div class="markdown level1 summary"><p>The equipped tool's real tip feedrate over this step in millimeters per
second: the tip's displacement relative to the workpiece from the previous
step's pose to this one, over <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_StepDuration">StepDuration</a>. This is the
feedrate the cut experiences. It equals <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_CommandedClFeedrate_mmds">CommandedClFeedrate_mmds</a>
whenever the tip translates with the controller's CL point (XYZ moves, CL
files, RTCP with the tool-length offset of the equipped tool) and differs
when the two decouple: under RTCP with an offset that does not describe
the equipped tool the tip sweeps with the posture change while the CL
point may stand still. Initialised to the commanded value; the step
builder assigns the measured one (<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_MeasureActualTipFeedrate_mmds_Hi_Geom_Vec3d_Hi_Geom_Vec3d_System_TimeSpan_System_Boolean_System_Double_">MeasureActualTipFeedrate_mmds(Vec3d, Vec3d, TimeSpan, bool, double)</a>)
and keeps the commanded value where no tip speed is defined. Physics reads
this value: <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_GetFeedPerTooth_mm_Hi_Machining_IMachiningTool_">GetFeedPerTooth_mm(IMachiningTool)</a>, <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_FeedPerCycle_mm">FeedPerCycle_mm</a>,
the force step and the MRR. Presented to clients as
<a class="xref" href="Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTipFeedrate_mmdmin">ActualTipFeedrate_mmdmin</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double ActualTipFeedrate_mmds { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningSteps_MachineMotionStep_BeginSpindleAngle_deg_" data-uid="Hi.MachiningSteps.MachineMotionStep.BeginSpindleAngle_deg*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_BeginSpindleAngle_deg" data-uid="Hi.MachiningSteps.MachineMotionStep.BeginSpindleAngle_deg">
@@ -574,6 +619,45 @@ Note that the spindle information is only for milling behavior.</p>
<a id="Hi_MachiningSteps_MachineMotionStep_CommandedClFeedrate_mmds_" data-uid="Hi.MachiningSteps.MachineMotionStep.CommandedClFeedrate_mmds*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_CommandedClFeedrate_mmds" data-uid="Hi.MachiningSteps.MachineMotionStep.CommandedClFeedrate_mmds">
CommandedClFeedrate_mmds
</h3>
<div class="markdown level1 summary"><p>The controller's commanded feedrate of the CL point in millimeters per
second (<a class="xref" href="Hi.Numerical.Acts.StateActRunner.html#Hi_Numerical_Acts_StateActRunner_CommandedClFeedrate_mmds">CommandedClFeedrate_mmds</a>
at the time of the step): the F word after G94/G95/G93 conversion, or
for a rapid the CL path over the act duration. It is not the equipped
tool's real tip feedrate: under RTCP with a tool-length offset that does
not match the equipped tool the tip sweeps while the CL point may stand
still; the tip's own feedrate is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>.
Presented to clients as <a class="xref" href="Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_Feedrate_mmdmin">Feedrate_mmdmin</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double CommandedClFeedrate_mmds { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningSteps_MachineMotionStep_CoolantMode_" data-uid="Hi.MachiningSteps.MachineMotionStep.CoolantMode*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_CoolantMode" data-uid="Hi.MachiningSteps.MachineMotionStep.CoolantMode">
@@ -776,7 +860,9 @@ The value is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_M
</h3>
<div class="markdown level1 summary"><p>Gets the feed per cycle in millimeters.</p>
<div class="markdown level1 summary"><p>The feed per spindle cycle in millimeters, from the real tip feedrate
(<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>): the advance the cut experiences
per revolution.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -801,38 +887,6 @@ The value is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_M
<a id="Hi_MachiningSteps_MachineMotionStep_Feedrate_mmds_" data-uid="Hi.MachiningSteps.MachineMotionStep.Feedrate_mmds*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_Feedrate_mmds" data-uid="Hi.MachiningSteps.MachineMotionStep.Feedrate_mmds">
Feedrate_mmds
</h3>
<div class="markdown level1 summary"><p>Gets or sets the feed rate in millimeters per second.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double Feedrate_mmds { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningSteps_MachineMotionStep_GeomCl_" data-uid="Hi.MachiningSteps.MachineMotionStep.GeomCl*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_GeomCl" data-uid="Hi.MachiningSteps.MachineMotionStep.GeomCl">
@@ -1452,7 +1506,9 @@ The value is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_M
</h3>
<div class="markdown level1 summary"><p>Gets the feed per tooth in millimeters.</p>
<div class="markdown level1 summary"><p>The feed per tooth in millimeters, from the real tip feedrate
(<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>): the chip load the cut experiences,
which the force step and the tooth sequence are built on.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1862,6 +1918,69 @@ The value is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_M
<a id="Hi_MachiningSteps_MachineMotionStep_MeasureActualTipFeedrate_mmds_" data-uid="Hi.MachiningSteps.MachineMotionStep.MeasureActualTipFeedrate_mmds*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_MeasureActualTipFeedrate_mmds_Hi_Geom_Vec3d_Hi_Geom_Vec3d_System_TimeSpan_System_Boolean_System_Double_" data-uid="Hi.MachiningSteps.MachineMotionStep.MeasureActualTipFeedrate_mmds(Hi.Geom.Vec3d,Hi.Geom.Vec3d,System.TimeSpan,System.Boolean,System.Double)">
MeasureActualTipFeedrate_mmds(Vec3d, Vec3d, TimeSpan, bool, double)
</h3>
<div class="markdown level1 summary"><p>Measures a step's real tip feedrate: the distance from the tip point the
machine stood at before this step to the one it reaches, on the
workpiece-geometry coordinate, over the step duration. Falls back to
<code class="paramref">commandedClFeedrate_mmds</code> where a tip speed is not
defined: no previous point (the first step after a reset), a
non-positive duration (a CSV row without timing), or a tool change
between the two points (the tip jumped with the tool, it did not
travel). The previous point is the pose the step pipeline saw last,
step or no step (<a class="xref" href="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_PreTipPose">PreTipPose</a>):
the sweep valve skips a collinear return over a segment it already
covered, and it spans a motion pair's <code>pre</code> two steps back on a
straight run, so neither the last built step nor <code>cur - pre</code>
measures one step's travel.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static double MeasureActualTipFeedrate_mmds(Vec3d preTipPoint, Vec3d curTipPoint, TimeSpan stepDuration, bool sameTool, double commandedClFeedrate_mmds)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>preTipPoint</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>The tip point before this step, or null.</p>
</dd>
<dt><code>curTipPoint</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd><p>The tip point this step reaches.</p>
</dd>
<dt><code>stepDuration</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.timespan">TimeSpan</a></dt>
<dd><p>This step's duration.</p>
</dd>
<dt><code>sameTool</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>Whether the tool at <code class="paramref">preTipPoint</code> is the tool of this step.</p>
</dd>
<dt><code>commandedClFeedrate_mmds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The commanded CL feedrate, returned where no tip speed is defined.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The tip feedrate in millimeters per second.</p>
</dd>
</dl>
<a id="Hi_MachiningSteps_MachineMotionStep_ToString_" data-uid="Hi.MachiningSteps.MachineMotionStep.ToString*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_ToString" data-uid="Hi.MachiningSteps.MachineMotionStep.ToString">
@@ -1895,6 +2014,49 @@ The value is <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_M
<a id="Hi_MachiningSteps_MachineMotionStep_WithFeedrate_" data-uid="Hi.MachiningSteps.MachineMotionStep.WithFeedrate*"></a>
<h3 id="Hi_MachiningSteps_MachineMotionStep_WithFeedrate_System_Double_" data-uid="Hi.MachiningSteps.MachineMotionStep.WithFeedrate(System.Double)">
WithFeedrate(double)
</h3>
<div class="markdown level1 summary"><p>A copy of this step at another feedrate: both
<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_CommandedClFeedrate_mmds">CommandedClFeedrate_mmds</a> and <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>
are <code class="paramref">feedrate_mmds</code>. For a solver asking what the cut
would experience at a candidate feed (the trial step of the NC
optimization's feed solve).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachineMotionStep WithFeedrate(double feedrate_mmds)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>feedrate_mmds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The candidate feedrate in millimeters per second.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html">MachineMotionStep</a></dt>
<dd><p>The copy.</p>
</dd>
</dl>
</article>
@@ -537,6 +537,45 @@ public TimeSpan? ActualTimecode { get; }</code></pre>
<a id="Hi_MachiningSteps_MachiningStep_ActualTipFeedrate_mmdmin_" data-uid="Hi.MachiningSteps.MachiningStep.ActualTipFeedrate_mmdmin*"></a>
<h3 id="Hi_MachiningSteps_MachiningStep_ActualTipFeedrate_mmdmin" data-uid="Hi.MachiningSteps.MachiningStep.ActualTipFeedrate_mmdmin">
ActualTipFeedrate_mmdmin
</h3>
<div class="markdown level1 summary"><p>The equipped tool's real tip feedrate over the step in mm/min
(<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>): the tip's
displacement relative to the workpiece over the step duration. Equal to
<a class="xref" href="Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_Feedrate_mmdmin">Feedrate_mmdmin</a> unless the controller's CL point and the
equipped tool's tip decouple (RTCP with a tool-length offset that does not
describe the equipped tool).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Present(&quot;Actual Tip Feedrate&quot;, &quot;F-tip&quot;, PhysicsUnit.mmdmin, &quot;G5&quot;)]
[JsAce(ClassExt = &quot;MachiningStep&quot;)]
public double ActualTipFeedrate_mmdmin { 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.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningSteps_MachiningStep_AvgAbsMomentAboutSensorVec3d_Nm_" data-uid="Hi.MachiningSteps.MachiningStep.AvgAbsMomentAboutSensorVec3d_Nm*"></a>
<h3 id="Hi_MachiningSteps_MachiningStep_AvgAbsMomentAboutSensorVec3d_Nm" data-uid="Hi.MachiningSteps.MachiningStep.AvgAbsMomentAboutSensorVec3d_Nm">
@@ -1897,7 +1936,8 @@ public TimeSpan EndTimecode { get; }</code></pre>
</h3>
<div class="markdown level1 summary"><p>Gets the feed per cycle in mm.</p>
<div class="markdown level1 summary"><p>The feed per spindle cycle in mm, from the real tip feedrate
(<a class="xref" href="Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTipFeedrate_mmdmin">ActualTipFeedrate_mmdmin</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1931,7 +1971,8 @@ public double FeedPerCycle_mm { get; }</code></pre>
</h3>
<div class="markdown level1 summary"><p>Gets the feed per tooth in mm.</p>
<div class="markdown level1 summary"><p>The feed per tooth in mm, from the real tip feedrate
(<a class="xref" href="Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTipFeedrate_mmdmin">ActualTipFeedrate_mmdmin</a>): the chip load the cut experiences.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1965,7 +2006,10 @@ public double FeedPerTooth_mm { get; }</code></pre>
</h3>
<div class="markdown level1 summary"><p>Gets the feedrate in mm/min.</p>
<div class="markdown level1 summary"><p>The controller's commanded CL feedrate in mm/min
(<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_CommandedClFeedrate_mmds">CommandedClFeedrate_mmds</a>): the F word
after G94/G95/G93 conversion, or for a rapid the CL path over the act
duration. The key keeps its historical name for the clients that read it.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -103,7 +103,7 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class AptProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IGetSelectionName, IGetInitStickConvex, IVolumeRemover, IDisposable, IUpdateByContent, IClearCache, IPolarResolution2dSourceProperty</code></pre>
<pre><code class="lang-csharp hljs">public class AptProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IDuplicate, IGetSelectionName, IGetInitStickConvex, IVolumeRemover, IDisposable, IUpdateByContent, IClearCache</code></pre>
</div>
@@ -125,7 +125,6 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<div><a class="xref" href="Hi.Common.IAbstractNote.html">IAbstractNote</a></div>
<div><a class="xref" href="Hi.Geom.IGetZrList.html">IGetZrList</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</a></div>
<div><a class="xref" href="Hi.Common.IGetSelectionName.html">IGetSelectionName</a></div>
<div><a class="xref" href="Hi.Cbtr.IGetInitStickConvex.html">IGetInitStickConvex</a></div>
@@ -133,7 +132,6 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
<div><a class="xref" href="Hi.Common.IUpdateByContent.html">IUpdateByContent</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</a></div>
<div><a class="xref" href="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html">IPolarResolution2dSourceProperty</a></div>
</dd>
</dl>
@@ -167,15 +165,6 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</a>
</div>
<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>
@@ -438,38 +427,6 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<a id="Hi_Milling_Cutters_AptProfile_PolarResolution2dSource_" data-uid="Hi.Milling.Cutters.AptProfile.PolarResolution2dSource*"></a>
<h3 id="Hi_Milling_Cutters_AptProfile_PolarResolution2dSource" data-uid="Hi.Milling.Cutters.AptProfile.PolarResolution2dSource">
PolarResolution2dSource
</h3>
<div class="markdown level1 summary"><p>The provider of <a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IPolarResolution2d&gt; PolarResolution2dSource { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_AptProfile_XName_" data-uid="Hi.Milling.Cutters.AptProfile.XName*"></a>
<h3 id="Hi_Milling_Cutters_AptProfile_XName" data-uid="Hi.Milling.Cutters.AptProfile.XName">
@@ -737,39 +694,6 @@ This profile uses APT definitions to describe the cutter geometry.</p>
<a id="Hi_Milling_Cutters_AptProfile_GetStl_" data-uid="Hi.Milling.Cutters.AptProfile.GetStl*"></a>
<h3 id="Hi_Milling_Cutters_AptProfile_GetStl" data-uid="Hi.Milling.Cutters.AptProfile.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL mesh representation of the profile.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL mesh</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_AptProfile_GetZrList_" data-uid="Hi.Milling.Cutters.AptProfile.GetZrList*"></a>
<h3 id="Hi_Milling_Cutters_AptProfile_GetZrList" data-uid="Hi.Milling.Cutters.AptProfile.GetZrList">
@@ -103,7 +103,7 @@ This profile maintains a constant ratio between inner and outer radii.</p>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ConstRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGetStl, IDuplicate, IClearCache, IGenStl, IZrListSourceProperty</code></pre>
<pre><code class="lang-csharp hljs">public class ConstRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IDuplicate, IClearCache, IGenStl, IZrListSourceProperty</code></pre>
</div>
@@ -124,7 +124,6 @@ This profile maintains a constant ratio between inner and outer radii.</p>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Common.IAbstractNote.html">IAbstractNote</a></div>
<div><a class="xref" href="Hi.Geom.IGetZrList.html">IGetZrList</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</a></div>
@@ -162,15 +161,6 @@ This profile maintains a constant ratio between inner and outer radii.</p>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</a>
</div>
<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>
@@ -540,39 +530,6 @@ Runtime property.</p>
<a id="Hi_Milling_Cutters_ConstRatioProfile_GetStl_" data-uid="Hi.Milling.Cutters.ConstRatioProfile.GetStl*"></a>
<h3 id="Hi_Milling_Cutters_ConstRatioProfile_GetStl" data-uid="Hi.Milling.Cutters.ConstRatioProfile.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL geometry object</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_ConstRatioProfile_GetZrList_" data-uid="Hi.Milling.Cutters.ConstRatioProfile.GetZrList*"></a>
<h3 id="Hi_Milling_Cutters_ConstRatioProfile_GetZrList" data-uid="Hi.Milling.Cutters.ConstRatioProfile.GetZrList">
@@ -103,7 +103,7 @@ This profile allows for custom geometry to be used as the cutter profile.</p>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class CustomSpinningProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache, IPolarResolution2dSourceProperty</code></pre>
<pre><code class="lang-csharp hljs">public class CustomSpinningProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IDuplicate, IClearCache</code></pre>
</div>
@@ -125,10 +125,8 @@ This profile allows for custom geometry to be used as the cutter profile.</p>
<div><a class="xref" href="Hi.Common.IAbstractNote.html">IAbstractNote</a></div>
<div><a class="xref" href="Hi.Geom.IGetZrList.html">IGetZrList</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</a></div>
<div><a class="xref" href="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html">IPolarResolution2dSourceProperty</a></div>
</dd>
</dl>
@@ -162,15 +160,6 @@ This profile allows for custom geometry to be used as the cutter profile.</p>
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</a>
</div>
<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>
@@ -345,38 +334,6 @@ This profile allows for custom geometry to be used as the cutter profile.</p>
<a id="Hi_Milling_Cutters_CustomSpinningProfile_PolarResolution2dSource_" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.PolarResolution2dSource*"></a>
<h3 id="Hi_Milling_Cutters_CustomSpinningProfile_PolarResolution2dSource" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.PolarResolution2dSource">
PolarResolution2dSource
</h3>
<div class="markdown level1 summary"><p>The provider of <a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IPolarResolution2d&gt; PolarResolution2dSource { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_CustomSpinningProfile_XName_" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.XName*"></a>
<h3 id="Hi_Milling_Cutters_CustomSpinningProfile_XName" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.XName">
@@ -518,39 +475,6 @@ This profile allows for custom geometry to be used as the cutter profile.</p>
<a id="Hi_Milling_Cutters_CustomSpinningProfile_GetStl_" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.GetStl*"></a>
<h3 id="Hi_Milling_Cutters_CustomSpinningProfile_GetStl" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL mesh representation of the profile.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL mesh</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_CustomSpinningProfile_GetZrList_" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.GetZrList*"></a>
<h3 id="Hi_Milling_Cutters_CustomSpinningProfile_GetZrList" data-uid="Hi.Milling.Cutters.CustomSpinningProfile.GetZrList">
@@ -103,7 +103,7 @@ This profile determines the ratio between inner and outer radii based on the num
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class FluteDependentRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache, IFluteNumSourceProperty, IZrListSourceProperty</code></pre>
<pre><code class="lang-csharp hljs">public class FluteDependentRatioProfile : IShaperProfile, IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IDuplicate, IClearCache, IFluteNumSourceProperty, IZrListSourceProperty</code></pre>
</div>
@@ -125,7 +125,6 @@ This profile determines the ratio between inner and outer radii based on the num
<div><a class="xref" href="Hi.Common.IAbstractNote.html">IAbstractNote</a></div>
<div><a class="xref" href="Hi.Geom.IGetZrList.html">IGetZrList</a></div>
<div><a class="xref" href="Hi.Geom.IGenStl.html">IGenStl</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</a></div>
<div><a class="xref" href="Hi.Milling.FluteContours.IFluteNumSourceProperty.html">IFluteNumSourceProperty</a></div>
@@ -163,15 +162,6 @@ This profile determines the ratio between inner and outer radii based on the num
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</a>
</div>
<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>
@@ -540,39 +530,6 @@ Runtime property.</p>
<a id="Hi_Milling_Cutters_FluteDependentRatioProfile_GetStl_" data-uid="Hi.Milling.Cutters.FluteDependentRatioProfile.GetStl*"></a>
<h3 id="Hi_Milling_Cutters_FluteDependentRatioProfile_GetStl" data-uid="Hi.Milling.Cutters.FluteDependentRatioProfile.GetStl">
GetStl()
</h3>
<div class="markdown level1 summary"><p>Gets the STL geometry data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Stl GetStl()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Stl.html">Stl</a></dt>
<dd><p>The STL geometry object</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_FluteDependentRatioProfile_GetZrList_" data-uid="Hi.Milling.Cutters.FluteDependentRatioProfile.GetZrList*"></a>
<h3 id="Hi_Milling_Cutters_FluteDependentRatioProfile_GetZrList" data-uid="Hi.Milling.Cutters.FluteDependentRatioProfile.GetZrList">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IShaperProfile | HiAPI-C# 2025 ">
<meta name="description" content="Interface defining the shape profile of a cutter flute.">
<meta name="description" content="Interface defining the shape profile of a cutter flute. Mesh access is resolution-explicit: callers pass their value through , or state the profile&#39;s own default with a null argument.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,12 +97,15 @@ Interface IShaperProfile
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Interface defining the shape profile of a cutter flute.</p>
<div class="markdown summary"><p>Interface defining the shape profile of a cutter flute.
Mesh access is resolution-explicit: callers pass their value through
<a class="xref" href="Hi.Geom.IGenStl.html#Hi_Geom_IGenStl_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a>, or state the profile's own default with a
null argument.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IShaperProfile : IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IGetStl, IDuplicate, IClearCache</code></pre>
<pre><code class="lang-csharp hljs">public interface IShaperProfile : IMakeXmlSource, IAbstractNote, IGetZrList, IGenStl, IDuplicate, IClearCache</code></pre>
</div>
@@ -126,9 +129,6 @@ Interface IShaperProfile
<div>
<a class="xref" href="Hi.Geom.IGenStl.html#Hi_Geom_IGenStl_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">IGenStl.GenStl(IPolarResolution2d)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.IGetStl.html#Hi_Geom_IGetStl_GetStl">IGetStl.GetStl()</a>
</div>
<div>
<a class="xref" href="Hi.Common.IDuplicate.html#Hi_Common_IDuplicate_Duplicate_System_Object___">IDuplicate.Duplicate(params object[])</a>
</div>
@@ -140,15 +140,6 @@ Interface IShaperProfile
<dl class="typelist extensionMethods">
<dt>Extension Methods</dt>
<dd>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToFaceDrawing_Hi_Geom_IGetStl_">StlUtil.ToFaceDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToLineDrawing(IGetStl)</a>
</div>
<div>
<a class="xref" href="Hi.Geom.StlUtil.html#Hi_Geom_StlUtil_ToSparkleLineDrawing_Hi_Geom_IGetStl_">StlUtil.ToSparkleLineDrawing(IGetStl)</a>
</div>
<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>
@@ -102,7 +102,7 @@ Class MillingCutter
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class MillingCutter : ICutter, IGetSweptable, IAnchoredDisplayee, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IDisposable, INameNote, IGetFluteHeight, IDisplayee, IExpandToBox3d, IUpdateByContent, IClearCache, IGetThermalLayerList, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IDuplicate, IGetInitStickConvex, IVolumeRemover, IPolarResolution2d, IGetZrList</code></pre>
<pre><code class="lang-csharp hljs">public class MillingCutter : ICutter, IGetSweptable, IAnchoredDisplayee, IGetFletchBuckle, IMakeXmlSource, IAbstractNote, IAnchoredCollidableStem, IAnchoredCollidableNode, IAnchoredCollidableBased, IDisposable, INameNote, IGetFluteHeight, IDisplayee, IExpandToBox3d, IUpdateByContent, IClearCache, IGetThermalLayerList, ITopo, IGetAsmb, IGetAnchor, IGetTopoIndex, IGetAnchoredDisplayeeList, IDuplicate, IGetInitStickConvex, IVolumeRemover, IGetZrList</code></pre>
</div>
@@ -144,7 +144,6 @@ Class MillingCutter
<div><a class="xref" href="Hi.Common.IDuplicate.html">IDuplicate</a></div>
<div><a class="xref" href="Hi.Cbtr.IGetInitStickConvex.html">IGetInitStickConvex</a></div>
<div><a class="xref" href="Hi.Machining.IVolumeRemover.html">IVolumeRemover</a></div>
<div><a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a></div>
<div><a class="xref" href="Hi.Geom.IGetZrList.html">IGetZrList</a></div>
</dd>
</dl>
@@ -345,72 +344,6 @@ Shank and Flute compose the full cutter.</p>
<a id="Hi_Milling_Cutters_MillingCutter_AngleResolution_deg_" data-uid="Hi.Milling.Cutters.MillingCutter.AngleResolution_deg*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_AngleResolution_deg" data-uid="Hi.Milling.Cutters.MillingCutter.AngleResolution_deg">
AngleResolution_deg
</h3>
<div class="markdown level1 summary"><p>AngleResolution_deg.
Call <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_ClearCache">ClearCache()</a> after setting the property.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AngleResolution_deg { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_AngleResolution_rad_" data-uid="Hi.Milling.Cutters.MillingCutter.AngleResolution_rad*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_AngleResolution_rad" data-uid="Hi.Milling.Cutters.MillingCutter.AngleResolution_rad">
AngleResolution_rad
</h3>
<div class="markdown level1 summary"><p>AngleResolution_rad.
Call <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_ClearCache">ClearCache()</a> after setting the property.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AngleResolution_rad { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_CoatingLayerList_" data-uid="Hi.Milling.Cutters.MillingCutter.CoatingLayerList*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_CoatingLayerList" data-uid="Hi.Milling.Cutters.MillingCutter.CoatingLayerList">
@@ -572,6 +505,41 @@ The sequence starts from surface, i.e. from outer to inner.</p>
<a id="Hi_Milling_Cutters_MillingCutter_DefaultShaperStlResolution_" data-uid="Hi.Milling.Cutters.MillingCutter.DefaultShaperStlResolution*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_DefaultShaperStlResolution" data-uid="Hi.Milling.Cutters.MillingCutter.DefaultShaperStlResolution">
DefaultShaperStlResolution
</h3>
<div class="markdown level1 summary"><p>Mesh resolution a fresh cutter's shaper solid is born with — the explicit
Setup-face display-quality contract. A play swaps the solid for one born
with the runtime-derived resolution
(see <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_Hi_Geom_Resolution_PolarResolution2d_">SetShaperStlResolution(PolarResolution2d)</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static PolarResolution2d DefaultShaperStlResolution { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_DefaultStlLongitudeNum_" data-uid="Hi.Milling.Cutters.MillingCutter.DefaultStlLongitudeNum*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_DefaultStlLongitudeNum" data-uid="Hi.Milling.Cutters.MillingCutter.DefaultStlLongitudeNum">
@@ -1066,39 +1034,6 @@ Only available if the cutter is <a class="xref" href="Hi.Milling.Cutters.Milling
<a id="Hi_Milling_Cutters_MillingCutter_LinearResolution_mm_" data-uid="Hi.Milling.Cutters.MillingCutter.LinearResolution_mm*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_LinearResolution_mm" data-uid="Hi.Milling.Cutters.MillingCutter.LinearResolution_mm">
LinearResolution_mm
</h3>
<div class="markdown level1 summary"><p>LinearResolution_mm.
Call <a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_ClearCache">ClearCache()</a> after setting the property.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double LinearResolution_mm { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_MillingCutterOptLimit_" data-uid="Hi.Milling.Cutters.MillingCutter.MillingCutterOptLimit*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_MillingCutterOptLimit" data-uid="Hi.Milling.Cutters.MillingCutter.MillingCutterOptLimit">
@@ -1619,38 +1554,6 @@ the part triggers collision to workpiece if overlapped.</p>
<a id="Hi_Milling_Cutters_MillingCutter_UpperBeamPolarResolution2dSource_" data-uid="Hi.Milling.Cutters.MillingCutter.UpperBeamPolarResolution2dSource*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_UpperBeamPolarResolution2dSource" data-uid="Hi.Milling.Cutters.MillingCutter.UpperBeamPolarResolution2dSource">
UpperBeamPolarResolution2dSource
</h3>
<div class="markdown level1 summary"><p>Gets or sets the provider for upper beam polar resolution.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;PolarResolution2d&gt; UpperBeamPolarResolution2dSource { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_XName_" data-uid="Hi.Milling.Cutters.MillingCutter.XName*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_XName" data-uid="Hi.Milling.Cutters.MillingCutter.XName">
@@ -2721,6 +2624,82 @@ and chains <code>Reg(factory)</code> on dependents. Idempotent.</p>
<a id="Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_" data-uid="Hi.Milling.Cutters.MillingCutter.SetShaperStlResolution*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.Milling.Cutters.MillingCutter.SetShaperStlResolution(Hi.Geom.Resolution.PolarResolution2d)">
SetShaperStlResolution(PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Equips the runtime-derived mesh resolution: swaps the shaper solid for one
born with <code class="paramref">resolution</code> and drops the swept-mesh cache; a
matching resolution keeps the current solid untouched. Runtime-only — the
authored cutter data and its serialized form never carry the value. The
strut (upper-beam) solid is equipped by the sibling
<a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_SetStrutStlResolution_Hi_Geom_Resolution_PolarResolution2d_">SetStrutStlResolution(PolarResolution2d)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SetShaperStlResolution(PolarResolution2d resolution)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Runtime-derived mesh resolution; null lets the shaper profile apply its own default.</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_SetStrutStlResolution_" data-uid="Hi.Milling.Cutters.MillingCutter.SetStrutStlResolution*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_SetStrutStlResolution_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.Milling.Cutters.MillingCutter.SetStrutStlResolution(Hi.Geom.Resolution.PolarResolution2d)">
SetStrutStlResolution(PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Equips the runtime-derived mesh resolution on the strut (upper-beam)
solid — the same swap-not-mutate contract as
<a class="xref" href="Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_SetShaperStlResolution_Hi_Geom_Resolution_PolarResolution2d_">SetShaperStlResolution(PolarResolution2d)</a>: a matching resolution keeps the
current solid untouched, and the authored cutter data never carries the
value. At rest the strut solid stays on its born-with null resolution
(the geometry's own default).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SetStrutStlResolution(PolarResolution2d resolution)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Runtime-derived mesh resolution; null lets the geometry apply its own default.</p>
</dd>
</dl>
<a id="Hi_Milling_Cutters_MillingCutter_UpdateByContent_" data-uid="Hi.Milling.Cutters.MillingCutter.UpdateByContent*"></a>
<h3 id="Hi_Milling_Cutters_MillingCutter_UpdateByContent" data-uid="Hi.Milling.Cutters.MillingCutter.UpdateByContent">
@@ -147,7 +147,10 @@ Interfaces
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.Milling.Cutters.IShaperProfile.html">IShaperProfile</a></dt>
<dd><p>Interface defining the shape profile of a cutter flute.</p>
<dd><p>Interface defining the shape profile of a cutter flute.
Mesh access is resolution-explicit: callers pass their value through
<a class="xref" href="Hi.Geom.IGenStl.html#Hi_Geom_IGenStl_GenStl_Hi_Geom_Resolution_IPolarResolution2d_">GenStl(IPolarResolution2d)</a>, or state the profile's own default with a
null argument.</p>
</dd>
</dl>
<h3 id="enums">
@@ -299,7 +299,7 @@ Class TrainingSample
<h4 class="section" id="Hi_MillingForces_Fittings_TrainingSample_NormalizeByInput_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj</p>
The R-value decreases from 99% to 70% in an observed moment-training case.</p>
</div>
@@ -899,7 +899,10 @@ The value is 2 * pi / <a class="xref" href="Hi.MillingForces.MillingForce.html#H
</h3>
<div class="markdown level1 summary"><p>Gets the feed rate in millimeters per second.</p>
<div class="markdown level1 summary"><p>The tool-tip feedrate the force step was computed with, in millimeters
per second: the step's real tip feedrate
(<a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_ActualTipFeedrate_mmds">ActualTipFeedrate_mmds</a>),
or a solver's candidate feed on a trial step.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -163,8 +163,8 @@ Class MillingForceUtil
<div class="markdown level1 summary"><p>Whether the physics runs on the native (core.dll) kernels. Default is
true, and in shipping builds the native kernel is the only physics
implementation: setting this to false requires the managed reference
implementation (the non-shipping HiMech.PhysicsRef assembly, registered
at startup by dev/test hosts) and throws
implementation (not shipped; registered at startup by dev/test hosts)
and throws
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.invalidoperationexception">InvalidOperationException</a> without it — failing at
configuration time rather than on every step of a play. Both
implementations produce the same results. Process-global like
@@ -323,7 +323,7 @@ public static bool EnableSampleNormalization</code></pre>
<h4 class="section" id="Hi_MillingForces_Training_MillingTraining_EnableSampleNormalization_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>The input normalization deminish the quantity effect.
The R-value decrease from 99% to 70% in moment training case from NKUST\nkust2024-milling-para-training-plan\workingx.hincproj
The R-value decreases from 99% to 70% in an observed moment-training case.
Don't apply this option.</p>
</div>
@@ -380,38 +380,6 @@ Class Fixture
<a id="Hi_NcMech_Fixtures_Fixture_CollisionFlag_" data-uid="Hi.NcMech.Fixtures.Fixture.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Fixtures_Fixture_CollisionFlag" data-uid="Hi.NcMech.Fixtures.Fixture.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Fixtures_Fixture_Geom_" data-uid="Hi.NcMech.Fixtures.Fixture.Geom*"></a>
<h3 id="Hi_NcMech_Fixtures_Fixture_Geom" data-uid="Hi.NcMech.Fixtures.Fixture.Geom">
@@ -1123,6 +1091,43 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_NcMech_Fixtures_Fixture_HostSharedSolid_" data-uid="Hi.NcMech.Fixtures.Fixture.HostSharedSolid*"></a>
<h3 id="Hi_NcMech_Fixtures_Fixture_HostSharedSolid_Hi_NcMech_Solids_Solid_" data-uid="Hi.NcMech.Fixtures.Fixture.HostSharedSolid(Hi.NcMech.Solids.Solid)">
HostSharedSolid(Solid)
</h3>
<div class="markdown level1 summary"><p>Replaces <a class="xref" href="Hi.NcMech.Fixtures.Fixture.html#Hi_NcMech_Fixtures_Fixture_Solid">Solid</a> with an externally owned instance. The
fixture does NOT dispose an injected solid: the provider keeps its
lifecycle, so one solid can be shared by several hosts (e.g. the
authored and the runtime topology entity displaying the same fixture).
The fixture's own solid is disposed when it was self-created.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void HostSharedSolid(Solid shared)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>shared</code> <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a></dt>
<dd><p>The externally owned solid to host.</p>
</dd>
</dl>
<a id="Hi_NcMech_Fixtures_Fixture_MakeXmlSource_" data-uid="Hi.NcMech.Fixtures.Fixture.MakeXmlSource*"></a>
<h3 id="Hi_NcMech_Fixtures_Fixture_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcMech.Fixtures.Fixture.MakeXmlSource(System.String,System.String,System.Boolean)">
@@ -461,38 +461,6 @@ Class CylindroidHolder
<a id="Hi_NcMech_Holders_CylindroidHolder_CollisionFlag_" data-uid="Hi.NcMech.Holders.CylindroidHolder.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Holders_CylindroidHolder_CollisionFlag" data-uid="Hi.NcMech.Holders.CylindroidHolder.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Holders_CylindroidHolder_CutterBuckle_" data-uid="Hi.NcMech.Holders.CylindroidHolder.CutterBuckle*"></a>
<h3 id="Hi_NcMech_Holders_CylindroidHolder_CutterBuckle" data-uid="Hi.NcMech.Holders.CylindroidHolder.CutterBuckle">
@@ -660,7 +628,10 @@ Class CylindroidHolder
</h3>
<div class="markdown level1 summary"><p>Gets or sets the polar resolution used for STL generation.</p>
<div class="markdown level1 summary"><p>Gets or sets the polar resolution used for STL generation. Authored data.
The resolution is part of a <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>'s identity, so
assigning this property swaps the holder's solid for one born with the
new value (the old solid is disposed).</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -429,38 +429,6 @@ Class FreeformHolder
<a id="Hi_NcMech_Holders_FreeformHolder_CollisionFlag_" data-uid="Hi.NcMech.Holders.FreeformHolder.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Holders_FreeformHolder_CollisionFlag" data-uid="Hi.NcMech.Holders.FreeformHolder.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Holders_FreeformHolder_CutterBuckle_" data-uid="Hi.NcMech.Holders.FreeformHolder.CutterBuckle*"></a>
<h3 id="Hi_NcMech_Holders_FreeformHolder_CutterBuckle" data-uid="Hi.NcMech.Holders.FreeformHolder.CutterBuckle">
@@ -500,7 +468,7 @@ Class FreeformHolder
</h3>
<div class="markdown level1 summary"><p>Gets the transformation geometry. Internal Use Only.</p>
<div class="markdown level1 summary"><p>Gets or sets the holder geometry. Internal Use Only.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -522,7 +490,12 @@ Class FreeformHolder
<h4 class="section" id="Hi_NcMech_Holders_FreeformHolder_Geom_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Call <a class="xref" href="Hi.NcMech.Holders.FreeformHolder.html#Hi_NcMech_Holders_FreeformHolder_UpdateByGeom">UpdateByGeom()</a> to keep state of <span class="xref">Hi.NcMech.Holders.FreeformHolder.Solid</span> if content modified.</p>
<div class="markdown level1 remarks"><p>Delegates to <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Geom">Geom</a> of <span class="xref">Hi.NcMech.Holders.FreeformHolder.Solid</span> (the same
seam as <a class="xref" href="Hi.NcMech.Holders.CylindroidHolder.html#Hi_NcMech_Holders_CylindroidHolder_Cylindroid">Cylindroid</a>), so the collidee and the
display body always tessellate the geometry assigned here; a detached
property would leave the solid on the empty geometry it was born with.
Call <a class="xref" href="Hi.NcMech.Holders.FreeformHolder.html#Hi_NcMech_Holders_FreeformHolder_UpdateByGeom">UpdateByGeom()</a> to keep state of <span class="xref">Hi.NcMech.Holders.FreeformHolder.Solid</span> if
content modified in place.</p>
</div>
@@ -759,7 +732,10 @@ Class FreeformHolder
</h3>
<div class="markdown level1 summary"><p>Gets or sets the polar resolution 2D settings.</p>
<div class="markdown level1 summary"><p>Gets or sets the polar resolution 2D settings. Authored data.
The resolution is part of a <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a>'s identity, so
assigning this property swaps the holder's solid for one born with the
new value (the old solid is disposed).</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Interface IGetCodeXyzabcMachineTool | HiAPI-C# 2025 </title>
<title>Struct CollisionRedScope.Scope | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IGetCodeXyzabcMachineTool | HiAPI-C# 2025 ">
<meta name="title" content="Struct CollisionRedScope.Scope | HiAPI-C# 2025 ">
<meta name="description" content="Interface of .">
<meta name="description" content="Restores the previous scope on dispose.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,46 +84,77 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool">
<article data-uid="Hi.NcMech.Solids.CollisionRedScope.Scope">
<h1 id="Hi_NcMech_Xyzabc_IGetCodeXyzabcMachineTool" data-uid="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool" class="text-break">
Interface IGetCodeXyzabcMachineTool
<h1 id="Hi_NcMech_Solids_CollisionRedScope_Scope" data-uid="Hi.NcMech.Solids.CollisionRedScope.Scope" class="text-break">
Struct CollisionRedScope.Scope
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Xyzabc.html">Xyzabc</a></dd></dl>
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Solids.html">Solids</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Interface of <a class="xref" href="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html#Hi_NcMech_Xyzabc_IGetCodeXyzabcMachineTool_GetXyzabcMachineTool">GetXyzabcMachineTool()</a>.</p>
<div class="markdown summary"><p>Restores the previous scope on dispose.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IGetCodeXyzabcMachineTool</code></pre>
<pre><code class="lang-csharp hljs">public readonly struct CollisionRedScope.Scope : IDisposable</code></pre>
</div>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</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.valuetype.equals">ValueType.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetype.gethashcode">ValueType.GetHashCode()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.valuetype.tostring">ValueType.ToString()</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.gettype">object.GetType()</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.Common.MaskUtil.html#Hi_Common_MaskUtil_GetMaskedValue__1___0___0_System_Boolean_">MaskUtil.GetMaskedValue&lt;T&gt;(T, T, bool)</a>
</div>
<div>
<a class="xref" href="Hi.Common.MaskUtil.html#Hi_Common_MaskUtil_SetMask__1___0____0_System_Boolean_">MaskUtil.SetMask&lt;T&gt;(ref T, T, bool)</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>
@@ -146,28 +177,22 @@ Interface IGetCodeXyzabcMachineTool
</h2>
<a id="Hi_NcMech_Xyzabc_IGetCodeXyzabcMachineTool_GetXyzabcMachineTool_" data-uid="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.GetXyzabcMachineTool*"></a>
<a id="Hi_NcMech_Solids_CollisionRedScope_Scope_Dispose_" data-uid="Hi.NcMech.Solids.CollisionRedScope.Scope.Dispose*"></a>
<h3 id="Hi_NcMech_Xyzabc_IGetCodeXyzabcMachineTool_GetXyzabcMachineTool" data-uid="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.GetXyzabcMachineTool">
GetXyzabcMachineTool()
<h3 id="Hi_NcMech_Solids_CollisionRedScope_Scope_Dispose" data-uid="Hi.NcMech.Solids.CollisionRedScope.Scope.Dispose">
Dispose()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a>.</p>
<div class="markdown level1 summary"><p>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">CodeXyzabcMachineTool GetXyzabcMachineTool()</code></pre>
<pre><code class="lang-csharp hljs">public void Dispose()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a></dt>
<dd><p>Machine tool.</p>
</dd>
</dl>
@@ -0,0 +1,269 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CollisionRedScope | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CollisionRedScope | HiAPI-C# 2025 ">
<meta name="description" content="Render-thread ambient scope telling which items the current scene paints collision-red. Collision state is per-scenario and owned by the detecting equipment — never stored on the geometry, so one hosted by several topology entities carries no cross-scenario red — and it is application state, so it does not travel on the display base layer (Bind) either: the scene object that owns the state opens the scope around its subtree. using var _ = CollisionRedScope.Enter(equipment.IsCollisionRed); asmb.Display(bind, root, displayees);">
<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.NcMech.Solids.CollisionRedScope">
<h1 id="Hi_NcMech_Solids_CollisionRedScope" data-uid="Hi.NcMech.Solids.CollisionRedScope" class="text-break">
Class CollisionRedScope
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Solids.html">Solids</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Render-thread ambient scope telling <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_">Display(Bind)</a> which items
the current scene paints collision-red. Collision state is per-scenario and
owned by the detecting equipment — never stored on the geometry, so one
<a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> hosted by several topology entities carries no
cross-scenario red — and it is application state, so it does not travel on
the display base layer (<code>Bind</code>) either: the scene object that owns the
state opens the scope around its subtree.</p>
<pre><code class="lang-csharp">using var _ = CollisionRedScope.Enter(equipment.IsCollisionRed);
asmb.Display(bind, root, displayees);</code></pre>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class CollisionRedScope</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">CollisionRedScope</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_NcMech_Solids_CollisionRedScope_Enter_" data-uid="Hi.NcMech.Solids.CollisionRedScope.Enter*"></a>
<h3 id="Hi_NcMech_Solids_CollisionRedScope_Enter_System_Func_System_Object_System_Boolean__" data-uid="Hi.NcMech.Solids.CollisionRedScope.Enter(System.Func{System.Object,System.Boolean})">
Enter(Func&lt;object, bool&gt;)
</h3>
<div class="markdown level1 summary"><p>Opens a scope on the calling thread; dispose restores the previous one.
<code class="paramref">isCollisionRed</code> may be null (an empty scope).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static CollisionRedScope.Scope Enter(Func&lt;object, bool&gt; isCollisionRed)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>isCollisionRed</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a>&gt;</dt>
<dd><p>The scene's per-item collision query.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.html">CollisionRedScope</a>.<a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.Scope.html">Scope</a></dt>
<dd><p>Token that restores the previous scope on dispose.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_CollisionRedScope_IsRed_" data-uid="Hi.NcMech.Solids.CollisionRedScope.IsRed*"></a>
<h3 id="Hi_NcMech_Solids_CollisionRedScope_IsRed_System_Object_" data-uid="Hi.NcMech.Solids.CollisionRedScope.IsRed(System.Object)">
IsRed(object)
</h3>
<div class="markdown level1 summary"><p>Whether the ambient scene flags <code class="paramref">item</code> collision-red.
False outside any scope — a topology displayed without one (e.g. the
authored setup face) never paints red.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool IsRed(object item)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>item</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd><p>A displayed item (typically a <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</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><p>true if the item is currently collision-red.</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>
@@ -103,7 +103,7 @@ Provides thread-safe access to geometry data and caching mechanisms.</p>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class Solid : IGetTriTree, ICollidable, IGetCollidable, IDisplayee, IExpandToBox3d, IStlSource, IGetStl, IPolarResolution2dSourceProperty, IDisposable, IMakeXmlSource, IGetSolid, IUpdateByContent, IClearCache</code></pre>
<pre><code class="lang-csharp hljs">public class Solid : IGetTriTree, ICollidable, IGetCollidable, IDisplayee, IExpandToBox3d, IStlSource, IGetStl, IDisposable, IMakeXmlSource, IGetSolid, IUpdateByContent, IClearCache</code></pre>
</div>
@@ -127,7 +127,6 @@ Provides thread-safe access to geometry data and caching mechanisms.</p>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Geom.IStlSource.html">IStlSource</a></div>
<div><a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></div>
<div><a class="xref" href="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.html">IPolarResolution2dSourceProperty</a></div>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.NcMech.Solids.IGetSolid.html">IGetSolid</a></div>
@@ -269,6 +268,44 @@ Provides thread-safe access to geometry data and caching mechanisms.</p>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor_Hi_Geom_IGetStl_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.NcMech.Solids.Solid.#ctor(Hi.Geom.IGetStl,Hi.Geom.Resolution.PolarResolution2d)">
Solid(IGetStl, PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> class with the
specified STL geometry source and the mesh resolution the solid is born
with (see <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_PolarResolution2d">PolarResolution2d</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid(IGetStl geom, PolarResolution2d polarResolution2d)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>geom</code> <a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd><p>The STL geometry source.</p>
</dd>
<dt><code>polarResolution2d</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Mesh resolution snapshot; null lets the geometry apply its own default.</p>
</dd>
</dl>
<a id="Hi_NcMech_Solids_Solid__ctor_" data-uid="Hi.NcMech.Solids.Solid.#ctor*"></a>
<h3 id="Hi_NcMech_Solids_Solid__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.NcMech.Solids.Solid.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
@@ -347,38 +384,6 @@ Provides thread-safe access to geometry data and caching mechanisms.</p>
</h2>
<a id="Hi_NcMech_Solids_Solid_CollisionFlag_" data-uid="Hi.NcMech.Solids.Solid.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Solids_Solid_CollisionFlag" data-uid="Hi.NcMech.Solids.Solid.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag indicating the collision state of this solid.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Solids_Solid_Geom_" data-uid="Hi.NcMech.Solids.Solid.Geom*"></a>
<h3 id="Hi_NcMech_Solids_Solid_Geom" data-uid="Hi.NcMech.Solids.Solid.Geom">
@@ -420,7 +425,8 @@ Setting this property will clear the cached data.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the native STL representation.
The data is created from the STL representation when first accessed.</p>
The data is created from the STL representation when first accessed, and
is null once this solid is disposed — a disposed solid never rebuilds.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -445,19 +451,25 @@ The data is created from the STL representation when first accessed.</p>
<a id="Hi_NcMech_Solids_Solid_PolarResolution2dSource_" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2dSource*"></a>
<a id="Hi_NcMech_Solids_Solid_PolarResolution2d_" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2d*"></a>
<h3 id="Hi_NcMech_Solids_Solid_PolarResolution2dSource" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2dSource">
PolarResolution2dSource
<h3 id="Hi_NcMech_Solids_Solid_PolarResolution2d" data-uid="Hi.NcMech.Solids.Solid.PolarResolution2d">
PolarResolution2d
</h3>
<div class="markdown level1 summary"><p>The provider of <a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>.</p>
<div class="markdown level1 summary"><p>The mesh resolution this solid's runtime products are generated with —
part of the solid's identity, fixed at construction (a defensive copy, so
later mutation of the caller's carrier cannot reach it). Null lets a
parametric <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Geom">Geom</a> apply its own default. To change the
resolution, build a new <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> (and dispose the old one);
there is no in-place mutation or invalidation protocol. Never serialized:
resolution is runtime data, not authored content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;IPolarResolution2d&gt; PolarResolution2dSource { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public PolarResolution2d PolarResolution2d { get; }</code></pre>
</div>
@@ -466,7 +478,7 @@ The data is created from the STL representation when first accessed.</p>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>&gt;</dt>
<dt><a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd></dd>
</dl>
@@ -521,8 +533,9 @@ Setting this to false will clear the cached data.</p>
<div class="markdown level1 summary"><p>Optional authored display color (RGB, each channel 0~1). Null means not
authored: display sites fall back to a color seeded from the hosting
anchor's persisted Guid, and <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_">Display(Bind)</a> pushes no color
of its own. A collision (<a class="xref" href="Hi.Collision.CollisionFlag.html#Hi_Collision_CollisionFlag_Collision">Collision</a>) always
overrides the authored color with red.
of its own. Collision red from the ambient scene scope
(<a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.html">CollisionRedScope</a> — stamped by the detecting equipment)
always wins over the authored color.
Serialized as the optional <code>Rgb</code> attribute of the
<code>&lt;Solid&gt;</code> element; legacy readers ignore attributes, so the
addition is backward and forward compatible.</p>
@@ -558,7 +571,8 @@ addition is backward and forward compatible.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the native smooth topology STL representation.
The data is created from the STL representation when first accessed.</p>
The data is created from the STL representation when first accessed, and
is null once this solid is disposed — a disposed solid never rebuilds.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -591,7 +605,11 @@ The data is created from the STL representation when first accessed.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the STL representation of the solid geometry.
The STL data is cached after first access.</p>
The STL data is cached after first access, and null once this solid is
disposed. Note this is normally the geometry model's own instance, not a
private copy: a <a class="xref" href="Hi.Geom.StlFile.html">StlFile</a> source hands back the very
<code>CacheStl</code> it holds for its lifetime, so dropping this field frees
nothing for file-backed geometry. Do not mutate the returned mesh.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -624,7 +642,11 @@ The STL data is cached after first access.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the triangle tree representation for collision detection.
The tree is built from the native STL data when first accessed.</p>
The tree is built from the native STL data when first accessed, and is
null once this solid is disposed — a disposed solid never rebuilds, and
<a class="xref" href="Hi.Collision.CollisionUtil.html">CollisionUtil</a> reads a null collidee as
&ldquo;no collision&rdquo; rather than raising, so a disposed solid silently stops
participating in detection.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -94,6 +94,19 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.html">CollisionRedScope</a></dt>
<dd><p>Render-thread ambient scope telling <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_Display_Hi_Disp_Bind_">Display(Bind)</a> which items
the current scene paints collision-red. Collision state is per-scenario and
owned by the detecting equipment — never stored on the geometry, so one
<a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> hosted by several topology entities carries no
cross-scenario red — and it is application state, so it does not travel on
the display base layer (<code>Bind</code>) either: the scene object that owns the
state opens the scope around its subtree.</p>
<pre><code class="lang-csharp">using var _ = CollisionRedScope.Enter(equipment.IsCollisionRed);
asmb.Display(bind, root, displayees);</code></pre>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a></dt>
<dd><p>Represents a solid geometry object with display, collision detection, and STL capabilities.
@@ -104,6 +117,14 @@ Provides thread-safe access to geometry data and caching mechanisms.</p>
<dt><a class="xref" href="Hi.NcMech.Solids.SolidFuncSource.html">SolidFuncSource</a></dt>
<dd><p>Provides a function-based source for solid geometry objects.
Allows dynamic generation of solid models through a delegate function.</p>
</dd>
</dl>
<h3 id="structs">
Structs
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Solids.CollisionRedScope.Scope.html">CollisionRedScope.Scope</a></dt>
<dd><p>Restores the previous scope on dispose.</p>
</dd>
</dl>
<h3 id="interfaces">
@@ -136,9 +136,6 @@ Combines solid geometry, display capabilities, and collision detection functiona
<div>
<a class="xref" href="Hi.Collision.IAnchoredCollidableBased.html#Hi_Collision_IAnchoredCollidableBased_GetAnchoredCollidableNode">IAnchoredCollidableBased.GetAnchoredCollidableNode()</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_CollisionFlag">ICollidable.CollisionFlag</a>
</div>
<div>
<a class="xref" href="Hi.Collision.ICollidable.html#Hi_Collision_ICollidable_GetCollidee">ICollidable.GetCollidee()</a>
</div>
@@ -1,754 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class SolidSourceTopoBrick | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class SolidSourceTopoBrick | HiAPI-C# 2025 ">
<meta name="description" content="Represents a topological brick that sources its geometry from a solid model. Implements display, collision detection, and content update capabilities.">
<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.NcMech.Topo.SolidSourceTopoBrick">
<h1 id="Hi_NcMech_Topo_SolidSourceTopoBrick" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick" class="text-break">
Class SolidSourceTopoBrick
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Topo.html">Topo</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a topological brick that sources its geometry from a solid model.
Implements display, collision detection, and content update capabilities.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class SolidSourceTopoBrick : ITopoBrick, IGetSolid, IAnchoredDisplayee, IGetAnchor, IGetTopoIndex, IDisplayee, IExpandToBox3d, IAnchoredCollidableLeaf, IAnchoredCollidableNode, IAnchoredCollidableBased, ICollidable, IUpdateByContent, IClearCache</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">SolidSourceTopoBrick</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.NcMech.Topo.ITopoBrick.html">ITopoBrick</a></div>
<div><a class="xref" href="Hi.NcMech.Solids.IGetSolid.html">IGetSolid</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IAnchoredDisplayee.html">IAnchoredDisplayee</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetAnchor.html">IGetAnchor</a></div>
<div><a class="xref" href="Hi.Mech.Topo.IGetTopoIndex.html">IGetTopoIndex</a></div>
<div><a class="xref" href="Hi.Disp.IDisplayee.html">IDisplayee</a></div>
<div><a class="xref" href="Hi.Geom.IExpandToBox3d.html">IExpandToBox3d</a></div>
<div><a class="xref" href="Hi.Collision.IAnchoredCollidableLeaf.html">IAnchoredCollidableLeaf</a></div>
<div><a class="xref" href="Hi.Collision.IAnchoredCollidableNode.html">IAnchoredCollidableNode</a></div>
<div><a class="xref" href="Hi.Collision.IAnchoredCollidableBased.html">IAnchoredCollidableBased</a></div>
<div><a class="xref" href="Hi.Collision.ICollidable.html">ICollidable</a></div>
<div><a class="xref" href="Hi.Common.IUpdateByContent.html">IUpdateByContent</a></div>
<div><a class="xref" href="Hi.Common.IClearCache.html">IClearCache</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.Collision.CollisionUtil.html#Hi_Collision_CollisionUtil_Detect_Hi_Collision_ICollidable_Hi_Collision_ICollidable_Hi_Geom_Mat4d_System_Double_System_Int32_">CollisionUtil.Detect(ICollidable, ICollidable, Mat4d, double, int)</a>
</div>
<div>
<a class="xref" href="Hi.Disp.DispUtil.html#Hi_Disp_DispUtil_Display_Hi_Disp_IDisplayee_Hi_Disp_Bind_Hi_Geom_Mat4d_">DispUtil.Display(IDisplayee, Bind, Mat4d)</a>
</div>
<div>
<a class="xref" href="Hi.Mech.Topo.TopoUtil.html#Hi_Mech_Topo_TopoUtil_Display_Hi_Mech_Topo_IGetAnchor_Hi_Disp_Bind_System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_Geom_Mat4d__">TopoUtil.Display(IGetAnchor, Bind, Dictionary&lt;Anchor, Mat4d&gt;)</a>
</div>
<div>
<a class="xref" href="Hi.Mech.Topo.TopoUtil.html#Hi_Mech_Topo_TopoUtil_ExpandToBox3d_Hi_Mech_Topo_IGetAnchor_Hi_Geom_Box3d_System_Collections_Generic_Dictionary_Hi_Mech_Topo_Anchor_Hi_Geom_Mat4d__">TopoUtil.ExpandToBox3d(IGetAnchor, Box3d, Dictionary&lt;Anchor, Mat4d&gt;)</a>
</div>
<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_NcMech_Topo_SolidSourceTopoBrick__ctor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick__ctor" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor">
SolidSourceTopoBrick()
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Topo.SolidSourceTopoBrick.html">SolidSourceTopoBrick</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SolidSourceTopoBrick()</code></pre>
</div>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick__ctor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick__ctor_Hi_Mech_Topo_Anchor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor(Hi.Mech.Topo.Anchor)">
SolidSourceTopoBrick(Anchor)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Topo.SolidSourceTopoBrick.html">SolidSourceTopoBrick</a> class with the specified anchor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SolidSourceTopoBrick(Anchor anchor)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>anchor</code> <a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>The anchor point for this brick.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick__ctor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick__ctor_Hi_Mech_Topo_Anchor_Hi_NcMech_Solids_IGetSolid_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.#ctor(Hi.Mech.Topo.Anchor,Hi.NcMech.Solids.IGetSolid)">
SolidSourceTopoBrick(Anchor, IGetSolid)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Topo.SolidSourceTopoBrick.html">SolidSourceTopoBrick</a> class with the specified anchor and solid source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SolidSourceTopoBrick(Anchor anchor, IGetSolid solidSource)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>anchor</code> <a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>The anchor point for this brick.</p>
</dd>
<dt><code>solidSource</code> <a class="xref" href="Hi.NcMech.Solids.IGetSolid.html">IGetSolid</a></dt>
<dd><p>The solid geometry source.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_Anchor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.Anchor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_Anchor" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.Anchor">
Anchor
</h3>
<div class="markdown level1 summary"><p>Gets the anchor point for this brick.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor Anchor { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_CollidableName_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.CollidableName*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_CollidableName" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.CollidableName">
CollidableName
</h3>
<div class="markdown level1 summary"><p>Gets the name of the collidable object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string CollidableName { 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_NcMech_Topo_SolidSourceTopoBrick_CollisionFlag_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_CollisionFlag" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_SolidSource_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.SolidSource*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_SolidSource" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.SolidSource">
SolidSource
</h3>
<div class="markdown level1 summary"><p>Gets the solid geometry source.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IGetSolid SolidSource { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Solids.IGetSolid.html">IGetSolid</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_ClearCache_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.ClearCache*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_ClearCache" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.ClearCache">
ClearCache()
</h3>
<div class="markdown level1 summary"><p>Clears any cached data held by the implementing object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ClearCache()</code></pre>
</div>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_Display_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.Display*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_Display_Hi_Disp_Bind_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.Display(Hi.Disp.Bind)">
Display(Bind)
</h3>
<div class="markdown level1 summary"><p>Display function called in <a class="xref" href="Hi.Disp.DispEngine.html">DispEngine</a> rendering loop.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Display(Bind bind)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>bind</code> <a class="xref" href="Hi.Disp.Bind.html">Bind</a></dt>
<dd><p>Bind with <a class="xref" href="Hi.Disp.DispEngine.html">DispEngine</a>. See <a class="xref" href="Hi.Disp.Bind.html">Bind</a>.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_ExpandToBox3d_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.ExpandToBox3d*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_ExpandToBox3d_Hi_Geom_Box3d_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.ExpandToBox3d(Hi.Geom.Box3d)">
ExpandToBox3d(Box3d)
</h3>
<div class="markdown level1 summary"><p>Expands the destination box.
This function is usually used to compute the bounding box of elements.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ExpandToBox3d(Box3d dst)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>dst</code> <a class="xref" href="Hi.Geom.Box3d.html">Box3d</a></dt>
<dd><p>Destination box</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetAnchor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetAnchor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetAnchor" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetAnchor">
GetAnchor()
</h3>
<div class="markdown level1 summary"><p>Get key anchor. (i.e. root anchor)</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetAnchor()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>key anchor</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetAnchoredCollidableNode_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetAnchoredCollidableNode*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetAnchoredCollidableNode" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetAnchoredCollidableNode">
GetAnchoredCollidableNode()
</h3>
<div class="markdown level1 summary"><p>Gets the anchored collidable node associated with this object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IAnchoredCollidableNode GetAnchoredCollidableNode()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.IAnchoredCollidableNode.html">IAnchoredCollidableNode</a></dt>
<dd><p>The anchored collidable node.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetCollidableAnchor_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetCollidableAnchor*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetCollidableAnchor" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetCollidableAnchor">
GetCollidableAnchor()
</h3>
<div class="markdown level1 summary"><p>Gets the anchor associated with this collidable leaf.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Anchor GetCollidableAnchor()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>The anchor for this collidable leaf.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetCollidee_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetCollidee*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetCollidee" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetCollidee">
GetCollidee()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ICollidee GetCollidee()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a></dt>
<dd><p><a class="xref" href="Hi.Collision.ICollidee.html">ICollidee</a></p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetSolid_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetSolid*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_GetSolid" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.GetSolid">
GetSolid()
</h3>
<div class="markdown level1 summary"><p>Gets the solid geometry object.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Solid GetSolid()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a></dt>
<dd><p>The solid geometry object.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_SolidSourceTopoBrick_UpdateByContent_" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.UpdateByContent*"></a>
<h3 id="Hi_NcMech_Topo_SolidSourceTopoBrick_UpdateByContent" data-uid="Hi.NcMech.Topo.SolidSourceTopoBrick.UpdateByContent">
UpdateByContent()
</h3>
<div class="markdown level1 summary"><p>Updates the object based on its current content.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateByContent()</code></pre>
</div>
</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>
@@ -306,6 +306,47 @@ Implements display, collision detection, and content update capabilities.</p>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick__ctor_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.#ctor*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick__ctor_Hi_Mech_Topo_Anchor_Hi_Geom_IGetStl_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.#ctor(Hi.Mech.Topo.Anchor,Hi.Geom.IGetStl,Hi.Geom.Resolution.PolarResolution2d)">
StlSourceTopoBrick(Anchor, IGetStl, PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Topo.StlSourceTopoBrick.html">StlSourceTopoBrick</a> class
whose solid is born with the given mesh resolution
(see <a class="xref" href="Hi.NcMech.Solids.Solid.html#Hi_NcMech_Solids_Solid_PolarResolution2d">PolarResolution2d</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StlSourceTopoBrick(Anchor anchor, IGetStl geom, PolarResolution2d resolution)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>anchor</code> <a class="xref" href="Hi.Mech.Topo.Anchor.html">Anchor</a></dt>
<dd><p>The anchor point for this brick.</p>
</dd>
<dt><code>geom</code> <a class="xref" href="Hi.Geom.IGetStl.html">IGetStl</a></dt>
<dd><p>The STL geometry source.</p>
</dd>
<dt><code>resolution</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Mesh resolution the solid is born with; null lets the geometry apply its own default.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick__ctor_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.#ctor*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick__ctor_Hi_Mech_Topo_Anchor_Hi_NcMech_Solids_Solid_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.#ctor(Hi.Mech.Topo.Anchor,Hi.NcMech.Solids.Solid)">
@@ -414,38 +455,6 @@ entities displaying the same machine part).</p>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick_CollisionFlag_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick_CollisionFlag" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick_Geom_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.Geom*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick_Geom" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.Geom">
@@ -485,7 +494,9 @@ entities displaying the same machine part).</p>
</h3>
<div class="markdown level1 summary"><p>Gets the solid geometry instance.</p>
<div class="markdown level1 summary"><p>Gets the solid geometry instance. The instance is swapped — not mutated —
when the mesh resolution changes (see <a class="xref" href="Hi.NcMech.Topo.StlSourceTopoBrick.html#Hi_NcMech_Topo_StlSourceTopoBrick_RebuildSolid_Hi_Geom_Resolution_PolarResolution2d_">RebuildSolid(PolarResolution2d)</a>), so
consumers must re-read this property instead of caching the solid.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -833,6 +844,49 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick_RebuildSolid_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.RebuildSolid*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick_RebuildSolid_Hi_Geom_Resolution_PolarResolution2d_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.RebuildSolid(Hi.Geom.Resolution.PolarResolution2d)">
RebuildSolid(PolarResolution2d)
</h3>
<div class="markdown level1 summary"><p>Swaps the hosted <a class="xref" href="Hi.NcMech.Solids.Solid.html">Solid</a> for one born with
<code class="paramref">resolution</code>; the geometry and authored color carry over
and the replaced solid is disposed. The resolution is part of a solid's
identity, so a matching resolution keeps the current instance untouched.
Only a brick that owns its solid may rebuild it.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool RebuildSolid(PolarResolution2d resolution)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>resolution</code> <a class="xref" href="Hi.Geom.Resolution.PolarResolution2d.html">PolarResolution2d</a></dt>
<dd><p>Target mesh resolution; null lets the geometry apply its own default.</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 the solid was swapped; false if the resolution already matches.</p>
</dd>
</dl>
<a id="Hi_NcMech_Topo_StlSourceTopoBrick_UpdateByContent_" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.UpdateByContent*"></a>
<h3 id="Hi_NcMech_Topo_StlSourceTopoBrick_UpdateByContent" data-uid="Hi.NcMech.Topo.StlSourceTopoBrick.UpdateByContent">
@@ -104,12 +104,6 @@ Provides functionality for rotational motion with stroke and speed limits.</p>
<dt><a class="xref" href="Hi.NcMech.Topo.NcTranslation.html">NcTranslation</a></dt>
<dd><p>Represents a translational transformer for NC machine tool axes.
Provides functionality for linear motion with stroke and speed limits.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Topo.SolidSourceTopoBrick.html">SolidSourceTopoBrick</a></dt>
<dd><p>Represents a topological brick that sources its geometry from a solid model.
Implements display, collision detection, and content update capabilities.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -337,38 +337,6 @@ Compare to <a class="xref" href="Hi.NcMech.Workpieces.WorkpieceService.html#Hi_N
<a id="Hi_NcMech_Workpieces_WorkpieceService_CollisionFlag_" data-uid="Hi.NcMech.Workpieces.WorkpieceService.CollisionFlag*"></a>
<h3 id="Hi_NcMech_Workpieces_WorkpieceService_CollisionFlag" data-uid="Hi.NcMech.Workpieces.WorkpieceService.CollisionFlag">
CollisionFlag
</h3>
<div class="markdown level1 summary"><p>Gets or sets the collision flag.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CollisionFlag CollisionFlag { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Collision.CollisionFlag.html">CollisionFlag</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Workpieces_WorkpieceService_ConstructionDefectDisplayee_" data-uid="Hi.NcMech.Workpieces.WorkpieceService.ConstructionDefectDisplayee*"></a>
<h3 id="Hi_NcMech_Workpieces_WorkpieceService_ConstructionDefectDisplayee" data-uid="Hi.NcMech.Workpieces.WorkpieceService.ConstructionDefectDisplayee">
File diff suppressed because it is too large Load Diff
@@ -1,647 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class CodeXyzabcMachineToolUri | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class CodeXyzabcMachineToolUri | HiAPI-C# 2025 ">
<meta name="description" content="Represents a URI-based container for CodeXyzabcMachineTool.">
<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.NcMech.Xyzabc.CodeXyzabcMachineToolUri">
<h1 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri" class="text-break">
Class CodeXyzabcMachineToolUri
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.NcMech.html">NcMech</a>.<a class="xref" href="Hi.NcMech.Xyzabc.html">Xyzabc</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents a URI-based container for CodeXyzabcMachineTool.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class CodeXyzabcMachineToolUri : IGetCodeXyzabcMachineTool, IMakeXmlSource, IUriGetter</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">CodeXyzabcMachineToolUri</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html">IGetCodeXyzabcMachineTool</a></div>
<div><a class="xref" href="Hi.Common.XmlUtils.IMakeXmlSource.html">IMakeXmlSource</a></div>
<div><a class="xref" href="Hi.Common.IUriGetter.html">IUriGetter</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 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri__ctor_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.#ctor*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri__ctor_System_String_Hi_NcMech_Xyzabc_CodeXyzabcMachineTool_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.#ctor(System.String,Hi.NcMech.Xyzabc.CodeXyzabcMachineTool)">
CodeXyzabcMachineToolUri(string, CodeXyzabcMachineTool)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html">CodeXyzabcMachineToolUri</a> class.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CodeXyzabcMachineToolUri(string uri, CodeXyzabcMachineTool data)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>uri</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>URI location.</p>
</dd>
<dt><code>data</code> <a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a></dt>
<dd><p>Machine tool data.</p>
</dd>
</dl>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri__ctor_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.#ctor*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Object[])">
CodeXyzabcMachineToolUri(XElement, string, IProgress&lt;IMessage&gt;, object[])
</h3>
<div class="markdown level1 summary"><p>Ctor.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CodeXyzabcMachineToolUri(XElement src, string baseDirectory, IProgress&lt;IMessage&gt; progress, object[] res)</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 source.</p>
</dd>
<dt><code>baseDirectory</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Base directory.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter passed to <a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html#Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_LoadFromUri_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___">LoadFromUri(string, IProgress&lt;IMessage&gt;, object[])</a>.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd><p>Additional resources.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_IsEncrypted_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.IsEncrypted*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_IsEncrypted" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.IsEncrypted">
IsEncrypted
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether the content is encrypted.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsEncrypted { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</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_NcMech_Xyzabc_CodeXyzabcMachineToolUri_MachineTool_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.MachineTool*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_MachineTool" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.MachineTool">
MachineTool
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machine tool.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CodeXyzabcMachineTool MachineTool { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_Uri_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.Uri*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_Uri" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.Uri">
Uri
</h3>
<div class="markdown level1 summary"><p>Gets the URI string.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Uri { 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_NcMech_Xyzabc_CodeXyzabcMachineToolUri_XName_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.XName*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_XName" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.XName">
XName
</h3>
<div class="markdown level1 summary"><p>Name for XML IO.</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_NcMech_Xyzabc_CodeXyzabcMachineToolUri_GetMachiningChain_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.GetMachiningChain*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_GetMachiningChain" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.GetMachiningChain">
GetMachiningChain()
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IMachiningChain GetMachiningChain()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.IMachiningChain.html">IMachiningChain</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_GetXyzabcMachineTool_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.GetXyzabcMachineTool*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_GetXyzabcMachineTool" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.GetXyzabcMachineTool">
GetXyzabcMachineTool()
</h3>
<div class="markdown level1 summary"><p>Get <a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CodeXyzabcMachineTool GetXyzabcMachineTool()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a></dt>
<dd><p>Machine tool.</p>
</dd>
</dl>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_LoadFromUri_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.LoadFromUri*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_LoadFromUri_System_String_System_IProgress_Hi_Common_Messages_IMessage__System_Object___" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.LoadFromUri(System.String,System.IProgress{Hi.Common.Messages.IMessage},System.Object[])">
LoadFromUri(string, IProgress&lt;IMessage&gt;, object[])
</h3>
<div class="markdown level1 summary"><p>Loads the machine tool data from the URI.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void LoadFromUri(string baseDirectory, IProgress&lt;IMessage&gt; progress, object[] res)</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>Base directory.</p>
</dd>
<dt><code>progress</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress</a>&lt;<a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd><p>Progress reporter for nested XML / factory loading.</p>
</dd>
<dt><code>res</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>[]</dt>
<dd><p>Additional resources.</p>
</dd>
</dl>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_MakeXmlSource_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.MakeXmlSource*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.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_NcMech_Xyzabc_CodeXyzabcMachineToolUri_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_NcMech_Xyzabc_CodeXyzabcMachineToolUri_Reg_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.Reg*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.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>
and chains <code>Reg(factory)</code> on dependents. 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>
<a id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_SaveToUri_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.SaveToUri*"></a>
<h3 id="Hi_NcMech_Xyzabc_CodeXyzabcMachineToolUri_SaveToUri_System_String_" data-uid="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.SaveToUri(System.String)">
SaveToUri(string)
</h3>
<div class="markdown level1 summary"><p>Saves the machine tool data to the URI.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SaveToUri(string baseDirectory)</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>Base directory.</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>
@@ -208,6 +208,12 @@ Class GeneralXyzabcMachineTool
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_GetTransformationMat4d_Hi_Numerical_Xyzabc_IXyzabcChain_">XyzabcUtil.GetTransformationMat4d(IXyzabcChain)</a>
</div>
<div>
<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_">XyzabcUtil.RequireEndAnchor(IXyzabcChain, IGetAnchor, string, string)</a>
</div>
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchors_Hi_Numerical_Xyzabc_IXyzabcChain_">XyzabcUtil.RequireEndAnchors(IXyzabcChain)</a>
</div>
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_DVec3d_">XyzabcUtil.SetMc(IXyzabcChain, DVec3d)</a>
</div>
@@ -278,6 +284,76 @@ Class GeneralXyzabcMachineTool
<a id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor*"></a>
<h3 id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_System_String_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor(System.String)">
GeneralXyzabcMachineTool(string)
</h3>
<div class="markdown level1 summary"><p>Builds a machine tool from a compact <a class="xref" href="Hi.Numerical.Xyzabc.CodeXyzabcChain.html">CodeXyzabcChain</a> axis string.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public GeneralXyzabcMachineTool(string chainCode = &quot;[O][Z][C][w];[O][Y][X][B][S][t]&quot;)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>chainCode</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Bracket connectivity string consumed by <a class="xref" href="Hi.Numerical.Xyzabc.CodeXyzabcChain.html">CodeXyzabcChain</a> (defaults to a common 5-axis layout).</p>
</dd>
</dl>
<a id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor*"></a>
<h3 id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_System_String_System_Boolean_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor(System.String,System.Boolean)">
GeneralXyzabcMachineTool(string, bool)
</h3>
<div class="markdown level1 summary"><p>Legacy overload keeping the retired vertical/horizontal flag working.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[Obsolete(&quot;IsVertical is a legacy orientation shim. Author the ground rotation in the GeneralMechanism instead.&quot;)]
public GeneralXyzabcMachineTool(string chainCode, bool isVertical)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>chainCode</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Bracket connectivity string consumed by <a class="xref" href="Hi.Numerical.Xyzabc.CodeXyzabcChain.html">CodeXyzabcChain</a>.</p>
</dd>
<dt><code>isVertical</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>Legacy orientation flag; <code>false</code> lays the machine down.</p>
</dd>
</dl>
<a id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor*"></a>
<h3 id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool__ctor_System_Xml_Linq_XElement_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.#ctor(System.Xml.Linq.XElement,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
@@ -749,6 +825,33 @@ This function is usually used to compute the bounding box of elements.</p>
<a id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool_GenerateCollisionIndexPairs_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.GenerateCollisionIndexPairs*"></a>
<h3 id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool_GenerateCollisionIndexPairs" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.GenerateCollisionIndexPairs">
GenerateCollisionIndexPairs()
</h3>
<div class="markdown level1 summary"><p>Regenerates <a class="xref" href="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html#Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool_CollisionIndexPairs">CollisionIndexPairs</a> from the chain topology.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void GenerateCollisionIndexPairs()</code></pre>
</div>
<a id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool_GetAnchor_" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.GetAnchor*"></a>
<h3 id="Hi_NcMech_Xyzabc_GeneralXyzabcMachineTool_GetAnchor" data-uid="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.GetAnchor">
@@ -233,6 +233,12 @@ Interface IXyzabcMachineTool
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_GetTransformationMat4d_Hi_Numerical_Xyzabc_IXyzabcChain_">XyzabcUtil.GetTransformationMat4d(IXyzabcChain)</a>
</div>
<div>
<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_">XyzabcUtil.RequireEndAnchor(IXyzabcChain, IGetAnchor, string, string)</a>
</div>
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_RequireEndAnchors_Hi_Numerical_Xyzabc_IXyzabcChain_">XyzabcUtil.RequireEndAnchors(IXyzabcChain)</a>
</div>
<div>
<a class="xref" href="Hi.Numerical.Xyzabc.XyzabcUtil.html#Hi_Numerical_Xyzabc_XyzabcUtil_SetMc_Hi_Numerical_Xyzabc_IXyzabcChain_Hi_Geom_DVec3d_">XyzabcUtil.SetMc(IXyzabcChain, DVec3d)</a>
</div>
@@ -94,17 +94,6 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineTool.html">CodeXyzabcMachineTool</a></dt>
<dd><p>This machine tool class helps very quick test by the code configuration.
For general/end-user use, apply <a class="xref" href="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html">GeneralXyzabcMachineTool</a> instead.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.CodeXyzabcMachineToolUri.html">CodeXyzabcMachineToolUri</a></dt>
<dd><p>Represents a URI-based container for CodeXyzabcMachineTool.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.GeneralXyzabcMachineTool.html">GeneralXyzabcMachineTool</a></dt>
<dd><p>General implementation of an XYZABC machine tool.</p>
@@ -113,11 +102,6 @@ For general/end-user use, apply <a class="xref" href="Hi.NcMech.Xyzabc.GeneralXy
<h3 id="interfaces">
Interfaces
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html">IGetCodeXyzabcMachineTool</a></dt>
<dd><p>Interface of <a class="xref" href="Hi.NcMech.Xyzabc.IGetCodeXyzabcMachineTool.html#Hi_NcMech_Xyzabc_IGetCodeXyzabcMachineTool_GetXyzabcMachineTool">GetXyzabcMachineTool()</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcMech.Xyzabc.IXyzabcMachineTool.html">IXyzabcMachineTool</a></dt>
<dd><p>Interface for XYZABC machine tools that combines chain, display, collision and other functionalities.</p>
@@ -1064,6 +1064,52 @@ The feedrate setting takes priority.</p>
<a id="Hi_NcOpt_NcOptOption_OmitLeadingZero_" data-uid="Hi.NcOpt.NcOptOption.OmitLeadingZero*"></a>
<h3 id="Hi_NcOpt_NcOptOption_OmitLeadingZero" data-uid="Hi.NcOpt.NcOptOption.OmitLeadingZero">
OmitLeadingZero
</h3>
<div class="markdown level1 summary"><p>Spells a rewritten value below one as <code>.348</code> instead of the
default <code>0.348</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool OmitLeadingZero { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_NcOpt_NcOptOption_OmitLeadingZero_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>A text-diff concern, not a numeric one: an external post that compares
the optimized program against its source as text reports a change on
every word below one when the two spell it differently, even though
the value is identical. It lives on the project's option rather than on
a machine-level preference so the same <code>.hincproj</code> produces the
same bytes on every machine — a reproducibility property worth more
than per-site convenience when a diff has to be traced. Applied to
<span class="xref">Hi.NcParsers.NcWriteback.NcPatchUtil.OmitLeadingZero</span> on
every output pass from the option in force at the first step; the
default keeps the frozen HardNc convention the Soft-vs-Hard byte parity
gates assume.</p>
</div>
<a id="Hi_NcOpt_NcOptOption_PreferedForce_N_" data-uid="Hi.NcOpt.NcOptOption.PreferedForce_N*"></a>
<h3 id="Hi_NcOpt_NcOptOption_PreferedForce_N" data-uid="Hi.NcOpt.NcOptOption.PreferedForce_N">
@@ -292,7 +292,8 @@ hardware-faithful alternatives that map to real controller parameters.
</h3>
<div class="markdown level1 summary"><p>Ctor.</p>
<div class="markdown level1 summary"><p>Creates the brand-neutral table seeded with every id of
<a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G54Series">G54Series</a> (G54G59 and G59.1G59.9) at zero.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -312,6 +313,41 @@ hardware-faithful alternatives that map to real controller parameters.
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable__ctor_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.#ctor*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable__ctor_System_Collections_Generic_IEnumerable_System_String__" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.#ctor(System.Collections.Generic.IEnumerable{System.String})">
IsoCoordinateTable(IEnumerable&lt;string&gt;)
</h3>
<div class="markdown level1 summary"><p>Creates a table seeded with <code class="paramref">seedIds</code> at zero — the
shape a runner wants this provider to carry next to a brand table
(see <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_ExtendedG59x">ExtendedG59x</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTable(IEnumerable&lt;string&gt; seedIds)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>seedIds</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ienumerable-1">IEnumerable</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>Coordinate ids to seed; null seeds nothing.</p>
</dd>
</dl>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable__ctor_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.#ctor*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable__ctor_System_Xml_Linq_XElement_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.#ctor(System.Xml.Linq.XElement)">
@@ -417,10 +453,82 @@ Supports both new string ID format (&ldquo;G54&rdquo;) and legacy integer format
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_ExtendedG59x_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.ExtendedG59x*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_ExtendedG59x" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.ExtendedG59x">
ExtendedG59x
</h3>
<div class="markdown level1 summary"><p>A table carrying only the extended <a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G59xSeries">G59xSeries</a>
(G59.1G59.9) — the rows the Fanuc-family parameter tables do not
map. The Fanuc, Mazak and Syntec presets mount one behind their brand
table through <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html">IsoCoordinateTableProxy</a>, so the two
providers' id sets are disjoint and
<code>CoordinateOffsetUtil.ResolveOffset</code>'s first-non-null walk never
has to choose between them.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static IsoCoordinateTable ExtendedG59x { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_DeepClone_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.DeepClone*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_DeepClone" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.DeepClone">
DeepClone()
</h3>
<div class="markdown level1 summary"><p>Returns an independent copy (entries and their offset vectors). Used
by <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html">IsoCoordinateTableProxy</a> to clone its seed into a host
that has no table yet.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTable DeepClone()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_GetCoordinateOffset_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.GetCoordinateOffset*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_GetCoordinateOffset_System_String_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.GetCoordinateOffset(System.String)">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class IsoCoordinateTableProxy | HiAPI-C# 2025 ">
<meta name="description" content="Get-or-create for : a placeholder in the shared that resolves the host project&#39;s own per-case work coordinate offsets (G54G59…).">
<meta name="description" content="Get-or-create for : a placeholder in the shared that resolves the host project&#39;s own per-case work coordinate offsets (G54G59…). The proxy may carry a — the shape (which ids exist, all zero) a fresh host table is cloned from. The Fanuc, Mazak and Syntec presets mount this proxy behind their brand parameter table with the seed, so the brand table keeps G54G59 and G54.1 P1P48 while this table carries only the extended G59.1G59.9 the brand tables cannot map. Without a seed the fresh table is the full brand-neutral set (the shape every pre-seed &amp;lt;IsoCoordinateTableProxy/&amp;gt; element materialized).">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -100,6 +100,16 @@ Class IsoCoordinateTableProxy
<div class="markdown summary"><p>Get-or-create <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> for <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>:
a placeholder in the shared <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> that
resolves the host project's own per-case work coordinate offsets (G54G59…).</p>
<p>
The proxy may carry a <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed">Seed</a> — the shape (which ids exist,
all zero) a fresh host table is cloned from. The Fanuc, Mazak and Syntec
presets mount this proxy behind their brand parameter table with the
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_ExtendedG59x">ExtendedG59x</a> seed, so the brand table
keeps G54G59 and G54.1 P1P48 while this table carries only the extended
G59.1G59.9 the brand tables cannot map. Without a seed the fresh table is
the full brand-neutral set (the shape every pre-seed <code>&lt;IsoCoordinateTableProxy/&gt;</code>
element materialized).
</p>
</div>
<div class="markdown conceptual"></div>
@@ -181,10 +191,110 @@ resolves the host project's own per-case work coordinate offsets (G54G59…).
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy__ctor_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.#ctor*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy__ctor" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.#ctor">
IsoCoordinateTableProxy()
</h3>
<div class="markdown level1 summary"><p>Creates a proxy whose fresh host table is the full brand-neutral default.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTableProxy()</code></pre>
</div>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy__ctor_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.#ctor*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy__ctor_Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.#ctor(Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable)">
IsoCoordinateTableProxy(IsoCoordinateTable)
</h3>
<div class="markdown level1 summary"><p>Creates a proxy whose fresh host table is cloned from
<code class="paramref">seed</code> (<code>null</code> for the full brand-neutral default).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTableProxy(IsoCoordinateTable seed)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>seed</code> <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a></dt>
<dd><p>The shape a fresh host table is cloned from.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.Seed*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.Seed">
Seed
</h3>
<div class="markdown level1 summary"><p>The shape a fresh host table is deep-cloned from — its ids at zero —
or <code>null</code> for the full brand-neutral default. Carried on the
shared runner and serialized into the runner file; never the per-case
instance, which lives on the host (see <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_GetNcDependency">GetNcDependency()</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTable Seed { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a></dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_XName_" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.XName*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_XName" data-uid="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.XName">
@@ -262,9 +372,11 @@ resolves the host project's own per-case work coordinate offsets (G54G59…).
</h3>
<div class="markdown level1 summary"><p>Wires the host and materializes the per-case <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>:
when the host list has none, one is created and installed so it exists and
is editable before any run. <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_GetNcDependency">GetNcDependency()</a> is then a pure
take. Idempotent — an existing table is left untouched.</p>
when the host list has none, one is created (a clone of
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed">Seed</a>, else the full default) and installed so it exists
and is editable before any run. <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_GetNcDependency">GetNcDependency()</a> is then a
pure take. Idempotent — an existing table is left untouched, whatever
its shape.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -296,8 +408,9 @@ take. Idempotent — an existing table is left untouched.</p>
</h3>
<div class="markdown level1 summary"><p>Runtime-only proxy — the wired host and the resolved table are not
persisted in the shared runner; serialization writes only the empty element.</p>
<div class="markdown level1 summary"><p>Serializes only the <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed">Seed</a> (an empty element when there is
none) — the wired host and the resolved table are runtime-only and not
persisted in the shared runner.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -340,7 +453,8 @@ persisted in the shared runner; serialization writes only the empty element.</p>
<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>
<code>null</code>). Rehydrates the carried <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed">Seed</a> from the nested
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a> element when present. Idempotent.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -329,7 +329,9 @@ Key = offset number (Fanuc H or D number).</p>
</h3>
<div class="markdown level1 summary"><p>Gets the effective tool height offset (geometry - wear) in mm.
Returns 0 if the offset number is not configured.</p>
Returns 0 if the offset number is not configured — indistinguishable
from a configured zero; a consumer that must warn on a vacant row
uses <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_System_Int32_System_Double__">TryGetToolHeightOffset_mm(int, out double)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -368,7 +370,9 @@ Returns 0 if the offset number is not configured.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the effective tool radius offset (geometry - wear) in mm.
Returns 0 if the offset number is not configured.</p>
Returns 0 if the offset number is not configured — indistinguishable
from a configured zero; a consumer that must warn on a vacant row
uses <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolRadiusOffset_mm_System_Int32_System_Double__">TryGetToolRadiusOffset_mm(int, out double)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -524,6 +528,95 @@ Since the folder can be moving with the configuration file.</p>
<a id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_TryGetToolHeightOffset_mm_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.TryGetToolHeightOffset_mm*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_TryGetToolHeightOffset_mm_System_Int32_System_Double__" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.TryGetToolHeightOffset_mm(System.Int32,System.Double@)">
TryGetToolHeightOffset_mm(int, out double)
</h3>
<div class="markdown level1 summary"><p>Attempts to get the effective tool height offset (geometry - wear)
in mm. Returns <code>false</code> when <code class="paramref">offsetNumber</code> has
no configured row — the only reliable miss signal, since 0 is a
legal configured offset. The compensation syntaxes warn on a miss
(<code>Comp-ToolHeight&ndash;RowMissing</code>) instead of silently machining
with a zero-length tool.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool TryGetToolHeightOffset_mm(int offsetNumber, out double height_mm)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>offsetNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Offset number: Fanuc H number, Heidenhain tool number, etc.</p>
</dd>
<dt><code>height_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The effective height offset; 0 on miss.</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_Generic_ToolOffsetTable_TryGetToolRadiusOffset_mm_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.TryGetToolRadiusOffset_mm*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_TryGetToolRadiusOffset_mm_System_Int32_System_Double__" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.TryGetToolRadiusOffset_mm(System.Int32,System.Double@)">
TryGetToolRadiusOffset_mm(int, out double)
</h3>
<div class="markdown level1 summary"><p>Attempts to get the effective tool radius offset (geometry - wear)
in mm. Returns <code>false</code> when <code class="paramref">offsetNumber</code> has
no configured row (see <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_System_Int32_System_Double__">TryGetToolHeightOffset_mm(int, out double)</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool TryGetToolRadiusOffset_mm(int offsetNumber, out double radius_mm)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>offsetNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Offset number: Fanuc D number, Heidenhain tool number, etc.</p>
</dd>
<dt><code>radius_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The effective radius offset; 0 on miss.</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_Generic_ToolOffsetTable_UpdateIdealByToolHouse_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.UpdateIdealByToolHouse*"></a>
<h3 id="Hi_NcParsers_Dependencys_Generic_ToolOffsetTable_UpdateIdealByToolHouse_Hi_Machining_MachiningToolHouse_" data-uid="Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.UpdateIdealByToolHouse(Hi.Machining.MachiningToolHouse)">
@@ -144,6 +144,16 @@ hardware-faithful alternatives that map to real controller parameters.
<dd><p>Get-or-create <a class="xref" href="Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> for <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>:
a placeholder in the shared <a class="xref" href="Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> that
resolves the host project's own per-case work coordinate offsets (G54G59…).</p>
<p>
The proxy may carry a <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTableProxy.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTableProxy_Seed">Seed</a> — the shape (which ids exist,
all zero) a fresh host table is cloned from. The Fanuc, Mazak and Syntec
presets mount this proxy behind their brand parameter table with the
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html#Hi_NcParsers_Dependencys_Generic_IsoCoordinateTable_ExtendedG59x">ExtendedG59x</a> seed, so the brand table
keeps G54G59 and G54.1 P1P48 while this table carries only the extended
G59.1G59.9 the brand tables cannot map. Without a seed the fresh table is
the full brand-neutral set (the shape every pre-seed <code>&lt;IsoCoordinateTableProxy/&gt;</code>
element materialized).
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -161,7 +161,9 @@ For Siemens (840D/Sinumerik) where offsets are addressed by
</h3>
<div class="markdown level1 summary"><p>Gets the effective tool height offset (geometry - wear) in mm.
Returns 0 if the offset number is not configured.</p>
Returns 0 if the offset number is not configured — indistinguishable
from a configured zero; a consumer that must warn on a vacant row
uses <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_System_Int32_System_Double__">TryGetToolHeightOffset_mm(int, out double)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -200,7 +202,9 @@ Returns 0 if the offset number is not configured.</p>
</h3>
<div class="markdown level1 summary"><p>Gets the effective tool radius offset (geometry - wear) in mm.
Returns 0 if the offset number is not configured.</p>
Returns 0 if the offset number is not configured — indistinguishable
from a configured zero; a consumer that must warn on a vacant row
uses <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolRadiusOffset_mm_System_Int32_System_Double__">TryGetToolRadiusOffset_mm(int, out double)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -271,6 +275,95 @@ Returns 0 if the offset number is not configured.</p>
<a id="Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_" data-uid="Hi.NcParsers.Dependencys.IToolOffsetConfig.TryGetToolHeightOffset_mm*"></a>
<h3 id="Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_System_Int32_System_Double__" data-uid="Hi.NcParsers.Dependencys.IToolOffsetConfig.TryGetToolHeightOffset_mm(System.Int32,System.Double@)">
TryGetToolHeightOffset_mm(int, out double)
</h3>
<div class="markdown level1 summary"><p>Attempts to get the effective tool height offset (geometry - wear)
in mm. Returns <code>false</code> when <code class="paramref">offsetNumber</code> has
no configured row — the only reliable miss signal, since 0 is a
legal configured offset. The compensation syntaxes warn on a miss
(<code>Comp-ToolHeight&ndash;RowMissing</code>) instead of silently machining
with a zero-length tool.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool TryGetToolHeightOffset_mm(int offsetNumber, out double height_mm)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>offsetNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Offset number: Fanuc H number, Heidenhain tool number, etc.</p>
</dd>
<dt><code>height_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The effective height offset; 0 on miss.</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_IToolOffsetConfig_TryGetToolRadiusOffset_mm_" data-uid="Hi.NcParsers.Dependencys.IToolOffsetConfig.TryGetToolRadiusOffset_mm*"></a>
<h3 id="Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolRadiusOffset_mm_System_Int32_System_Double__" data-uid="Hi.NcParsers.Dependencys.IToolOffsetConfig.TryGetToolRadiusOffset_mm(System.Int32,System.Double@)">
TryGetToolRadiusOffset_mm(int, out double)
</h3>
<div class="markdown level1 summary"><p>Attempts to get the effective tool radius offset (geometry - wear)
in mm. Returns <code>false</code> when <code class="paramref">offsetNumber</code> has
no configured row (see <a class="xref" href="Hi.NcParsers.Dependencys.IToolOffsetConfig.html#Hi_NcParsers_Dependencys_IToolOffsetConfig_TryGetToolHeightOffset_mm_System_Int32_System_Double__">TryGetToolHeightOffset_mm(int, out double)</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool TryGetToolRadiusOffset_mm(int offsetNumber, out double radius_mm)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>offsetNumber</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>Offset number: Fanuc D number, Heidenhain tool number, etc.</p>
</dd>
<dt><code>radius_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The effective radius offset; 0 on miss.</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>
@@ -190,6 +190,39 @@ Shared between <a class="xref" href="Hi.NcParsers.Dependencys.Fanuc.FanucParamet
<h3 id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_G54p1CoordinateIdPrefix" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.G54p1CoordinateIdPrefix">
G54p1CoordinateIdPrefix
</h3>
<div class="markdown level1 summary"><p>Coordinate-id prefix of the additional (G54.1 P) work coordinate
systems: the id is this prefix followed by the un-padded P index, e.g.
<code>&ldquo;G54.1P4&rdquo;</code> — the G-code spelling without its embedded space.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string G54p1CoordinateIdPrefix = &quot;G54.1P&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_Dependencys_IsoCoordinateAddressMap_G54p1P1Base" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.G54p1P1Base">
G54p1P1Base
@@ -396,6 +429,46 @@ at least one axis entry present in <code class="paramref">systemParams</code>.</
<a id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_G54p1CoordinateId_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.G54p1CoordinateId*"></a>
<h3 id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_G54p1CoordinateId_System_Int32_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.G54p1CoordinateId(System.Int32)">
G54p1CoordinateId(int)
</h3>
<div class="markdown level1 summary"><p>Composes the coordinate id of additional work coordinate system
<code class="paramref">p</code> (<code>&ldquo;G54.1P4&rdquo;</code> for P4). Inverse of
<a class="xref" href="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html#Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_TryParseG54p1Index_System_String_System_Int32__">TryParseG54p1Index(string, out int)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static string G54p1CoordinateId(int p)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>p</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>P index as written in the program (1-based).</p>
</dd>
</dl>
<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></dd>
</dl>
<a id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_Read_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.Read*"></a>
<h3 id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_Read_System_Collections_Generic_IDictionary_System_Int32_System_Double__System_Int32_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.Read(System.Collections.Generic.IDictionary{System.Int32,System.Double},System.Int32)">
@@ -473,6 +546,52 @@ for these addresses, so the model matches hardware.</p>
<a id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_TryParseG54p1Index_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.TryParseG54p1Index*"></a>
<h3 id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_TryParseG54p1Index_System_String_System_Int32__" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.TryParseG54p1Index(System.String,System.Int32@)">
TryParseG54p1Index(string, out int)
</h3>
<div class="markdown level1 summary"><p>Reads the P index back out of an additional work coordinate id
(<code>&ldquo;G54.1P4&rdquo;</code> → 4). Any integer is accepted — range checking
against the table (1..<a class="xref" href="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html#Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_G54p1PCount">G54p1PCount</a>) is
<a class="xref" href="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html#Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_TryResolveBase_System_String_">TryResolveBase(string)</a>'s job — so a caller can tell &ldquo;an
additional system whose index the table does not hold&rdquo; apart from
&ldquo;not an additional system at all&rdquo;.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool TryParseG54p1Index(string coordId, out int p)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>coordId</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Coordinate id to inspect.</p>
</dd>
<dt><code>p</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The parsed index on success.</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_IsoCoordinateAddressMap_TryResolveBase_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.TryResolveBase*"></a>
<h3 id="Hi_NcParsers_Dependencys_IsoCoordinateAddressMap_TryResolveBase_System_String_" data-uid="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.TryResolveBase(System.String)">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ProgramXyzBackfillSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Debug / observability back-fill: writes onto blocks that did not have it written by upstream logic syntaxes (e.g. block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the last block that stored a . Skips the block entirely when either of these holds: The block already has written — e.g. by , , , , , or .The effective value equals the last stored value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; items are intentionally skipped (they are managed by and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of , after . Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output ( stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier.">
<meta name="description" content="Debug / observability back-fill: writes onto blocks that did not have it written by upstream logic syntaxes (e.g. block, chain-change blocks that only updated MC via a rotary-only path), only when the effective program position has changed from the previous block&#39;s effective value (which, blocks being skipped only on equality, is also the last stored ). Skips the block entirely when either of these holds: The block already has written — e.g. by , , , , , or .The effective value equals the predecessor&#39;s effective value (modal-only block such as pure F / S / M / plane-select — no program motion). Only back-fills the root block; items are intentionally skipped (they are managed by and per-cycle syntaxes that already write the right per-item ProgramXyz). Placement: end of , after . Runs purely as a bookkeeping pass — no other syntax / semantic in the default pipeline reads the additional back-fill values it emits, so the runtime output ( stream) is unchanged whether this syntax is present or not. The only observable effect is additional ProgramXyz entries in the cached syntax-pieces dump, which makes block-to-block debugging and diffing easier.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -102,7 +102,8 @@ Class ProgramXyzBackfillSyntax
written by upstream logic syntaxes (e.g. <a class="xref" href="Hi.NcParsers.Initializers.HomeMcInitializer.html">HomeMcInitializer</a>
block, chain-change blocks that only updated MC via a rotary-only path),
<b>only when</b> the effective program position has changed from the
last block that stored a <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>.</p>
previous block's effective value (which, blocks being skipped only on
equality, is also the last stored <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>).</p>
<p>
Skips the block entirely when either of these holds:
<ul><li>The block already has <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>
@@ -111,8 +112,9 @@ Skips the block entirely when either of these holds:
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html">ReferenceReturnSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html">McAbcXyzFallbackSyntax</a>, or
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.</li><li>The effective value equals the last stored value (modal-only
block such as pure F / S / M / plane-select — no program motion).</li></ul>
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.</li><li>The effective value equals the predecessor's effective value
(modal-only block such as pure F / S / M / plane-select — no
program motion).</li></ul>
<p>
Only back-fills the root block; <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a>
@@ -113,7 +113,8 @@ Place at the end of the syntax list, after all consumers have read the keys.
written by upstream logic syntaxes (e.g. <a class="xref" href="Hi.NcParsers.Initializers.HomeMcInitializer.html">HomeMcInitializer</a>
block, chain-change blocks that only updated MC via a rotary-only path),
<b>only when</b> the effective program position has changed from the
last block that stored a <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>.</p>
previous block's effective value (which, blocks being skipped only on
equality, is also the last stored <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>).</p>
<p>
Skips the block entirely when either of these holds:
<ul><li>The block already has <a class="xref" href="Hi.NcParsers.Keywords.IProgramXyzDef.html#Hi_NcParsers_Keywords_IProgramXyzDef_ProgramXyz">ProgramXyz</a>
@@ -122,8 +123,9 @@ Skips the block entirely when either of these holds:
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.ReferenceReturnSyntax.html">ReferenceReturnSyntax</a>,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcXyzFallbackSyntax.html">McAbcXyzFallbackSyntax</a>, or
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.</li><li>The effective value equals the last stored value (modal-only
block such as pure F / S / M / plane-select — no program motion).</li></ul>
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.RadiusCompensationSyntax.html">RadiusCompensationSyntax</a>.</li><li>The effective value equals the predecessor's effective value
(modal-only block such as pure F / S / M / plane-select — no
program motion).</li></ul>
<p>
Only back-fills the root block; <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html#Hi_NcParsers_Keywords_CompoundMotion_ItemsKey">ItemsKey</a>
@@ -253,6 +253,43 @@ Fanuc-specific. Siemens equivalent: TRAORI. Heidenhain equivalent: M128.</p>
<h3 id="Hi_NcParsers_Keywords_Fanuc_FanucKeywords_G54p1" data-uid="Hi.NcParsers.Keywords.Fanuc.FanucKeywords.G54p1">
G54p1
</h3>
<div class="markdown level1 summary"><p>G54.1: additional workpiece coordinate system selection, always with
a <code>P</code> index (<code>G54.1 P1</code><code>P48</code>, <code>P300</code> with the
option). Fanuc's manual titles the chapter &ldquo;G54.1 or G54&rdquo;: the
<code>G54 Pn</code> spelling is the same command, and the parsing capture
(<a class="xref" href="Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html#Hi_NcParsers_Syntaxs_FanucSyntaxUtil_G54p1Syntax">G54p1Syntax</a>) stores both
spellings under this key. Also read by the Syntec and Mazak presets.
Consumed by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html">IsoCoordinateOffsetSyntax</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string G54p1 = &quot;G54.1&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>
</article>
<div class="contribution d-print-none">
@@ -2,11 +2,11 @@
<html>
<head>
<meta charset="utf-8">
<title>Interface IPolarResolution2dSourceProperty | HiAPI-C# 2025 </title>
<title>Class FanucHpcc | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IPolarResolution2dSourceProperty | HiAPI-C# 2025 ">
<meta name="title" content="Class FanucHpcc | HiAPI-C# 2025 ">
<meta name="description" content="Provides a property for the source of polar resolution.">
<meta name="description" content="Section data holder for .">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -84,33 +84,71 @@
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Geom.Resolution.IPolarResolution2dSourceProperty">
<article data-uid="Hi.NcParsers.Keywords.FanucHpcc">
<h1 id="Hi_Geom_Resolution_IPolarResolution2dSourceProperty" data-uid="Hi.Geom.Resolution.IPolarResolution2dSourceProperty" class="text-break">
Interface IPolarResolution2dSourceProperty
<h1 id="Hi_NcParsers_Keywords_FanucHpcc" data-uid="Hi.NcParsers.Keywords.FanucHpcc" class="text-break">
Class FanucHpcc
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a>.<a class="xref" href="Hi.Geom.Resolution.html">Resolution</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
<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.Keywords.html">Keywords</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Provides a property for the source of polar resolution.</p>
<div class="markdown summary"><p>Section data holder for <a class="xref" href="Hi.NcParsers.Keywords.IFanucHpccDef.html">IFanucHpccDef</a>.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IPolarResolution2dSourceProperty</code></pre>
<pre><code class="lang-csharp hljs">public class FanucHpcc : IFanucHpccDef</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">FanucHpcc</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.NcParsers.Keywords.IFanucHpccDef.html">IFanucHpccDef</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>
@@ -146,19 +184,21 @@ Interface IPolarResolution2dSourceProperty
</h2>
<a id="Hi_Geom_Resolution_IPolarResolution2dSourceProperty_PolarResolution2dSource_" data-uid="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.PolarResolution2dSource*"></a>
<a id="Hi_NcParsers_Keywords_FanucHpcc_FunctionCode_" data-uid="Hi.NcParsers.Keywords.FanucHpcc.FunctionCode*"></a>
<h3 id="Hi_Geom_Resolution_IPolarResolution2dSourceProperty_PolarResolution2dSource" data-uid="Hi.Geom.Resolution.IPolarResolution2dSourceProperty.PolarResolution2dSource">
PolarResolution2dSource
<h3 id="Hi_NcParsers_Keywords_FanucHpcc_FunctionCode" data-uid="Hi.NcParsers.Keywords.FanucHpcc.FunctionCode">
FunctionCode
</h3>
<div class="markdown level1 summary"><p>The provider of <a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>.</p>
<div class="markdown level1 summary"><p>Raw P function-selection value, preserved for NC-text write-back;
<code>null</code> when the source block carried no P word or the P value
was an unevaluated variable/expression.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">Func&lt;IPolarResolution2d&gt; PolarResolution2dSource { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">public int? FunctionCode { get; set; }</code></pre>
</div>
@@ -167,7 +207,71 @@ Interface IPolarResolution2dSourceProperty
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-1">Func</a>&lt;<a class="xref" href="Hi.Geom.Resolution.IPolarResolution2d.html">IPolarResolution2d</a>&gt;</dt>
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>?</dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Keywords_FanucHpcc_IsEnabled_" data-uid="Hi.NcParsers.Keywords.FanucHpcc.IsEnabled*"></a>
<h3 id="Hi_NcParsers_Keywords_FanucHpcc_IsEnabled" data-uid="Hi.NcParsers.Keywords.FanucHpcc.IsEnabled">
IsEnabled
</h3>
<div class="markdown level1 summary"><p>True only for <code>P10000</code> (HPCC entered); false for the cancel (<code>P0</code>) and the non-HPCC functions.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsEnabled { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</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_Keywords_FanucHpcc_Term_" data-uid="Hi.NcParsers.Keywords.FanucHpcc.Term*"></a>
<h3 id="Hi_NcParsers_Keywords_FanucHpcc_Term" data-uid="Hi.NcParsers.Keywords.FanucHpcc.Term">
Term
</h3>
<div class="markdown level1 summary"><p>Source spelling that carried the selection (<code>G05</code> or <code>G5</code>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string Term { get; set; }</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>
@@ -0,0 +1,258 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ArcCenterSource | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ArcCenterSource | HiAPI-C# 2025 ">
<meta name="description" content="Where an arc&#39;s center came from when it was NOT read off the arc block&#39;s own words — the values of . An arc whose block states its center (I/J/K offsets, absolute I/J/K, R) carries no stamp at all. Written by (the klartext C … DR&#177; block never carries center words); read by the NcOpt splition write-back, which must know whether the block&#39;s text has center words to rebuild per fragment and whether the center even survives a split.">
<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.Keywords.Generic.ArcCenterSource">
<h1 id="Hi_NcParsers_Keywords_Generic_ArcCenterSource" data-uid="Hi.NcParsers.Keywords.Generic.ArcCenterSource" class="text-break">
Class ArcCenterSource
</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.Keywords.html">Keywords</a>.<a class="xref" href="Hi.NcParsers.Keywords.Generic.html">Generic</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Where an arc's center came from when it was NOT read off the arc block's
own words — the values of <a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html#Hi_NcParsers_Keywords_IArcMotionDef_CenterSource">CenterSource</a>. An
arc whose block states its center (I/J/K offsets, absolute I/J/K, R)
carries no stamp at all. Written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html">HeidenhainCircularMotionSyntax</a>
(the klartext <code>C … DR±</code> block never carries center words); read by
the NcOpt splition write-back, which must know whether the block's text
has center words to rebuild per fragment and whether the center even
survives a split.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static class ArcCenterSource</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">ArcCenterSource</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="fields">Fields
</h2>
<h3 id="Hi_NcParsers_Keywords_Generic_ArcCenterSource_ModalCircleCenter" data-uid="Hi.NcParsers.Keywords.Generic.ArcCenterSource.ModalCircleCenter">
ModalCircleCenter
</h3>
<div class="markdown level1 summary"><p>The modal circle-center section a preceding klartext <code>CC</code> block
set (<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html">HeidenhainCircleCenterSyntax</a>,
absolute program coordinates). The center lives on the <code>CC</code> line,
not on the arc block, so the fragments of a split arc share it
unchanged and only their endpoint words move.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string ModalCircleCenter = &quot;ModalCircleCenter&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_Keywords_Generic_ArcCenterSource_StartPoint" data-uid="Hi.NcParsers.Keywords.Generic.ArcCenterSource.StartPoint">
StartPoint
</h3>
<div class="markdown level1 summary"><p>The arc's own start point supplied at least one in-plane center
component — the parser's degrade for a klartext arc with no
<code>CC</code> ever given, or with a <code>CC</code> that left an in-plane axis
unstated. A split cannot share such a center: on a re-parse every
fragment would fill the missing component from its own start point.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string StartPoint = &quot;StartPoint&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>
</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>
@@ -844,7 +844,8 @@ Brand-specific codes belong in their own keyword classes
</h3>
<div class="markdown level1 summary"><p>All standard work coordinate offsets: G54G59 plus extended offsets G59.1G59.9.</p>
<div class="markdown level1 summary"><p>All standard work coordinate offsets: G54G59 plus the extended
<a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G59xSeries">G59xSeries</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
@@ -1025,6 +1026,40 @@ Brand-specific codes belong in their own keyword classes
<h3 id="Hi_NcParsers_Keywords_Generic_IsoKeywords_G59xSeries" data-uid="Hi.NcParsers.Keywords.Generic.IsoKeywords.G59xSeries">
G59xSeries
</h3>
<div class="markdown level1 summary"><p>The extended work coordinate offsets G59.1G59.9 — an extension no
brand parameter table maps (Fanuc holds G54G59 at <code>#5221+</code>
and G54.1 P1P48 at <code>#7001+</code>, nothing for these), carried by a
brand-neutral <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static readonly string[] G59xSeries</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_Keywords_Generic_IsoKeywords_G68" data-uid="Hi.NcParsers.Keywords.Generic.IsoKeywords.G68">
G68
@@ -1118,6 +1153,68 @@ Brand-specific codes belong in their own keyword classes
<h3 id="Hi_NcParsers_Keywords_Generic_IsoKeywords_G70" data-uid="Hi.NcParsers.Keywords.Generic.IsoKeywords.G70">
G70
</h3>
<div class="markdown level1 summary"><p>Inch unit mode — the RS-274-D / Fanuc G-code system C / Syntec spelling of <a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G20">G20</a>. Same Group 06 modal slot and behaviour (not supported; emits an Unsupported Error). Fanuc lathe systems A/B use this code as a finishing cycle instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string G70 = &quot;G70&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_Keywords_Generic_IsoKeywords_G71" data-uid="Hi.NcParsers.Keywords.Generic.IsoKeywords.G71">
G71
</h3>
<div class="markdown level1 summary"><p>Metric unit mode — the RS-274-D / Fanuc G-code system C / Syntec spelling of <a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html#Hi_NcParsers_Keywords_Generic_IsoKeywords_G21">G21</a>. Same Group 06 modal slot. Fanuc lathe systems A/B use this code as a roughing cycle instead.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string G71 = &quot;G71&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_Keywords_Generic_IsoKeywords_G73" data-uid="Hi.NcParsers.Keywords.Generic.IsoKeywords.G73">
G73
@@ -94,6 +94,19 @@
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html">ArcCenterSource</a></dt>
<dd><p>Where an arc's center came from when it was NOT read off the arc block's
own words — the values of <a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html#Hi_NcParsers_Keywords_IArcMotionDef_CenterSource">CenterSource</a>. An
arc whose block states its center (I/J/K offsets, absolute I/J/K, R)
carries no stamp at all. Written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html">HeidenhainCircularMotionSyntax</a>
(the klartext <code>C … DR±</code> block never carries center words); read by
the NcOpt splition write-back, which must know whether the block's text
has center words to rebuild per fragment and whether the center even
survives a split.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Generic.IsoKeywords.html">IsoKeywords</a></dt>
<dd><p>ISO/RS274 standard G-code and M-code constants.
@@ -0,0 +1,313 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class HeidenhainCyclCallPos | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCyclCallPos | HiAPI-C# 2025 ">
<meta name="description" content="Block-root section carrying the coordinates last programmed with CYCL CALL POS: the reference the control uses for the I-prefixed words of a later CYCL CALL POS (its error 1A0-0108 &amp;ldquo;Incremental values without reference&amp;rdquo; names exactly these coordinates, not the tool position). Written by on the block whose POS call resolved and then single-step carried on every following block (the pattern); a later POS call overwrites the axes it programs and keeps the others, and a new CYCL DEF does not clear it. An axis that is absent here has no reference: the control refuses an increment on it, the simulation warns and falls back to the last programmed position.">
<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.Keywords.Heidenhain.HeidenhainCyclCallPos">
<h1 id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos" class="text-break">
Class HeidenhainCyclCallPos
</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.Keywords.html">Keywords</a>.<a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.html">Heidenhain</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Block-root section carrying the coordinates last programmed with
<code>CYCL CALL POS</code>: the reference the control uses for the
I-prefixed words of a later <code>CYCL CALL POS</code> (its error 1A0-0108
&ldquo;Incremental values without reference&rdquo; names exactly these
coordinates, not the tool position). Written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a> on
the block whose POS call resolved and then single-step carried on
every following block (the <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html">MachiningCycleDef</a> pattern);
a later POS call overwrites the axes it programs and keeps the
others, and a new <code>CYCL DEF</code> does not clear it. An axis that
is absent here has no reference: the control refuses an increment
on it, the simulation warns and falls back to the last programmed
position.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class HeidenhainCyclCallPos</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">HeidenhainCyclCallPos</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>
<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="properties">Properties
</h2>
<a id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_X_" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.X*"></a>
<h3 id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_X" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.X">
X
</h3>
<div class="markdown level1 summary"><p>X coordinate of the last <code>CYCL CALL POS</code>, resolved to absolute; absent until a POS call programmed X.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double? X { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>?</dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_Y_" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.Y*"></a>
<h3 id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_Y" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.Y">
Y
</h3>
<div class="markdown level1 summary"><p>Y coordinate of the last <code>CYCL CALL POS</code>, resolved to absolute; absent until a POS call programmed Y.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double? Y { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>?</dt>
<dd></dd>
</dl>
<a id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_Z_" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.Z*"></a>
<h3 id="Hi_NcParsers_Keywords_Heidenhain_HeidenhainCyclCallPos_Z" data-uid="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.Z">
Z
</h3>
<div class="markdown level1 summary"><p>Z coordinate (the pre-position) of the last <code>CYCL CALL POS</code>, resolved to absolute; absent until a POS call programmed Z.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double? Z { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</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>
@@ -108,6 +108,23 @@ Inlined callee blocks are stamped with a clone of the same record.</p>
making the consumed call visible in cache dumps and carrying the
deferred <code>M140</code> retract hand-off for
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCycleRetractSyntax.html">HeidenhainCycleRetractSyntax</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.HeidenhainCyclCallPos.html">HeidenhainCyclCallPos</a></dt>
<dd><p>Block-root section carrying the coordinates last programmed with
<code>CYCL CALL POS</code>: the reference the control uses for the
I-prefixed words of a later <code>CYCL CALL POS</code> (its error 1A0-0108
&ldquo;Incremental values without reference&rdquo; names exactly these
coordinates, not the tool position). Written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a> on
the block whose POS call resolved and then single-step carried on
every following block (the <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html">MachiningCycleDef</a> pattern);
a later POS call overwrites the axes it programs and keeps the
others, and a new <code>CYCL DEF</code> does not clear it. An axis that
is absent here has no reference: the control refuses an increment
on it, the simulation warns and falls back to the last programmed
position.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -224,6 +224,48 @@ cached on the event — same source of truth as
<a id="Hi_NcParsers_Keywords_IArcMotionDef_CenterSource_" data-uid="Hi.NcParsers.Keywords.IArcMotionDef.CenterSource*"></a>
<h3 id="Hi_NcParsers_Keywords_IArcMotionDef_CenterSource" data-uid="Hi.NcParsers.Keywords.IArcMotionDef.CenterSource">
CenterSource
</h3>
<div class="markdown level1 summary"><p>Where the center came from when it is NOT stated by this block's own
words — a <a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html">ArcCenterSource</a> value
(<a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_ModalCircleCenter">ModalCircleCenter</a>: the modal
klartext <code>CC</code> section; <a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_StartPoint">StartPoint</a>:
the arc's own start point, the missing- or partial-<code>CC</code>
degrade). Absent for a
block that states its center (I/J/K offsets, absolute I/J/K — see
<a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html#Hi_NcParsers_Keywords_IArcMotionDef_IsIjkAbsolute">IsIjkAbsolute</a> — or R). Read by the NcOpt splition
write-back: a modal-center arc splits into fragments that keep the
block's words (nothing to rebuild) around the unchanged <code>CC</code>
line; a start-point center cannot be shared by fragments at all.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string CenterSource { 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_Keywords_IArcMotionDef_IsCcw_" data-uid="Hi.NcParsers.Keywords.IArcMotionDef.IsCcw*"></a>
<h3 id="Hi_NcParsers_Keywords_IArcMotionDef_IsCcw" data-uid="Hi.NcParsers.Keywords.IArcMotionDef.IsCcw">
@@ -0,0 +1,302 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Interface IFanucHpccDef | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Interface IFanucHpccDef | HiAPI-C# 2025 ">
<meta name="description" content="Block-root section recording a consumed bare Fanuc G05 P{n} (HPCC family selection), written by . P is a function-selection code — not a quantity, dwell time, or look-ahead block count. P10000 enters high-precision contour control (HPCC: RISC-board multi-block look-ahead, pre-interpolation acceleration/deceleration, curvature-based feed clamping); P0 cancels it. P10001P10999 call high-speed cycle machining: the control executes cycle data pre-registered in its variable area — real axis motion, so an offline run that ignores the call misses that machining ( emits a Warning for it). Small P values select the high-speed remote buffer modes (binary DNC transfer; exact semantics vary by model). HPCC itself never alters the programmed coordinates, so P10000/P0 are recognized, intentionally not simulated, safe offline (the pattern). Deliberately separate from the modal PathSmoothing section (G05.1, ): this section is block-local like and is NOT tracked by — it exists for diagnostics and bidirectional NC-text reconstruction only.">
<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.Keywords.IFanucHpccDef">
<h1 id="Hi_NcParsers_Keywords_IFanucHpccDef" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef" class="text-break">
Interface IFanucHpccDef
</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.Keywords.html">Keywords</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Block-root section recording a consumed bare Fanuc <code>G05 P{n}</code>
(HPCC family selection), written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</a>.</p>
<p>
P is a function-selection code — not a quantity, dwell time, or
look-ahead block count. P10000 enters high-precision contour control
(HPCC: RISC-board multi-block look-ahead, pre-interpolation
acceleration/deceleration, curvature-based feed clamping); P0 cancels
it. P10001P10999 call high-speed cycle machining: the control
executes cycle data pre-registered in its variable area — real axis
motion, so an offline run that ignores the call misses that machining
(<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</a> emits a Warning
for it). Small P values select the high-speed remote buffer modes
(binary DNC transfer; exact semantics vary by model). HPCC itself
never alters the programmed coordinates, so P10000/P0 are recognized,
intentionally not simulated, safe offline (the
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html">SiemensStopreSyntax</a> pattern).
</p>
<p>
Deliberately separate from the modal <code>PathSmoothing</code> section
(G05.1, <a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a>): this section is
block-local like <a class="xref" href="Hi.NcParsers.Keywords.Siemens.Stopre.html">Stopre</a> and is NOT tracked by
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a> — it exists for
diagnostics and bidirectional NC-text reconstruction only.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public interface IFanucHpccDef</code></pre>
</div>
<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_Keywords_IFanucHpccDef_examples">Examples</h2>
<pre><code class="lang-csharp">"FanucHpcc": {
"Term": "G05",
"IsEnabled": true,
"FunctionCode": 10000
}</code></pre>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_NcParsers_Keywords_IFanucHpccDef_FunctionCode_" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.FunctionCode*"></a>
<h3 id="Hi_NcParsers_Keywords_IFanucHpccDef_FunctionCode" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.FunctionCode">
FunctionCode
</h3>
<div class="markdown level1 summary"><p>Raw P function-selection value, preserved for NC-text write-back;
<code>null</code> when the source block carried no P word or the P value
was an unevaluated variable/expression.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">int? FunctionCode { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</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_Keywords_IFanucHpccDef_IsEnabled_" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.IsEnabled*"></a>
<h3 id="Hi_NcParsers_Keywords_IFanucHpccDef_IsEnabled" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.IsEnabled">
IsEnabled
</h3>
<div class="markdown level1 summary"><p>True only for <code>P10000</code> (HPCC entered); false for the cancel (<code>P0</code>) and the non-HPCC functions.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">bool IsEnabled { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</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_Keywords_IFanucHpccDef_Term_" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.Term*"></a>
<h3 id="Hi_NcParsers_Keywords_IFanucHpccDef_Term" data-uid="Hi.NcParsers.Keywords.IFanucHpccDef.Term">
Term
</h3>
<div class="markdown level1 summary"><p>Source spelling that carried the selection (<code>G05</code> or <code>G5</code>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">string Term { get; set; }</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>
</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>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class PositioningOverride | HiAPI-C# 2025 ">
<meta name="description" content="Per-word positioning override — a non-modal block-root section keyed by word name (axis words and the I/J/K interpolation parameters) whose values are / / / / , plus the coded-position (indexing axis) family / / / / . Overrides the modal G90/G91 state (and, for I/J/K, the default incremental center reading) for the listed words on this block only. Written by when a word carries one of the Siemens per-word coordinate function wrappers AC() / IC() / DC() / ACP() / ACN() or their coded-position counterparts CAC() / CIC() / CDC() / CACP() / CACN(). Consumed by (linear axes) and (rotary axes) — both treat every non-Incremental value as an absolute write, and both resolve a coded entry&#39;s indexing position number through and rewrite the entry to its plain counterpart in place — by (the directional window for / and the non-modular-axis boundary warning; it never sees a coded value), and by (absolute I/J/K center components); words without an entry keep the default behavior unchanged. The section is not listed in any ModalCarry key set — it never carries to later blocks.">
<meta name="description" content="Per-word positioning override — a non-modal block-root section keyed by word name (axis words and the I/J/K interpolation parameters) whose values are / / / / , plus the coded-position (indexing axis) family / / / / . Overrides the modal G90/G91 state (and, for I/J/K, the default incremental center reading) for the listed words on this block only. Written by when a word carries one of the Siemens per-word coordinate function wrappers AC() / IC() / DC() / ACP() / ACN() or their coded-position counterparts CAC() / CIC() / CDC() / CACP() / CACN(), and by the Heidenhain L / C / CC / CYCL CALL POS parsers (through ) for the klartext I-prefixed incremental words IX+20 / IC+90 — always there, keyed by the plain axis letter. Not written for the CYCL DEF 7 datum-shift words: those are increments of the active shift, not of the tool position, and stay inside the cycle&#39;s own record. Consumed by (linear axes) and (rotary axes) — both treat every non-Incremental value as an absolute write, and both resolve a coded entry&#39;s indexing position number through and rewrite the entry to its plain counterpart in place — by (the directional window for / and the non-modular-axis boundary warning; it never sees a coded value), and by (absolute I/J/K center components) — and, ahead of the shared resolve, by two consumers that take the raw word before it can see it: (CYCL CALL POS words and the M99/M89 root words, resolved against the last programmed position on the spot) and (a distance in the machine frame); words without an entry keep the default behavior unchanged. The section is not listed in any ModalCarry key set — it never carries to later blocks.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -118,7 +118,14 @@ Written by
word carries one of the Siemens per-word coordinate function
wrappers <code>AC()</code> / <code>IC()</code> / <code>DC()</code> / <code>ACP()</code> /
<code>ACN()</code> or their coded-position counterparts <code>CAC()</code> /
<code>CIC()</code> / <code>CDC()</code> / <code>CACP()</code> / <code>CACN()</code>.
<code>CIC()</code> / <code>CDC()</code> / <code>CACP()</code> / <code>CACN()</code>, and by
the Heidenhain L / C / CC / CYCL CALL POS parsers (through
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a>)
for the klartext I-prefixed incremental words <code>IX+20</code> /
<code>IC+90</code> — always <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a> there,
keyed by the plain axis letter. Not written for the <code>CYCL DEF 7</code>
datum-shift words: those are increments of the active shift, not of
the tool position, and stay inside the cycle's own record.
Consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> (linear axes) and
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> (rotary axes) — both treat
@@ -131,9 +138,15 @@ window for <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcPar
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a> and the non-modular-axis
boundary warning; it never sees a coded value), and by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html">SiemensCircularMotionSyntax</a>
(absolute I/J/K center components); words without an entry keep the
default behavior unchanged. The section is not listed in any
ModalCarry key set — it never carries to later blocks.
(absolute I/J/K center components) — and, ahead of the shared
resolve, by two consumers that take the raw word before it can see
it: <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a>
(CYCL CALL POS words and the M99/M89 root words, resolved against
the last programmed position on the spot) and
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a> (a distance in
the machine frame); words without an entry keep the default behavior
unchanged. The section is not listed in any ModalCarry key set — it
never carries to later blocks.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -227,6 +227,11 @@ Evaluation bundle; <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.Fa
written by <a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Fanuc.FanucGotoSyntax.html">FanucGotoSyntax</a>
carrying the tri-state truthy outcome.</li></ul>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.FanucHpcc.html">FanucHpcc</a></dt>
<dd><p>Section data holder for <a class="xref" href="Hi.NcParsers.Keywords.IFanucHpccDef.html">IFanucHpccDef</a>.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -468,7 +473,14 @@ Written by
word carries one of the Siemens per-word coordinate function
wrappers <code>AC()</code> / <code>IC()</code> / <code>DC()</code> / <code>ACP()</code> /
<code>ACN()</code> or their coded-position counterparts <code>CAC()</code> /
<code>CIC()</code> / <code>CDC()</code> / <code>CACP()</code> / <code>CACN()</code>.
<code>CIC()</code> / <code>CDC()</code> / <code>CACP()</code> / <code>CACN()</code>, and by
the Heidenhain L / C / CC / CYCL CALL POS parsers (through
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a>)
for the klartext I-prefixed incremental words <code>IX+20</code> /
<code>IC+90</code> — always <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a> there,
keyed by the plain axis letter. Not written for the <code>CYCL DEF 7</code>
datum-shift words: those are increments of the active shift, not of
the tool position, and stay inside the cycle's own record.
Consumed by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> (linear axes) and
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> (rotary axes) — both treat
@@ -481,9 +493,15 @@ window for <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcPar
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_NegativeOnly">NegativeOnly</a> and the non-modular-axis
boundary warning; it never sees a coded value), and by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensCircularMotionSyntax.html">SiemensCircularMotionSyntax</a>
(absolute I/J/K center components); words without an entry keep the
default behavior unchanged. The section is not listed in any
ModalCarry key set — it never carries to later blocks.
(absolute I/J/K center components) — and, ahead of the shared
resolve, by two consumers that take the raw word before it can see
it: <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a>
(CYCL CALL POS words and the M99/M89 root words, resolved against
the last programmed position on the spot) and
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html">MachineCoordSelectSyntax</a> (a distance in
the machine frame); words without an entry keep the default behavior
unchanged. The section is not listed in any ModalCarry key set — it
never carries to later blocks.
</p>
</dd>
</dl>
@@ -656,6 +674,35 @@ flood vs mist.
<dd><p>Dwell/pause section definition for use inside Sequence items.
Resolved by <span class="xref">Hi.NcParsers.Semantics.CompoundMotionSemanticUtil</span> into
<a class="xref" href="Hi.Numerical.Acts.ActDelay.html">ActDelay</a>.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.Keywords.IFanucHpccDef.html">IFanucHpccDef</a></dt>
<dd><p>Block-root section recording a consumed bare Fanuc <code>G05 P{n}</code>
(HPCC family selection), written by
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</a>.</p>
<p>
P is a function-selection code — not a quantity, dwell time, or
look-ahead block count. P10000 enters high-precision contour control
(HPCC: RISC-board multi-block look-ahead, pre-interpolation
acceleration/deceleration, curvature-based feed clamping); P0 cancels
it. P10001P10999 call high-speed cycle machining: the control
executes cycle data pre-registered in its variable area — real axis
motion, so an offline run that ignores the call misses that machining
(<a class="xref" href="Hi.NcParsers.LogicSyntaxs.FanucPathSmoothingSyntax.html">FanucPathSmoothingSyntax</a> emits a Warning
for it). Small P values select the high-speed remote buffer modes
(binary DNC transfer; exact semantics vary by model). HPCC itself
never alters the programmed coordinates, so P10000/P0 are recognized,
intentionally not simulated, safe offline (the
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html">SiemensStopreSyntax</a> pattern).
</p>
<p>
Deliberately separate from the modal <code>PathSmoothing</code> section
(G05.1, <a class="xref" href="Hi.NcParsers.Keywords.IFanucPathSmoothingDef.html">IFanucPathSmoothingDef</a>): this section is
block-local like <a class="xref" href="Hi.NcParsers.Keywords.Siemens.Stopre.html">Stopre</a> and is NOT tracked by
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a> — it exists for
diagnostics and bidirectional NC-text reconstruction only.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class FanucPathSmoothingSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the JSON section using the schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as . The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by , which already tracks the PathSmoothing section key and deep-clones it forward.">
<meta name="description" content="Consumes Fanuc G05.1 (high-precision contour / AICC II / Nano Smoothing) and records the modal state in the JSON section using the schema. Q1 enables, Q0 disables; the optional R{n} precision-level is preserved as . The simulation does not alter the tool path — this is a controller-internal interpolation black box; the captured state exists for bidirectional NC-text reconstruction. Modal carry to subsequent blocks is handled by , which already tracks the PathSmoothing section key and deep-clones it forward. Also consumes the bare G05 P{n} HPCC family (captured by ) into the block-local section — recognized, intentionally not simulated (the pattern). Ignoring P10000/P0 is safe offline; an ignored high-speed cycle machining call (P10001P10999) means the simulation misses that machining, surfaced as a Warning. See for the P function-selection semantics. The section is deliberately separate from the modal PathSmoothing section and is not modal-carried.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -109,6 +109,18 @@ Modal carry to subsequent blocks is handled by
<a class="xref" href="Hi.NcParsers.PostLogicSyntaxs.ModalCarrySyntax.html">ModalCarrySyntax</a>, which already tracks the
<code>PathSmoothing</code> section key and deep-clones it forward.
</p>
<p>
Also consumes the bare <code>G05 P{n}</code> HPCC family (captured by
<a class="xref" href="Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html#Hi_NcParsers_Syntaxs_FanucSyntaxUtil_G05Syntax">G05Syntax</a>) into the block-local
<a class="xref" href="Hi.NcParsers.Keywords.FanucHpcc.html">FanucHpcc</a> section — recognized, intentionally not
simulated (the <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Siemens.SiemensStopreSyntax.html">SiemensStopreSyntax</a> pattern).
Ignoring P10000/P0 is safe offline; an ignored high-speed cycle
machining call (P10001P10999) means the simulation misses that
machining, surfaced as a Warning. See <a class="xref" href="Hi.NcParsers.Keywords.IFanucHpccDef.html">IFanucHpccDef</a> for
the P function-selection semantics. The section is deliberately
separate from the modal <code>PathSmoothing</code> section and is not
modal-carried.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -220,6 +232,37 @@ when enabling):
<pre><code class="lang-csharp">{ "Parsing": { "G05.1": { "Q": 0 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }</code></pre>
<p>Bare G05 P10000 — enters HPCC; consumed into the block-local
<code>FanucHpcc</code> section, the modal <code>PathSmoothing</code> section is
not touched:
#Previous:</p>
<pre><code class="lang-csharp">{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "G05": { "P": 10000 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "FanucHpcc": { "Term": "G05", "IsEnabled": true, "FunctionCode": 10000 } }</code></pre>
<p>G05 P0 — cancels HPCC; consumed silently (cancelling a no-op warrants
no message):
#Previous:</p>
<pre><code class="lang-csharp">{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "G05": { "P": 0 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "FanucHpcc": { "Term": "G05", "IsEnabled": false, "FunctionCode": 0 } }</code></pre>
<p>G5 spelling alias — <code>Term</code> keeps the source spelling:
#Previous:</p>
<pre><code class="lang-csharp">{ "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "G5": { "P": 10000 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "FanucHpcc": { "Term": "G5", "IsEnabled": true, "FunctionCode": 10000 } }</code></pre>
<p>G05 P10000 on the very first block (no <code>#Previous:</code>) — the HPCC
consumption runs ahead of the first-block early return, which then
still stamps the default disabled <code>PathSmoothing</code> section:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "G05": { "P": 10000 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{ "FanucHpcc": { "Term": "G05", "IsEnabled": true, "FunctionCode": 10000 }, "PathSmoothing": { "IsEnabled": false, "Term": "G05.1" } }</code></pre>
@@ -330,6 +330,29 @@ below pins the JSON shape only):
}
]
}</code></pre>
G43.4 with no H word on a block whose <code>ToolChange</code> section says
tool 1 is in the spindle — the offset id is the equipped tool number
(HardNc parity), the same <code>ToolOffset(1 → 10 mm)</code> and real
kinematics as above, no rotary state so the tool normal is +Z and the
height-mat carries <code>Trans = (0, 0, 10)</code>. A bare G43.4 arrives as a
flag (no parameter object to hang an H on):
#BeforeBuild:
<pre><code class="lang-csharp">{
"Parsing": { "Flags": ["G43.4"] },
"ToolChange": { "ToolId": 1, "IsChange": true, "Term": "M06" }
}</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"ToolChange": { "ToolId": 1, "IsChange": true, "Term": "M06" },
"ToolHeightCompensation": { "Offset_mm": 10, "Term": "G43.4", "OffsetId": 1 },
"ProgramToMcTransform": [
{
"Source": "ToolHeightCompensation",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,10,1]
}
]
}</code></pre>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCannedCycleSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Bridges the klartext machining-cycle vocabulary onto the shared ISO canned-cycle machinery. Owns the self-carrying store (single-step lookback + rewrite on every block — the P1 datum-shift pattern) and the call-once vs modal split: Definition (Parsing.MachiningCycle from ): mapped to ISO slots at definition time — 200 → G81/G82/G83 (peck when Q202 &amp;lt; |Q201|), 232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), 251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, plunge feed Q206, step-down Q202). A definition never executes by itself. Unsupported numbers (19, …) are recognized-but-not-simulated: consumed whole with HeidenhainCycl--Unsupported, stored unarmable so a later call warns instead of moving. Required parameters that are missing or non-literal make the store unarmable with HeidenhainCycl--ParamsNotLiteral.Call-once (CYCL CALL [POS] record from , or an M99 flag on a positioning block — the TNC block-wise call, unrelated to the Fanuc return M99): writes the mapped cycle as a direct Parsing.G8x sub-section on this block, which resolves and the shared cycle syntaxes expand into a . POS coordinates override the stored X/Y; the POS Z is a pre-position, recorded but never fed into the hole-bottom slot. The ISO modal-lookback branch is deliberately bypassed: it has no positioning gate, so an armed would re-execute on flag-only blocks — wrong for klartext.Modal (M89): sets ; each subsequent block carrying root axis words (and no CArc statement) fires the same direct-section path with the block&#39;s X/Y consumed into the cycle. M99 fires once and clears the modality; a new CYCL DEF replaces the store.Seal: on every non-firing block whose previous block carries an active term, a G80 flag is injected (the P0 G00/G01 injection pattern) so writes the cancel sentinel — the one-shot execution never leaks into ISO modal repetition. Known divergences (recorded, corpus-benign): the cycle&#39;s mapped feed enters the modal section during expansion (ISO semantics; the Siemens MCALL precedent accepts the same leak); the final retract plane is the ISO G98 initial level, not Q204&#39;s second set-up clearance (Q204 is recorded in the definition store only). Must run after the tilt/RTCP family and immediately before .">
<meta name="description" content="Bridges the klartext machining-cycle vocabulary onto the shared ISO canned-cycle machinery. Owns the self-carrying store (single-step lookback + rewrite on every block — the P1 datum-shift pattern) and the call-once vs modal split: Definition (Parsing.MachiningCycle from ): mapped to ISO slots at definition time — 200 → G81/G82/G83 (peck when Q202 &amp;lt; |Q201|), 232 → G81 (start point Q225/Q226/Q227, end Q386, feed Q207), 251/252/253 → G81/G83 (surface Q203, clearance Q200, depth Q201, plunge feed Q206, step-down Q202). A definition never executes by itself. Unsupported numbers (19, …) are recognized-but-not-simulated: consumed whole with HeidenhainCycl--Unsupported, stored unarmable so a later call warns instead of moving. Required parameters that are missing or non-literal make the store unarmable with HeidenhainCycl--ParamsNotLiteral.Call-once (CYCL CALL [POS] record from , or an M99 flag on a positioning block — the TNC block-wise call, unrelated to the Fanuc return M99): writes the mapped cycle as a direct Parsing.G8x sub-section on this block, which resolves and the shared cycle syntaxes expand into a . POS coordinates override the stored X/Y; the POS Z is a pre-position, recorded but never fed into the hole-bottom slot. Words carrying the klartext incremental stamp — POS words (CYCL CALL POS IX+20) and root words on the M99/M89 forms (L IX+20 R0 FMAX M99 — the manual&#39;s hole-group shape), see — are resolved against the last programmed position here, on the spot: this syntax runs ahead of the shared and consumes the words, so the per-word override would otherwise be lost and the hole drilled at the raw distance. The ISO modal-lookback branch is deliberately bypassed: it has no positioning gate, so an armed would re-execute on flag-only blocks — wrong for klartext.Modal (M89): sets ; each subsequent block carrying root axis words (and no CArc statement) fires the same direct-section path with the block&#39;s X/Y consumed into the cycle. M99 fires once and clears the modality; a new CYCL DEF replaces the store.Seal: on every non-firing block whose previous block carries an active term, a G80 flag is injected (the P0 G00/G01 injection pattern) so writes the cancel sentinel — the one-shot execution never leaks into ISO modal repetition. Known divergences (recorded, corpus-benign): the cycle&#39;s mapped feed enters the modal section during expansion (ISO semantics; the Siemens MCALL precedent accepts the same leak); the final retract plane is the ISO G98 initial level, not Q204&#39;s second set-up clearance (Q204 is recorded in the definition store only) — and an incremental Z word chained off a cycle end (L IZ.., CYCL CALL POS IZ..) inherits that gap, since it adds to the simulated end plane. Must run after the tilt/RTCP family and immediately before .">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -120,7 +120,15 @@ sub-section on this block, which
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> resolves and the shared cycle
syntaxes expand into a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a>. POS coordinates
override the stored X/Y; the POS Z is a pre-position, recorded but
never fed into the hole-bottom slot. The ISO modal-lookback branch is
never fed into the hole-bottom slot. Words carrying the klartext
incremental stamp — POS words (<code>CYCL CALL POS IX+20</code>) and root
words on the M99/M89 forms (<code>L IX+20 R0 FMAX M99</code> — the
manual's hole-group shape), see
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a> — are resolved
against the last programmed position here, on the spot: this syntax
runs ahead of the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> and
consumes the words, so the per-word override would otherwise be lost
and the hole drilled at the raw distance. The ISO modal-lookback branch is
deliberately bypassed: it has no positioning gate, so an armed
<a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> would re-execute on flag-only blocks —
wrong for klartext.</li><li><b>Modal</b> (<code>M89</code>): sets <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html#Hi_NcParsers_Keywords_Heidenhain_MachiningCycleDef_Modal">Modal</a>;
@@ -137,7 +145,10 @@ Known divergences (recorded, corpus-benign): the cycle's mapped feed
enters the modal <a class="xref" href="Hi.NcParsers.Keywords.Feedrate.html">Feedrate</a> section during expansion (ISO
semantics; the Siemens MCALL precedent accepts the same leak); the
final retract plane is the ISO G98 initial level, not Q204's second
set-up clearance (Q204 is recorded in the definition store only).
set-up clearance (Q204 is recorded in the definition store only)
and an incremental Z word chained off a cycle end (<code>L IZ..</code>,
<code>CYCL CALL POS IZ..</code>) inherits that gap, since it adds to the
simulated end plane.
</p>
Must run after the tilt/RTCP family and immediately before
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a>.
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCircleCenterSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain-specific: turns the Parsing.CC record into the modal HeidenhainCircleCenter { X, Y, Z? } section (absolute program coordinates). Self-carrying every block (PlaneSelect pattern — detected ?? previous), so the arc syntax&#39;s single-step read always works without ModalCarry involvement; a CC with partial axes merges the missing components from the previous center. Must run before .">
<meta name="description" content="Heidenhain-specific: turns the Parsing.CC record into the modal HeidenhainCircleCenter { X, Y, Z? } section (absolute program coordinates). Self-carrying every block (PlaneSelect pattern — detected ?? previous), so the arc syntax&#39;s single-step read always works without ModalCarry involvement; a CC with partial axes merges the missing components from the previous center. Must run before . A CC stating no coordinates () takes the last programmed position, read at THIS block and frozen into the section — the documented klartext form whose purpose is that the tool moves away before the arc, so a later read at the arc block would take the arc&#39;s own start point instead. Being a definition, it replaces the modal center rather than inheriting the previous one&#39;s axes.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -104,6 +104,15 @@ program coordinates). Self-carrying every block (PlaneSelect pattern
works without ModalCarry involvement; a CC with partial axes merges
the missing components from the previous center. Must run before
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html">HeidenhainCircularMotionSyntax</a>.</p>
<p>
A <code>CC</code> stating no coordinates
(<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html#Hi_NcParsers_ParsingSyntaxs_Heidenhain_HeidenhainCcSyntax_BareKey">BareKey</a>) takes the last programmed
position, read at THIS block and frozen into the section — the
documented klartext form whose purpose is that the tool moves away
before the arc, so a later read at the arc block would take the arc's
own start point instead. Being a definition, it replaces the modal
center rather than inheriting the previous one's axes.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCircularMotionSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain circular motion — the Klartext half of the brand&#39;s two arc syntaxes. The shared (with set) runs right after it for the DIN/ISO dialect: the two gates are per-block exclusive (a klartext arc has CArc and no I/J/K/R; an ISO arc the reverse) and both honor the single Group 01 slot. Gated by the Parsing.C statement marker (klartext arcs carry no G02/G03 and no modal arc continuation): the endpoint comes from the block&#39;s resolved ProgramXyz, the center from the modal section (implicit center = current position when no CC was ever given), and the direction from DR- (CW → G02) / DR+ (CCW → G03). A closed arc on the active plane is a full circle. A missing DR warns (Arc-DR&amp;ndash;Missing) and degrades to the modal linear move to the endpoint (chord).">
<meta name="description" content="Heidenhain circular motion — the Klartext half of the brand&#39;s two arc syntaxes. The shared (with set) runs right after it for the DIN/ISO dialect: the two gates are per-block exclusive (a klartext arc has CArc and no I/J/K/R; an ISO arc the reverse) and both honor the single Group 01 slot. Gated by the Parsing.C statement marker (klartext arcs carry no G02/G03 and no modal arc continuation): the endpoint comes from the block&#39;s resolved ProgramXyz, the center from the modal section, and the direction from DR- (CW → G02) / DR+ (CCW → G03). A closed arc on the active plane is a full circle. Two malformed shapes warn and degrade to the modal linear move to the endpoint (chord): a missing DR (Arc-DR&amp;ndash;Missing), and a center sitting on the arc&#39;s own start point (Arc-CircleCenter&amp;ndash;OnStartPoint) — a zero begin radius that emits no motion act at all while the endpoint still advances the modal position. A CC that states only ONE in-plane coordinate is not degraded: that arc has real geometry, and only the optimizer&#39;s splition refuses it (see below). The event is stamped with its ( / ) because a C block never states its center — the NcOpt splition write-back reads it.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -107,12 +107,20 @@ the reverse) and both honor the single Group 01
Gated by the <code>Parsing.C</code> statement marker (klartext arcs
carry no G02/G03 and no modal arc continuation): the endpoint comes
from the block's resolved <code>ProgramXyz</code>, the center from the
modal <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html">HeidenhainCircleCenterSyntax</a> section (implicit
center = current position when no CC was ever given), and the
modal <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html">HeidenhainCircleCenterSyntax</a> section, and the
direction from <code>DR-</code> (CW → G02) / <code>DR+</code> (CCW → G03). A
closed arc on the active plane is a full circle. A missing DR warns
(<code>Arc-DR&ndash;Missing</code>) and degrades to the modal linear move to the
endpoint (chord).</p>
closed arc on the active plane is a full circle. Two malformed shapes
warn and degrade to the modal linear move to the endpoint (chord): a
missing DR (<code>Arc-DR&ndash;Missing</code>), and a center sitting on the arc's
own start point (<code>Arc-CircleCenter&ndash;OnStartPoint</code>) — a zero begin
radius that emits no motion act at all while the endpoint still
advances the modal position. A CC that states only ONE in-plane
coordinate is not degraded: that arc has real geometry, and only the
optimizer's splition refuses it (see below). The event is stamped with its
<a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html#Hi_NcParsers_Keywords_IArcMotionDef_CenterSource">CenterSource</a>
(<a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_ModalCircleCenter">ModalCircleCenter</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_StartPoint">StartPoint</a>) because a C block never
states its center — the NcOpt splition write-back reads it.</p>
</div>
<div class="markdown conceptual"></div>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainCoordinateOffsetSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N — written to the shared section (kept alive modally by via synthetic-id resolution). CYCL DEF 7 (#N table row or direct X/Y/Z) is additive on top of the active preset (TNC semantics; HardNc oracle composes -preset + shift): it is written to its own DatumShift section with a separate ProgramToMcTransform entry () so preset and shift compose in the transform chain instead of replacing each other. The shift is carried modally by this syntax itself: on blocks without a CYCL DEF, a numbered row re-resolves from the table and a direct shift carries its values forward. Cancelling is a zero shift (CYCL DEF 7.1 X+0 Y+0 Z+0). For DIN/ISO compatibility (G54G59), use in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source so both syntaxes coexist without double-composing.">
<meta name="description" content="Heidenhain-specific: resolves coordinate offset from CYCL DEF 247 (Datum Preset) and CYCL DEF 7 (Datum Shift). CYCL DEF 247 Q339=N: selects datum preset table entry N — written to the shared section (kept alive modally by via synthetic-id resolution). CYCL DEF 7 (#N table row or direct X/Y/Z) is additive on top of the active preset (TNC semantics; HardNc oracle composes -preset + shift): it is written to its own DatumShift section with a separate ProgramToMcTransform entry () so preset and shift compose in the transform chain instead of replacing each other. The shift is carried modally by this syntax itself: on blocks without a CYCL DEF, a numbered row re-resolves from the table and a direct shift carries its values forward. Cancelling is a zero shift (CYCL DEF 7.1 X+0 Y+0 Z+0). A klartext I-prefixed word (CYCL DEF 7.2 IY+5, kept under its prefixed key in the record by the parser) shifts BY the value on top of the shift active on the previous block — the manual&#39;s &quot;incremental values are always referenced to the datum which was last valid, this can be a datum which has already been shifted&quot; — never a distance from the tool position, which is why it bypasses the / route entirely. For DIN/ISO compatibility (G54G59), use in addition to this syntax in the Heidenhain syntax list. Uses replace-by-source so both syntaxes coexist without double-composing.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -115,7 +115,15 @@ in the transform chain instead of replacing each other. The shift is
carried modally by this syntax itself: on blocks without a CYCL DEF,
a numbered row re-resolves from the table and a direct shift carries
its values forward. Cancelling is a zero shift
(<code>CYCL DEF 7.1 X+0 Y+0 Z+0</code>).
(<code>CYCL DEF 7.1 X+0 Y+0 Z+0</code>). A klartext I-prefixed word
(<code>CYCL DEF 7.2 IY+5</code>, kept under its prefixed key in the record
by the parser) shifts BY the value on top of the shift active on the
previous block — the manual's "incremental values are always
referenced to the datum which was last valid, this can be a datum
which has already been shifted" — never a distance from the tool
position, which is why it bypasses the
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> /
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> route entirely.
</p>
For DIN/ISO compatibility (G54G59), use <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html">IsoCoordinateOffsetSyntax</a>
in addition to this syntax in the Heidenhain syntax list.
@@ -271,6 +279,34 @@ written by the datum-shift cycle parser; no
}
]
}</code></pre>
<code>CYCL DEF 7.1 IX+5 / 7.2 IY-20 / 7.3 IZ+0</code> — klartext
incremental words, kept under their prefixed keys by the parser:
each shifts BY its value on top of the shift active on the previous
block (here the direct <code>(10, 20, 5)</code>), so the result is
<code>(15, 0, 5)</code> — not a distance from the tool position:
#Previous:
<pre><code class="lang-csharp">{
"DatumShift": {
"ShiftId": "DATUM_SHIFT_DIRECT",
"Offset_X": 10, "Offset_Y": 20, "Offset_Z": 5
}
}</code></pre>
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "CYCL DEF": 7, "DATUM SHIFT": { "IX": 5, "IY": -20, "IZ": 0 } } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"DatumShift": {
"ShiftId": "DATUM_SHIFT_DIRECT",
"Offset_X": 15, "Offset_Y": 0, "Offset_Z": 5
},
"ProgramToMcTransform": [
{
"Source": "DatumShift",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 15,0,5,1]
}
]
}</code></pre>
@@ -0,0 +1,638 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class HeidenhainLnOrientationSyntax | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class HeidenhainLnOrientationSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Heidenhain LN posture rules — the brand adapter between the Parsing.LN vector record () and the shared . Applies the TNC640/TNC7 manual&#39;s rules verbatim: T vector present + M128/FUNCTION TCPM active → the tool axis is T (&quot;Tool keeps the set tool orientation&quot;).T absent + RTCP active → the tool axis is the surface normal N (&quot;the control maintains the tool perpendicular to the workpiece contour&quot;).RTCP inactive → the T vector is ignored, exactly like the control (&quot;the control ignores the direction vector T, even if it is defined in the LN block&quot;) — diagnosed as Orientation-Vector--IgnoredNoTcpm, posture untouched. The chosen vector is written (verbatim within the unit-length tolerance; normalized with a diagnostic beyond it) to the brand-agnostic section; the surface normal is always carried on — compensation along it (DR2 / 3D-ToolComp) is recognized, not simulated (SurfaceNormal--CompNotSimulated, first LN block of a run only). RTCP activity is judged dual-source — the same-block Parsing words (M128 / FUNCTION TCPM, before consumes them; the same-block on+off contradiction resolves off, the P1 rule) OR the most recent owner term — so an LN block that itself activates RTCP is not silently skipped. Must run after and before (the producer/consumer order) and before (which reads the resolved endpoint ABC for its Dynamic/Static marking). The vector is interpreted in the untilted program frame; combining LN with an active PLANE tilt is diagnosed (Orientation-Vector--TiltedFrameAssumed), not remapped.">
<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.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax">
<h1 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax" class="text-break">
Class HeidenhainLnOrientationSyntax
</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.LogicSyntaxs.html">LogicSyntaxs</a>.<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.html">Heidenhain</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>Heidenhain LN posture rules — the brand adapter between the
<code>Parsing.LN</code> vector record (<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLnSyntax.html">HeidenhainLnSyntax</a>)
and the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html">OrientationVectorResolveSyntax</a>. Applies
the TNC640/TNC7 manual's rules verbatim:</p>
<ul><li>T vector present + M128/FUNCTION TCPM active → the tool axis
is T ("Tool keeps the set tool orientation").</li><li>T absent + RTCP active → the tool axis is the surface normal
N ("the control maintains the tool perpendicular to the workpiece
contour").</li><li>RTCP inactive → the T vector is ignored, exactly like the
control ("the control ignores the direction vector T, even if it is
defined in the LN block") — diagnosed as
<code>Orientation-Vector--IgnoredNoTcpm</code>, posture untouched.</li></ul>
The chosen vector is written (verbatim within the unit-length
tolerance; normalized with a diagnostic beyond it) to the brand-agnostic
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html#Hi_NcParsers_LogicSyntaxs_OrientationVectorResolveSyntax_ToolOrientationKey">ToolOrientationKey</a>
section; the surface normal is always carried on
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html#Hi_NcParsers_LogicSyntaxs_OrientationVectorResolveSyntax_SurfaceNormalKey">SurfaceNormalKey</a>
compensation along it (DR2 / 3D-ToolComp) is recognized, not
simulated (<code>SurfaceNormal--CompNotSimulated</code>, first LN block of
a run only).
<p>
RTCP activity is judged dual-source — the same-block Parsing words
(M128 / FUNCTION TCPM, before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html">HeidenhainRtcpSyntax</a>
consumes them; the same-block on+off contradiction resolves off, the
P1 rule) OR the most recent
<a class="xref" href="Hi.NcParsers.Keywords.IToolHeightCompensationDef.html">IToolHeightCompensationDef</a> owner term — so an LN block
that itself activates RTCP is not silently skipped.
</p>
<p>
Must run <b>after</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> and <b>before</b>
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html">OrientationVectorResolveSyntax</a> (the producer/consumer
order) and before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html">HeidenhainRtcpSyntax</a> (which reads
the resolved endpoint ABC for its Dynamic/Static marking).
The vector is interpreted in the untilted program frame; combining
LN with an active PLANE tilt is diagnosed
(<code>Orientation-Vector--TiltedFrameAssumed</code>), not remapped.
</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class HeidenhainLnOrientationSyntax : 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">HeidenhainLnOrientationSyntax</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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_examples">Examples</h2>
<p>T vector under same-block M128 activation — promoted to the shared
ToolOrientation section (M128 record stays for the RTCP syntax);
the normal is carried on SurfaceNormal:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"M128": { "Bare": true },
"LN": {
"NX": 0, "NY": 0, "NZ": 1,
"TX": 0.5, "TY": 0, "TZ": 0.8660254
}
}
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "M128": { "Bare": true } },
"SurfaceNormal": {
"Vector": { "X": 0, "Y": 0, "Z": 1 }, "Term": "NX/NY/NZ"
},
"ToolOrientation": {
"Vector": { "X": 0.5, "Y": 0, "Z": 0.8660254 }, "Term": "TX/TY/TZ"
}
}</code></pre>
<p>RTCP inactive — T ignored (diagnosed), N still carried, no
ToolOrientation:
#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": {
"LN": {
"NX": 0, "NY": 0, "NZ": 1,
"TX": 0.5, "TY": 0, "TZ": 0.8660254
}
}
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"SurfaceNormal": {
"Vector": { "X": 0, "Y": 0, "Z": 1 }, "Term": "NX/NY/NZ"
}
}</code></pre>
<p>T absent, RTCP active from the previous block's owner term — the
normal stands in as the posture source (tool perpendicular to the
contour):
#Previous:</p>
<pre><code class="lang-csharp">{
"ToolHeightCompensation": { "Offset_mm": 0, "Term": "M128", "OffsetId": 0 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "LN": { "NX": 0.5, "NY": 0, "NZ": 0.8660254 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"SurfaceNormal": {
"Vector": { "X": 0.5, "Y": 0, "Z": 0.8660254 }, "Term": "NX/NY/NZ"
},
"ToolOrientation": {
"Vector": { "X": 0.5, "Y": 0, "Z": 0.8660254 }, "Term": "NX/NY/NZ"
}
}</code></pre>
<p>Zero T vector — diagnosed, posture untouched (the Syntec COR-159
analogue); the N-less record leaves no SurfaceNormal either:
#Previous:</p>
<pre><code class="lang-csharp">{
"ToolHeightCompensation": { "Offset_mm": 0, "Term": "M128", "OffsetId": 0 }
}</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{ "Parsing": { "LN": { "TX": 0, "TY": 0, "TZ": 0 } } }</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{}</code></pre>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax__ctor_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax__ctor" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.#ctor">
HeidenhainLnOrientationSyntax()
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance with default settings.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainLnOrientationSyntax()</code></pre>
</div>
<a id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax__ctor_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.#ctor*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax__ctor_System_Xml_Linq_XElement_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.#ctor(System.Xml.Linq.XElement)">
HeidenhainLnOrientationSyntax(XElement)
</h3>
<div class="markdown level1 summary"><p>Initializes a new instance by deserializing from the given XML element.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HeidenhainLnOrientationSyntax(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>Source XML element.</p>
</dd>
</dl>
<h2 class="section" id="fields">Fields
</h2>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_NVectorTerm" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.NVectorTerm">
NVectorTerm
</h3>
<div class="markdown level1 summary"><p>Term recorded when the posture source is the surface normal.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string NVectorTerm = &quot;NX/NY/NZ&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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_TVectorTerm" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.TVectorTerm">
TVectorTerm
</h3>
<div class="markdown level1 summary"><p>Term recorded when the posture source is the tool vector.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public const string TVectorTerm = &quot;TX/TY/TZ&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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Name_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.Name*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Name" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_XName_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.XName*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_XName" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.XName">
XName
</h3>
<div class="markdown level1 summary"><p>XML element name used to register this syntax with <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a>.</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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Build_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.Build*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Build_Hi_Common_Collections_LazyLinkedListNode_Hi_NcParsers_Syntaxs_SyntaxPiece__System_Collections_Generic_List_Hi_NcParsers_Dependencys_INcDependency__Hi_NcParsers_NcDiagnosticProgress_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_MakeXmlSource_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.MakeXmlSource*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_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_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Reg_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.Reg*"></a>
<h3 id="Hi_NcParsers_LogicSyntaxs_Heidenhain_HeidenhainLnOrientationSyntax_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.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>
@@ -119,7 +119,15 @@ sub-section on this block, which
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a> resolves and the shared cycle
syntaxes expand into a <a class="xref" href="Hi.NcParsers.Keywords.CompoundMotion.html">CompoundMotion</a>. POS coordinates
override the stored X/Y; the POS Z is a pre-position, recorded but
never fed into the hole-bottom slot. The ISO modal-lookback branch is
never fed into the hole-bottom slot. Words carrying the klartext
incremental stamp — POS words (<code>CYCL CALL POS IX+20</code>) and root
words on the M99/M89 forms (<code>L IX+20 R0 FMAX M99</code> — the
manual's hole-group shape), see
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a> — are resolved
against the last programmed position here, on the spot: this syntax
runs ahead of the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> and
consumes the words, so the per-word override would otherwise be lost
and the hole drilled at the raw distance. The ISO modal-lookback branch is
deliberately bypassed: it has no positioning gate, so an armed
<a class="xref" href="Hi.NcParsers.Keywords.CannedCycle.html">CannedCycle</a> would re-execute on flag-only blocks —
wrong for klartext.</li><li><b>Modal</b> (<code>M89</code>): sets <a class="xref" href="Hi.NcParsers.Keywords.Heidenhain.MachiningCycleDef.html#Hi_NcParsers_Keywords_Heidenhain_MachiningCycleDef_Modal">Modal</a>;
@@ -136,7 +144,10 @@ Known divergences (recorded, corpus-benign): the cycle's mapped feed
enters the modal <a class="xref" href="Hi.NcParsers.Keywords.Feedrate.html">Feedrate</a> section during expansion (ISO
semantics; the Siemens MCALL precedent accepts the same leak); the
final retract plane is the ISO G98 initial level, not Q204's second
set-up clearance (Q204 is recorded in the definition store only).
set-up clearance (Q204 is recorded in the definition store only)
and an incremental Z word chained off a cycle end (<code>L IZ..</code>,
<code>CYCL CALL POS IZ..</code>) inherits that gap, since it adds to the
simulated end plane.
</p>
Must run after the tilt/RTCP family and immediately before
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.CannedCycleResolveSyntax.html">CannedCycleResolveSyntax</a>.
@@ -151,6 +162,15 @@ program coordinates). Self-carrying every block (PlaneSelect pattern
works without ModalCarry involvement; a CC with partial axes merges
the missing components from the previous center. Must run before
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircularMotionSyntax.html">HeidenhainCircularMotionSyntax</a>.</p>
<p>
A <code>CC</code> stating no coordinates
(<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainCcSyntax.html#Hi_NcParsers_ParsingSyntaxs_Heidenhain_HeidenhainCcSyntax_BareKey">BareKey</a>) takes the last programmed
position, read at THIS block and frozen into the section — the
documented klartext form whose purpose is that the tool moves away
before the arc, so a later read at the arc block would take the arc's
own start point instead. Being a definition, it replaces the modal
center rather than inheriting the previous one's axes.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -165,12 +185,20 @@ the reverse) and both honor the single Group 01
Gated by the <code>Parsing.C</code> statement marker (klartext arcs
carry no G02/G03 and no modal arc continuation): the endpoint comes
from the block's resolved <code>ProgramXyz</code>, the center from the
modal <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html">HeidenhainCircleCenterSyntax</a> section (implicit
center = current position when no CC was ever given), and the
modal <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCircleCenterSyntax.html">HeidenhainCircleCenterSyntax</a> section, and the
direction from <code>DR-</code> (CW → G02) / <code>DR+</code> (CCW → G03). A
closed arc on the active plane is a full circle. A missing DR warns
(<code>Arc-DR&ndash;Missing</code>) and degrades to the modal linear move to the
endpoint (chord).</p>
closed arc on the active plane is a full circle. Two malformed shapes
warn and degrade to the modal linear move to the endpoint (chord): a
missing DR (<code>Arc-DR&ndash;Missing</code>), and a center sitting on the arc's
own start point (<code>Arc-CircleCenter&ndash;OnStartPoint</code>) — a zero begin
radius that emits no motion act at all while the endpoint still
advances the modal position. A CC that states only ONE in-plane
coordinate is not degraded: that arc has real geometry, and only the
optimizer's splition refuses it (see below). The event is stamped with its
<a class="xref" href="Hi.NcParsers.Keywords.IArcMotionDef.html#Hi_NcParsers_Keywords_IArcMotionDef_CenterSource">CenterSource</a>
(<a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_ModalCircleCenter">ModalCircleCenter</a> /
<a class="xref" href="Hi.NcParsers.Keywords.Generic.ArcCenterSource.html#Hi_NcParsers_Keywords_Generic_ArcCenterSource_StartPoint">StartPoint</a>) because a C block never
states its center — the NcOpt splition write-back reads it.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -193,7 +221,15 @@ in the transform chain instead of replacing each other. The shift is
carried modally by this syntax itself: on blocks without a CYCL DEF,
a numbered row re-resolves from the table and a direct shift carries
its values forward. Cancelling is a zero shift
(<code>CYCL DEF 7.1 X+0 Y+0 Z+0</code>).
(<code>CYCL DEF 7.1 X+0 Y+0 Z+0</code>). A klartext I-prefixed word
(<code>CYCL DEF 7.2 IY+5</code>, kept under its prefixed key in the record
by the parser) shifts BY the value on top of the shift active on the
previous block — the manual's "incremental values are always
referenced to the datum which was last valid, this can be a datum
which has already been shifted" — never a distance from the tool
position, which is why it bypasses the
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> /
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a> route entirely.
</p>
For DIN/ISO compatibility (G54G59), use <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IsoCoordinateOffsetSyntax.html">IsoCoordinateOffsetSyntax</a>
in addition to this syntax in the Heidenhain syntax list.
@@ -248,6 +284,46 @@ unchanged, so a fail-soft call never silently drops the retract.</li></ul>
Must run after the shared cycle syntaxes
(<a class="xref" href="Hi.NcParsers.LogicSyntaxs.DrillingCycleSyntax.html">DrillingCycleSyntax</a>/<a class="xref" href="Hi.NcParsers.LogicSyntaxs.PeckDrillingCycleSyntax.html">PeckDrillingCycleSyntax</a>)
and before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McXyzSyntax.html">McXyzSyntax</a>.
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainLnOrientationSyntax.html">HeidenhainLnOrientationSyntax</a></dt>
<dd><p>Heidenhain LN posture rules — the brand adapter between the
<code>Parsing.LN</code> vector record (<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainLnSyntax.html">HeidenhainLnSyntax</a>)
and the shared <a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html">OrientationVectorResolveSyntax</a>. Applies
the TNC640/TNC7 manual's rules verbatim:</p>
<ul><li>T vector present + M128/FUNCTION TCPM active → the tool axis
is T ("Tool keeps the set tool orientation").</li><li>T absent + RTCP active → the tool axis is the surface normal
N ("the control maintains the tool perpendicular to the workpiece
contour").</li><li>RTCP inactive → the T vector is ignored, exactly like the
control ("the control ignores the direction vector T, even if it is
defined in the LN block") — diagnosed as
<code>Orientation-Vector--IgnoredNoTcpm</code>, posture untouched.</li></ul>
The chosen vector is written (verbatim within the unit-length
tolerance; normalized with a diagnostic beyond it) to the brand-agnostic
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html#Hi_NcParsers_LogicSyntaxs_OrientationVectorResolveSyntax_ToolOrientationKey">ToolOrientationKey</a>
section; the surface normal is always carried on
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html#Hi_NcParsers_LogicSyntaxs_OrientationVectorResolveSyntax_SurfaceNormalKey">SurfaceNormalKey</a>
compensation along it (DR2 / 3D-ToolComp) is recognized, not
simulated (<code>SurfaceNormal--CompNotSimulated</code>, first LN block of
a run only).
<p>
RTCP activity is judged dual-source — the same-block Parsing words
(M128 / FUNCTION TCPM, before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html">HeidenhainRtcpSyntax</a>
consumes them; the same-block on+off contradiction resolves off, the
P1 rule) OR the most recent
<a class="xref" href="Hi.NcParsers.Keywords.IToolHeightCompensationDef.html">IToolHeightCompensationDef</a> owner term — so an LN block
that itself activates RTCP is not silently skipped.
</p>
<p>
Must run <b>after</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.McAbcSyntax.html">McAbcSyntax</a> and <b>before</b>
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.OrientationVectorResolveSyntax.html">OrientationVectorResolveSyntax</a> (the producer/consumer
order) and before <a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainRtcpSyntax.html">HeidenhainRtcpSyntax</a> (which reads
the resolved endpoint ABC for its Dynamic/Static marking).
The vector is interpreted in the untilted program frame; combining
LN with an active PLANE tilt is diagnosed
(<code>Orientation-Vector--TiltedFrameAssumed</code>), not remapped.
</p>
</dd>
</dl>
<dl class="jumplist">
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class IncrementalResolveSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Resolves G91 incremental axis values to absolute in-place within and its sub-sections. Reads written by . Per-word override: a block-root section (written by for the Siemens per-word coordinate functions) beats the modal term for the listed axes on this block only: an entry converts that word even under G90, an entry skips it even under G91 — as does, deliberately, every other non-Incremental value (the rotary-family / / entries are absolute targets; their swing resolution lives in , not here). A coded-position entry ( / — Siemens CAC()/CIC() on a linear indexing axis) carries an indexing position number instead of a coordinate: the number is resolved through via , the word is rewritten to the resolved absolute coordinate, and the entry to ; a failed resolve reports an error and holds the last program position. Axes without an entry follow the modal term unchanged, so brands that never write the section (Fanuc/Heidenhain/...) keep the exact legacy behavior. specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[&quot;Parsing&quot;], [&quot;Parsing&quot;, &quot;G28&quot;]]. All matching paths are converted. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by inside each cycle syntax class, which runs before this syntax. Uses to determine which tags are motion axes. Traces backward nodes for last known to resolve incremental values. After this syntax, all axis values in the working paths are absolute — can consume them without incremental logic.">
<meta name="description" content="Resolves G91 incremental axis values to absolute in-place within and its sub-sections. Reads written by . Per-word override: a block-root section (written by for the Siemens per-word coordinate functions, and by the Heidenhain L / C / CC / CYCL CALL POS parsers for the klartext I-prefixed words — see ; the CYCL CALL POS words never reach this syntax, resolves them on the spot ahead of it) beats the modal term for the listed axes on this block only: an entry converts that word even under G90, an entry skips it even under G91 — as does, deliberately, every other non-Incremental value (the rotary-family / / entries are absolute targets; their swing resolution lives in , not here). A coded-position entry ( / — Siemens CAC()/CIC() on a linear indexing axis) carries an indexing position number instead of a coordinate: the number is resolved through via , the word is rewritten to the resolved absolute coordinate, and the entry to ; a failed resolve reports an error and holds the last program position. Axes without an entry follow the modal term unchanged, so brands that never write the section (Fanuc/...) keep the exact legacy behavior. specifies which JSON paths contain axis values that need incremental-to-absolute conversion. Default: [[&quot;Parsing&quot;], [&quot;Parsing&quot;, &quot;G28&quot;]]; the Heidenhain bundle instead walks [&quot;Parsing&quot;, &quot;CC&quot;] for the klartext circle-center record (). All matching paths are converted against the same last program position — a nested record&#39;s words are distances from where the tool stands, exactly like the root&#39;s. Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally excluded — their Z/R incremental semantics differ from normal axes (R is relative to init level, Z is relative to R-point). Resolution is handled by inside each cycle syntax class, which runs before this syntax. Uses to determine which tags are motion axes. Traces backward nodes for last known to resolve incremental values. After this syntax, all axis values in the working paths are absolute — can consume them without incremental logic.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -105,7 +105,13 @@ by <a class="xref" href="Hi.NcParsers.LogicSyntaxs.PositioningSyntax.html">Posit
Per-word override: a block-root
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> section (written by
<a class="xref" href="Hi.NcParsers.EvaluationSyntaxs.Siemens.SiemensAcIcSyntax.html">SiemensAcIcSyntax</a> for the
Siemens per-word coordinate functions) beats the modal
Siemens per-word coordinate functions, and by the Heidenhain L / C /
CC / CYCL CALL POS parsers for the klartext I-prefixed words — see
<a class="xref" href="Hi.NcParsers.ParsingSyntaxs.Heidenhain.HeidenhainIncrementalAxisWordUtil.html">HeidenhainIncrementalAxisWordUtil</a>;
the CYCL CALL POS words never reach this syntax,
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.Heidenhain.HeidenhainCannedCycleSyntax.html">HeidenhainCannedCycleSyntax</a> resolves them on
the spot ahead of it)
beats the modal
term for the listed axes on this block only: an
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a> entry converts that word even
under G90, an <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Absolute">Absolute</a> entry skips it even
@@ -125,13 +131,18 @@ is rewritten to the resolved absolute coordinate, and the entry to
<a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Absolute">Absolute</a>; a failed resolve reports an error
and holds the last program position. Axes without an entry follow the
modal term unchanged, so brands that never write the section
(Fanuc/Heidenhain/...) keep the exact legacy behavior.
(Fanuc/...) keep the exact legacy behavior.
</p>
<p>
<a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html#Hi_NcParsers_LogicSyntaxs_IncrementalResolveSyntax_WorkingPathList">WorkingPathList</a> specifies which JSON paths
contain axis values that need incremental-to-absolute conversion.
Default: <code>[["Parsing"], ["Parsing", "G28"]]</code>.
All matching paths are converted.
Default: <code>[["Parsing"], ["Parsing", "G28"]]</code>; the Heidenhain
bundle instead walks <code>["Parsing", "CC"]</code> for the klartext
circle-center record
(<a class="xref" href="Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html#Hi_NcParsers_Syntaxs_HeidenhainSyntaxUtil_CcAwareIncrementalResolveSyntax">CcAwareIncrementalResolveSyntax</a>).
All matching paths are converted against the same last program
position — a nested record's words are distances from where the
tool stands, exactly like the root's.
</p>
<p>
Canned cycle paths (Parsing.G81, G82, G83, …) are intentionally
@@ -331,6 +342,26 @@ and the entry is rewritten to <code>Absolute</code>:
"PositioningOverride": { "X": "Absolute" },
"Parsing": { "X": -100 }
}</code></pre>
<p>The Heidenhain instance
(<a class="xref" href="Hi.NcParsers.Syntaxs.HeidenhainSyntaxUtil.html#Hi_NcParsers_Syntaxs_HeidenhainSyntaxUtil_CcAwareIncrementalResolveSyntax">CcAwareIncrementalResolveSyntax</a>)
on a klartext <code>CC IX+0 IY+11</code> block after the CC parser: the
nested record resolves against the last programmed position (the
tool stands at (10, 20)), so the center lands at (10, 31); the Parsing
root carries no axis word on a CC block and is untouched:
#Previous:</p>
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "X": 10, "Y": 20, "Z": 0 } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Positioning": { "Term": "G90", "Mode": "Absolute" },
"PositioningOverride": { "X": "Incremental", "Y": "Incremental" },
"Parsing": { "CC": { "X": 0, "Y": 11 } }
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"Positioning": { "Term": "G90", "Mode": "Absolute" },
"PositioningOverride": { "X": "Incremental", "Y": "Incremental" },
"Parsing": { "CC": { "X": 10, "Y": 31 } }
}</code></pre>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class IsoCoordinateOffsetSyntax | HiAPI-C# 2025 ">
<meta name="description" content="ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54G59.9 work coordinate offset. Reads G54/G55/.../G59.9 from , looks up offset Vec3d via dependencies (e.g. brand parameter table or ), composes into . Modal — active coordinate persists via backward lookback. Default coordinate ID is set by .">
<meta name="description" content="ISO/Fanuc/Mazak/Okuma/Syntec: resolves the G54G59.9 work coordinate offset and the Fanuc-family additional work coordinate systems (G54.1 Pn, also spelled G54 Pn). Reads G54/G55/.../G59.9 from and the captured Parsing.G54.1 = {P: n} object (written by for both spellings), which resolves to the coordinate id &amp;quot;G54.1P{n}&amp;quot; that the brand parameter tables map to #7001+ (). Looks the offset Vec3d up via the dependencies (brand parameter table or ) and composes it into . Modal — the active coordinate persists via backward lookback. Default coordinate ID is set by . A block that selects a work coordinate system nobody has configured is reported on that block (never on the modal re-query of the following blocks): Coord-WorkOffset--AdditionalZero when an additional system (G54.1 Pn) resolves to no entry or to (0, 0, 0) — the brand tables seed every P row with zero, hardware-faithfully, so a zero there is the &quot;never entered&quot; state, whereas a zero row of the standard series (G54G59 and the G59.1G59.9 extension alike) is a legitimate authoring convention and stays silent; Coord-WorkOffset--NoTableEntry when no provider resolves the id at all (e.g. a G59.x on a runner carrying no brand-neutral table beside its brand table); and Coord-WorkOffset--IndexUnresolved when the P word is not a positive integer (vacant variable, non-integer), in which case the active system is kept. A bare G54.1 without P is not this syntax&#39;s business: the parameterized capture consumes nothing without a parameter, the dotted number lands in Parsing.Flags where it is not a G54-series member, so the active system is kept and the unconsumed check reports the flag.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -97,13 +97,40 @@ Class IsoCoordinateOffsetSyntax
<dl><dt>Assembly</dt><dd>HiMech.dll</dd></dl>
</div>
<div class="markdown summary"><p>ISO/Fanuc/Mazak/Okuma/Syntec: resolves G54G59.9 work coordinate offset.
Reads G54/G55/.../G59.9 from <a class="xref" href="Hi.NcParsers.Keywords.IFlagsDef.html#Hi_NcParsers_Keywords_IFlagsDef_Flags">Flags</a>,
looks up offset Vec3d via <a class="xref" href="Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> dependencies
(e.g. brand parameter table or <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>),
composes into <a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a>.
Modal — active coordinate persists via backward lookback.
<div class="markdown summary"><p>ISO/Fanuc/Mazak/Okuma/Syntec: resolves the G54G59.9 work coordinate
offset and the Fanuc-family additional work coordinate systems
(<code>G54.1 Pn</code>, also spelled <code>G54 Pn</code>).
Reads G54/G55/.../G59.9 from <a class="xref" href="Hi.NcParsers.Keywords.IFlagsDef.html#Hi_NcParsers_Keywords_IFlagsDef_Flags">Flags</a> and the
captured <code>Parsing.G54.1 = {P: n}</code> object (written by
<a class="xref" href="Hi.NcParsers.Syntaxs.FanucSyntaxUtil.html#Hi_NcParsers_Syntaxs_FanucSyntaxUtil_G54p1Syntax">G54p1Syntax</a> for both spellings),
which resolves to the coordinate id <code>&quot;G54.1P{n}&quot;</code> that the brand
parameter tables map to <code>#7001+</code>
(<a class="xref" href="Hi.NcParsers.Dependencys.IsoCoordinateAddressMap.html">IsoCoordinateAddressMap</a>). Looks the offset Vec3d up via
the <a class="xref" href="Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> dependencies (brand parameter
table or <a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a>) and composes it into
<a class="xref" href="Hi.NcParsers.Keywords.ITransformationDef.html#Hi_NcParsers_Keywords_ITransformationDef_ProgramToMcTransform">ProgramToMcTransform</a>.
Modal — the active coordinate persists via backward lookback.
Default coordinate ID is set by <a class="xref" href="Hi.NcParsers.Initializers.StaticInitializer.html">StaticInitializer</a>.</p>
<p>
A block that selects a work coordinate system nobody has configured is
reported on that block (never on the modal re-query of the following
blocks): <code>Coord-WorkOffset--AdditionalZero</code> when an additional
system (<code>G54.1 Pn</code>) resolves to no entry or to (0, 0, 0) — the
brand tables seed every P row with zero, hardware-faithfully, so a zero
there is the "never entered" state, whereas a zero row of the standard
series (G54G59 and the G59.1G59.9 extension alike) is a legitimate
authoring convention and stays silent;
<code>Coord-WorkOffset--NoTableEntry</code> when no provider resolves the id
at all (e.g. a <code>G59.x</code> on a runner carrying no brand-neutral table
beside its brand table); and
<code>Coord-WorkOffset--IndexUnresolved</code> when the P word is not a
positive integer (vacant variable, non-integer), in which case the
active system is kept. A bare <code>G54.1</code> without P is not this
syntax's business: the parameterized capture consumes nothing without
a parameter, the dotted number lands in <code>Parsing.Flags</code> where it
is not a G54-series member, so the active system is kept and the
unconsumed check reports the flag.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -263,6 +290,49 @@ new-coord-flag branch:
}
]
}</code></pre>
An additional work coordinate system — the parsing capture of
<code>G54.1 P4</code> or <code>G54 P4</code> — with an
<a class="xref" href="Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a> providing
<code>G54.1P4 → (100, 50, -200)</code>: the captured object is consumed,
the coordinate id is the un-padded <code>"G54.1P4"</code> key the providers
share, and the translation is composed like any G5x:
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "G54.1": { "P": 4 } } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"CoordinateOffset": {
"CoordinateId": "G54.1P4",
"Offset_X": 100, "Offset_Y": 50, "Offset_Z": -200
},
"ProgramToMcTransform": [
{
"Source": "CoordinateOffset",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1]
}
]
}</code></pre>
A block carrying both a G5x flag and an additional-system capture
(illegal on a Fanuc — both are modal group 14 — but a parser must pick):
the additional system wins, and the flag is consumed with it so that
no stale G55 is left for the next syntaxes; the same table as above
serves the lookup:
#BeforeBuild:
<pre><code class="lang-csharp">{ "Parsing": { "Flags": ["G55"], "G54.1": { "P": 4 } } }</code></pre>
#AfterBuild:
<pre><code class="lang-csharp">{
"CoordinateOffset": {
"CoordinateId": "G54.1P4",
"Offset_X": 100, "Offset_Y": 50, "Offset_Z": -200
},
"ProgramToMcTransform": [
{
"Source": "CoordinateOffset",
"Kind": "Static",
"Mat4d": [1,0,0,0, 0,1,0,0, 0,0,1,0, 100,50,-200,1]
}
]
}</code></pre>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class MachineCoordSelectSyntax | HiAPI-C# 2025 ">
<meta name="description" content="Handles machine coordinate selection — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, the code is ignored per ISO standard. Defaults to ISO G53. Brands with additional one-shot machine-coordinate codes widen — the Siemens preset adds G153 and SUPA (both suppress every active frame for one block; in this pipeline all of those reduce to &quot;bypass the composed &quot;, which the ProgramXyz back-derivation below already models). The matched code is stamped verbatim into for bidirectional source recovery. Rotary words on the same block (e.g. SUPA G0 B0) are left to — same behavior as ISO G53, where rotary axes flow through the normal rotary path. Must be placed before in the syntax chain. When a supported code is active, this syntax consumes X/Y/Z from and writes directly, preventing from processing them as program coordinates.">
<meta name="description" content="Handles machine coordinate selection — non-modal, one-shot. The axis values (X/Y/Z) in the block are interpreted as machine coordinates, bypassing all work offsets, local coordinates, tool height compensation, and coordinate rotations. If G91 (incremental) is active, the code is ignored per ISO standard. A per-word incremental stamp on the block (block-root entry — Siemens SUPA Y=IC(-10), klartext L IY-10 M91) is a distance in the machine frame: the word is added to the previous machine position of that axis. Defaults to ISO G53. Brands with additional one-shot machine-coordinate codes widen — the Siemens preset adds G153 and SUPA (both suppress every active frame for one block; in this pipeline all of those reduce to &quot;bypass the composed &quot;, which the ProgramXyz back-derivation below already models). The matched code is stamped verbatim into for bidirectional source recovery. Rotary words on the same block (e.g. SUPA G0 B0) are left to — same behavior as ISO G53, where rotary axes flow through the normal rotary path. Must be placed before and in the syntax chain. When a supported code is active, this syntax consumes X/Y/Z from and writes directly, preventing from processing them as program coordinates — and, ahead of the resolve, reading a per-word incremental word raw instead of re-based into the program frame.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -101,7 +101,12 @@ Class MachineCoordSelectSyntax
The axis values (X/Y/Z) in the block are interpreted as machine
coordinates, bypassing all work offsets, local coordinates,
tool height compensation, and coordinate rotations.
If G91 (incremental) is active, the code is ignored per ISO standard.</p>
If G91 (incremental) is active, the code is ignored per ISO standard.
A per-word incremental stamp on the block (block-root
<a class="xref" href="Hi.NcParsers.Keywords.PositioningOverride.html">PositioningOverride</a> entry <a class="xref" href="Hi.NcParsers.Keywords.Positioning.html#Hi_NcParsers_Keywords_Positioning_Incremental">Incremental</a>
— Siemens <code>SUPA Y=IC(-10)</code>, klartext <code>L IY-10 M91</code>) is a
distance in the <b>machine</b> frame: the word is added to the
previous machine position of that axis.</p>
<p>
Defaults to ISO <code>G53</code>. Brands with additional one-shot
machine-coordinate codes widen <a class="xref" href="Hi.NcParsers.LogicSyntaxs.MachineCoordSelectSyntax.html#Hi_NcParsers_LogicSyntaxs_MachineCoordSelectSyntax_SupportedCodes">SupportedCodes</a> — the
@@ -116,12 +121,14 @@ Rotary words on the same block (e.g. <code>SUPA G0 B0</code>) are left to
axes flow through the normal rotary path.
</p>
<p>
Must be placed <b>before</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> in the
syntax chain. When a supported code is active, this syntax consumes
X/Y/Z from <a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> and writes
Must be placed <b>before</b> <a class="xref" href="Hi.NcParsers.LogicSyntaxs.IncrementalResolveSyntax.html">IncrementalResolveSyntax</a>
and <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> in the syntax chain. When a
supported code is active, this syntax consumes X/Y/Z from
<a class="xref" href="Hi.NcParsers.Keywords.IParsingDef.html#Hi_NcParsers_Keywords_IParsingDef_Parsing">Parsing</a> and writes
<a class="xref" href="Hi.NcParsers.Keywords.IMachineCoordinateStateDef.html#Hi_NcParsers_Keywords_IMachineCoordinateStateDef_MachineCoordinateState">MachineCoordinateState</a> directly,
preventing <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> from processing them
as program coordinates.
preventing <a class="xref" href="Hi.NcParsers.LogicSyntaxs.ProgramXyzSyntax.html">ProgramXyzSyntax</a> from processing them as
program coordinates — and, ahead of the resolve, reading a per-word
incremental word raw instead of re-based into the program frame.
</p>
</div>
<div class="markdown conceptual"></div>
@@ -274,6 +281,26 @@ the motion-mode flag is claimed into the modal <code>MotionState</code>
"MotionState": { "Term": "G00" },
"MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "SUPA" }
}</code></pre>
<p>Per-word incremental word on the machine-coordinate block (klartext
<code>L IY-10 M91</code>, Siemens <code>SUPA Y=IC(-10)</code>) — a distance in the
MACHINE frame: added to the previous machine position, never re-based
through the program frame. This is why the syntax sits ahead of
<code>IncrementalResolveSyntax</code> in every brand list; the override
section stays on the block (one-shot, nobody consumes it):
#Previous:</p>
<pre><code class="lang-csharp">{ "MachineCoordinateState": { "X": 100, "Y": 50, "Z": -200 } }</code></pre>
<p>#BeforeBuild:</p>
<pre><code class="lang-csharp">{
"Parsing": { "Flags": ["G53"], "Y": -10 },
"PositioningOverride": { "Y": "Incremental" }
}</code></pre>
<p>#AfterBuild:</p>
<pre><code class="lang-csharp">{
"PositioningOverride": { "Y": "Incremental" },
"MachineCoordinateState": { "X": 100, "Y": 40, "Z": -200 },
"ProgramXyz": { "X": 100, "Y": 40, "Z": -200 },
"MotionEvent": { "Form": "McLinear", "IsRapid": true, "Term": "G53" }
}</code></pre>

Some files were not shown because too many files have changed in this diff Show More