2025-09-06 21:25:33 +08:00

1542 lines
42 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class NcEnv | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class NcEnv | HiAPI-C# 2025 ">
<meta name="description" content="Represents the numerical control environment containing configuration for CNC operations.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="Hi.Numerical.NcEnv">
<h1 id="Hi_Numerical_NcEnv" data-uid="Hi.Numerical.NcEnv" class="text-break">
Class NcEnv
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Numerical.html">Numerical</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiUniNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Represents the numerical control environment containing configuration for CNC operations.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class NcEnv : 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">NcEnv</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<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 class="section" id="constructors">Constructors
</h2>
<a id="Hi_Numerical_NcEnv__ctor_" data-uid="Hi.Numerical.NcEnv.#ctor*"></a>
<h3 id="Hi_Numerical_NcEnv__ctor_Hi_Numerical_CncBrand_" data-uid="Hi.Numerical.NcEnv.#ctor(Hi.Numerical.CncBrand)">
NcEnv(CncBrand)
</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 NcEnv(CncBrand cncBrand = CncBrand.Fanuc)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>cncBrand</code> <a class="xref" href="Hi.Numerical.CncBrand.html">CncBrand</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv__ctor_" data-uid="Hi.Numerical.NcEnv.#ctor*"></a>
<h3 id="Hi_Numerical_NcEnv__ctor_System_Xml_Linq_XElement_System_String_System_String_" data-uid="Hi.Numerical.NcEnv.#ctor(System.Xml.Linq.XElement,System.String,System.String)">
NcEnv(XElement, string, string)
</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 NcEnv(XElement src, string baseDirectory, string relFile)</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</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 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.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_Numerical_NcEnv_AttacherAtMcZeroOnTableCoordinate_" data-uid="Hi.Numerical.NcEnv.AttacherAtMcZeroOnTableCoordinate*"></a>
<h3 id="Hi_Numerical_NcEnv_AttacherAtMcZeroOnTableCoordinate" data-uid="Hi.Numerical.NcEnv.AttacherAtMcZeroOnTableCoordinate">
AttacherAtMcZeroOnTableCoordinate
</h3>
<div class="markdown level1 summary"><p>Gets the attacher position at machine zero on table coordinate.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d AttacherAtMcZeroOnTableCoordinate { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_CncBrand_" data-uid="Hi.Numerical.NcEnv.CncBrand*"></a>
<h3 id="Hi_Numerical_NcEnv_CncBrand" data-uid="Hi.Numerical.NcEnv.CncBrand">
CncBrand
</h3>
<div class="markdown level1 summary"><p>Gets or sets the CNC brand/controller type.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public CncBrand CncBrand { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.CncBrand.html">CncBrand</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_CommentSymbol_" data-uid="Hi.Numerical.NcEnv.CommentSymbol*"></a>
<h3 id="Hi_Numerical_NcEnv_CommentSymbol" data-uid="Hi.Numerical.NcEnv.CommentSymbol">
CommentSymbol
</h3>
<div class="markdown level1 summary"><p>Gets the comment symbol used by the current CNC controller.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string CommentSymbol { 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_Numerical_NcEnv_ConfigurationTable_" data-uid="Hi.Numerical.NcEnv.ConfigurationTable*"></a>
<h3 id="Hi_Numerical_NcEnv_ConfigurationTable" data-uid="Hi.Numerical.NcEnv.ConfigurationTable">
ConfigurationTable
</h3>
<div class="markdown level1 summary"><p>Gets a dictionary of CNC configuration parameters used by the system.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;string, int&gt; ConfigurationTable { 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.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_CoordinateConverter_" data-uid="Hi.Numerical.NcEnv.CoordinateConverter*"></a>
<h3 id="Hi_Numerical_NcEnv_CoordinateConverter" data-uid="Hi.Numerical.NcEnv.CoordinateConverter">
CoordinateConverter
</h3>
<div class="markdown level1 summary"><p>Gets or sets the coordinate converter used for transformations between different coordinate systems.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ICoordinateConverter CoordinateConverter { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.Xyzabc.ICoordinateConverter.html">ICoordinateConverter</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_EnableArcCornerRadiusCompensation_" data-uid="Hi.Numerical.NcEnv.EnableArcCornerRadiusCompensation*"></a>
<h3 id="Hi_Numerical_NcEnv_EnableArcCornerRadiusCompensation" data-uid="Hi.Numerical.NcEnv.EnableArcCornerRadiusCompensation">
EnableArcCornerRadiusCompensation
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether arc corner radius compensation is enabled.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableArcCornerRadiusCompensation { 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_Numerical_NcEnv_EnableIntegerShrinkOnPositionCommand_" data-uid="Hi.Numerical.NcEnv.EnableIntegerShrinkOnPositionCommand*"></a>
<h3 id="Hi_Numerical_NcEnv_EnableIntegerShrinkOnPositionCommand" data-uid="Hi.Numerical.NcEnv.EnableIntegerShrinkOnPositionCommand">
EnableIntegerShrinkOnPositionCommand
</h3>
<div class="markdown level1 summary"><p>Gets whether integer shrinking is enabled for position commands based on the CNC brand.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableIntegerShrinkOnPositionCommand { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_EnableShortestRotary_" data-uid="Hi.Numerical.NcEnv.EnableShortestRotary*"></a>
<h3 id="Hi_Numerical_NcEnv_EnableShortestRotary" data-uid="Hi.Numerical.NcEnv.EnableShortestRotary">
EnableShortestRotary
</h3>
<div class="markdown level1 summary"><p>Enables shortest rotary path movement.
This option does not affect Heidenhain controllers.
For Heidenhain controllers, see <span class="xref">Hi.UniNc.Heidenhain.IHeidenhainShortestRotaryPathEnabled</span>,
<span class="xref">Hi.UniNc.Heidenhain.HeidenhainM126</span> and <span class="xref">Hi.UniNc.Heidenhain.HeidenhainM127</span>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableShortestRotary { 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_Numerical_NcEnv_FanucPara5003_" data-uid="Hi.Numerical.NcEnv.FanucPara5003*"></a>
<h3 id="Hi_Numerical_NcEnv_FanucPara5003" data-uid="Hi.Numerical.NcEnv.FanucPara5003">
FanucPara5003
</h3>
<div class="markdown level1 summary"><p>Fanuc 5003.
These bits are used to specify the type of startup/cancellation of tool radius - tool nose radius compensation.
0: type A; 1: type B; 2,3: type C.
Assume always zero.</p>
<p>Type A: A compensation vector perpendicular to the block next to the startup block or the block preceding the cancellation block is output.
Type B: A compensation vector perpendicular to the startup block or cancellation block and an intersection vector are output.
Type C: When the startup block or cancellation block specifies no movement operation, the tool is shifted by the cutter compensation amount in a direction perpendicular to the block next to the startup or the block before cancellation block.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public byte FanucPara5003 { 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.byte">byte</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_HeidenhainDatumPresetTable_" data-uid="Hi.Numerical.NcEnv.HeidenhainDatumPresetTable*"></a>
<h3 id="Hi_Numerical_NcEnv_HeidenhainDatumPresetTable" data-uid="Hi.Numerical.NcEnv.HeidenhainDatumPresetTable">
HeidenhainDatumPresetTable
</h3>
<div class="markdown level1 summary"><p>For Heidenhain CYCL DEF 247 Datum Preset.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;int, Vec3d&gt; HeidenhainDatumPresetTable { 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.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a>&gt;</dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_Numerical_NcEnv_HeidenhainDatumPresetTable_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Datum Preset seems an older settings in heidenhain manual relative to Datum Shift.</p>
</div>
<a id="Hi_Numerical_NcEnv_HeidenhainDatumShiftTable_" data-uid="Hi.Numerical.NcEnv.HeidenhainDatumShiftTable*"></a>
<h3 id="Hi_Numerical_NcEnv_HeidenhainDatumShiftTable" data-uid="Hi.Numerical.NcEnv.HeidenhainDatumShiftTable">
HeidenhainDatumShiftTable
</h3>
<div class="markdown level1 summary"><p>For Heidenhain CYCL DEF 7 Datum Shift.
Also called Datum table in heidenhain manual.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;int, Vec3d&gt; HeidenhainDatumShiftTable { 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.collections.generic.dictionary-2">Dictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a>&gt;</dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_Numerical_NcEnv_HeidenhainDatumShiftTable_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>Datum Preset seems an older settings in heidenhain manual relative to Datum Shift.</p>
</div>
<a id="Hi_Numerical_NcEnv_HeidenhainMasterAxisChar_" data-uid="Hi.Numerical.NcEnv.HeidenhainMasterAxisChar*"></a>
<h3 id="Hi_Numerical_NcEnv_HeidenhainMasterAxisChar" data-uid="Hi.Numerical.NcEnv.HeidenhainMasterAxisChar">
HeidenhainMasterAxisChar
</h3>
<div class="markdown level1 summary"><p>Gets or sets the Heidenhain master rotary axis as a character (A, B, or C).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public char HeidenhainMasterAxisChar { 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.char">char</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_HeidenhainMasterAxisDir_" data-uid="Hi.Numerical.NcEnv.HeidenhainMasterAxisDir*"></a>
<h3 id="Hi_Numerical_NcEnv_HeidenhainMasterAxisDir" data-uid="Hi.Numerical.NcEnv.HeidenhainMasterAxisDir">
HeidenhainMasterAxisDir
</h3>
<div class="markdown level1 summary"><p>The master axis determines the behaviour of SEQ command.
ex. PLANE SPATIAL SPA-77.516 SPB+0 SPC-10.365 STAY SEQ-TABLE ROT
The master axis is the 1st rotary axis from the tool, or the last rotary axis from the table(depending on the machine configuration).
SEQ+ positions the master axis so that it assumes a positive angle.
See: TNC 640 | User's ManualDIN/ISO Programming | 1/2015 p432</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int HeidenhainMasterAxisDir { 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_Numerical_NcEnv_HomeMc_" data-uid="Hi.Numerical.NcEnv.HomeMc*"></a>
<h3 id="Hi_Numerical_NcEnv_HomeMc" data-uid="Hi.Numerical.NcEnv.HomeMc">
HomeMc
</h3>
<div class="markdown level1 summary"><p>Home machine coordinate.
First reference position.
The position may not equal to machine zero in real Fanuc controller.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d HomeMc { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_IsAxisAExisted_" data-uid="Hi.Numerical.NcEnv.IsAxisAExisted*"></a>
<h3 id="Hi_Numerical_NcEnv_IsAxisAExisted" data-uid="Hi.Numerical.NcEnv.IsAxisAExisted">
IsAxisAExisted
</h3>
<div class="markdown level1 summary"><p>Gets whether the A axis exists in the machine configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsAxisAExisted { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_IsAxisBExisted_" data-uid="Hi.Numerical.NcEnv.IsAxisBExisted*"></a>
<h3 id="Hi_Numerical_NcEnv_IsAxisBExisted" data-uid="Hi.Numerical.NcEnv.IsAxisBExisted">
IsAxisBExisted
</h3>
<div class="markdown level1 summary"><p>Gets whether the B axis exists in the machine configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsAxisBExisted { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_IsAxisCExisted_" data-uid="Hi.Numerical.NcEnv.IsAxisCExisted*"></a>
<h3 id="Hi_Numerical_NcEnv_IsAxisCExisted" data-uid="Hi.Numerical.NcEnv.IsAxisCExisted">
IsAxisCExisted
</h3>
<div class="markdown level1 summary"><p>Gets whether the C axis exists in the machine configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsAxisCExisted { 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.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_IsIdealOffsetDependentOnToolHouse_" data-uid="Hi.Numerical.NcEnv.IsIdealOffsetDependentOnToolHouse*"></a>
<h3 id="Hi_Numerical_NcEnv_IsIdealOffsetDependentOnToolHouse" data-uid="Hi.Numerical.NcEnv.IsIdealOffsetDependentOnToolHouse">
IsIdealOffsetDependentOnToolHouse
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether the ideal offset depends on tool house position.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsIdealOffsetDependentOnToolHouse { 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_Numerical_NcEnv_IsoCoordinateTable_" data-uid="Hi.Numerical.NcEnv.IsoCoordinateTable*"></a>
<h3 id="Hi_Numerical_NcEnv_IsoCoordinateTable" data-uid="Hi.Numerical.NcEnv.IsoCoordinateTable">
IsoCoordinateTable
</h3>
<div class="markdown level1 summary"><p>ISO coordinate table. i.e., CoordinateTable For G54 series.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IsoCoordinateTable IsoCoordinateTable { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.IsoCoordinateTable.html">IsoCoordinateTable</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_MaxRotarySpeedABC_degds_" data-uid="Hi.Numerical.NcEnv.MaxRotarySpeedABC_degds*"></a>
<h3 id="Hi_Numerical_NcEnv_MaxRotarySpeedABC_degds" data-uid="Hi.Numerical.NcEnv.MaxRotarySpeedABC_degds">
MaxRotarySpeedABC_degds
</h3>
<div class="markdown level1 summary"><p>For safety reason, internal use only.
Maximum rotary speed in degds.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d MaxRotarySpeedABC_degds { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_MaxRotarySpeedABC_radds_" data-uid="Hi.Numerical.NcEnv.MaxRotarySpeedABC_radds*"></a>
<h3 id="Hi_Numerical_NcEnv_MaxRotarySpeedABC_radds" data-uid="Hi.Numerical.NcEnv.MaxRotarySpeedABC_radds">
MaxRotarySpeedABC_radds
</h3>
<div class="markdown level1 summary"><p>Maximum rotary speed in rad/s.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d MaxRotarySpeedABC_radds { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_MaxSpindleSpeed_rpm_" data-uid="Hi.Numerical.NcEnv.MaxSpindleSpeed_rpm*"></a>
<h3 id="Hi_Numerical_NcEnv_MaxSpindleSpeed_rpm" data-uid="Hi.Numerical.NcEnv.MaxSpindleSpeed_rpm">
MaxSpindleSpeed_rpm
</h3>
<div class="markdown level1 summary"><p>Gets or sets the maximum spindle speed in revolutions per minute.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double MaxSpindleSpeed_rpm { 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_Numerical_NcEnv_MillingToolOffsetTable_" data-uid="Hi.Numerical.NcEnv.MillingToolOffsetTable*"></a>
<h3 id="Hi_Numerical_NcEnv_MillingToolOffsetTable" data-uid="Hi.Numerical.NcEnv.MillingToolOffsetTable">
MillingToolOffsetTable
</h3>
<div class="markdown level1 summary"><p>Gets or sets the milling tool offset table for tool compensation.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MillingToolOffsetTable MillingToolOffsetTable { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.MillingToolOffsetTable.html">MillingToolOffsetTable</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_RapidFeedrate_mmdmin_" data-uid="Hi.Numerical.NcEnv.RapidFeedrate_mmdmin*"></a>
<h3 id="Hi_Numerical_NcEnv_RapidFeedrate_mmdmin" data-uid="Hi.Numerical.NcEnv.RapidFeedrate_mmdmin">
RapidFeedrate_mmdmin
</h3>
<div class="markdown level1 summary"><p>Rapid move speed in mm/min.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double RapidFeedrate_mmdmin { 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_Numerical_NcEnv_RapidFeedrate_mmds_" data-uid="Hi.Numerical.NcEnv.RapidFeedrate_mmds*"></a>
<h3 id="Hi_Numerical_NcEnv_RapidFeedrate_mmds" data-uid="Hi.Numerical.NcEnv.RapidFeedrate_mmds">
RapidFeedrate_mmds
</h3>
<div class="markdown level1 summary"><p>Rapid move speed in mm/s.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double RapidFeedrate_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_Numerical_NcEnv_RefNcLineOnInit_" data-uid="Hi.Numerical.NcEnv.RefNcLineOnInit*"></a>
<h3 id="Hi_Numerical_NcEnv_RefNcLineOnInit" data-uid="Hi.Numerical.NcEnv.RefNcLineOnInit">
RefNcLineOnInit
</h3>
<div class="markdown level1 summary"><p>Gets or sets the reference NC line used during initialization.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NcLine RefNcLineOnInit { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.NcLine.html">NcLine</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_SetToolHeightCompensationOnFeatureNormal_" data-uid="Hi.Numerical.NcEnv.SetToolHeightCompensationOnFeatureNormal*"></a>
<h3 id="Hi_Numerical_NcEnv_SetToolHeightCompensationOnFeatureNormal" data-uid="Hi.Numerical.NcEnv.SetToolHeightCompensationOnFeatureNormal">
SetToolHeightCompensationOnFeatureNormal
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether tool height compensation should be applied based on feature normal direction.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool SetToolHeightCompensationOnFeatureNormal { 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_Numerical_NcEnv_StrokeLimitAbc_rad_" data-uid="Hi.Numerical.NcEnv.StrokeLimitAbc_rad*"></a>
<h3 id="Hi_Numerical_NcEnv_StrokeLimitAbc_rad" data-uid="Hi.Numerical.NcEnv.StrokeLimitAbc_rad">
StrokeLimitAbc_rad
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ABC axis stroke limits in radians.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Box3d StrokeLimitAbc_rad { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Box3d.html">Box3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_StrokeLimitXyz_mm_" data-uid="Hi.Numerical.NcEnv.StrokeLimitXyz_mm*"></a>
<h3 id="Hi_Numerical_NcEnv_StrokeLimitXyz_mm" data-uid="Hi.Numerical.NcEnv.StrokeLimitXyz_mm">
StrokeLimitXyz_mm
</h3>
<div class="markdown level1 summary"><p>Gets or sets the XYZ axis stroke limits in millimeters.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Box3d StrokeLimitXyz_mm { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Box3d.html">Box3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_ToolingMcAbc_deg_" data-uid="Hi.Numerical.NcEnv.ToolingMcAbc_deg*"></a>
<h3 id="Hi_Numerical_NcEnv_ToolingMcAbc_deg" data-uid="Hi.Numerical.NcEnv.ToolingMcAbc_deg">
ToolingMcAbc_deg
</h3>
<div class="markdown level1 summary"><p>Gets or sets the rotary machine coordinate for tooling operations.
Defaults to HomeMc if not explicitly set.
Set to NaN if tooling motion not apply the axis motion.
Unit is degree.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d ToolingMcAbc_deg { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_ToolingMcAbc_rad_" data-uid="Hi.Numerical.NcEnv.ToolingMcAbc_rad*"></a>
<h3 id="Hi_Numerical_NcEnv_ToolingMcAbc_rad" data-uid="Hi.Numerical.NcEnv.ToolingMcAbc_rad">
ToolingMcAbc_rad
</h3>
<div class="markdown level1 summary"><p>Gets or sets the rotary machine coordinate for tooling operations.
Defaults to HomeMc if not explicitly set.
Set to NaN if tooling motion not apply the axis motion.
Unit is radian.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d ToolingMcAbc_rad { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_ToolingMcXyz_" data-uid="Hi.Numerical.NcEnv.ToolingMcXyz*"></a>
<h3 id="Hi_Numerical_NcEnv_ToolingMcXyz" data-uid="Hi.Numerical.NcEnv.ToolingMcXyz">
ToolingMcXyz
</h3>
<div class="markdown level1 summary"><p>Gets or sets the translation machine coordinate for tooling operations.
Defaults to HomeMc if not explicitly set.
Set to NaN if tooling motion not apply the axis motion.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Vec3d ToolingMcXyz { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_ToolingTime_" data-uid="Hi.Numerical.NcEnv.ToolingTime*"></a>
<h3 id="Hi_Numerical_NcEnv_ToolingTime" data-uid="Hi.Numerical.NcEnv.ToolingTime">
ToolingTime
</h3>
<div class="markdown level1 summary"><p>Tool changing duration in sec.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TimeSpan ToolingTime { 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.timespan">TimeSpan</a></dt>
<dd></dd>
</dl>
<a id="Hi_Numerical_NcEnv_XName_" data-uid="Hi.Numerical.NcEnv.XName*"></a>
<h3 id="Hi_Numerical_NcEnv_XName" data-uid="Hi.Numerical.NcEnv.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_Numerical_NcEnv_CheckStrokeLimit_" data-uid="Hi.Numerical.NcEnv.CheckStrokeLimit*"></a>
<h3 id="Hi_Numerical_NcEnv_CheckStrokeLimit_Hi_Geom_DVec3d_Hi_Common_Messages_IMessageKit_" data-uid="Hi.Numerical.NcEnv.CheckStrokeLimit(Hi.Geom.DVec3d,Hi.Common.Messages.IMessageKit)">
CheckStrokeLimit(DVec3d, IMessageKit)
</h3>
<div class="markdown level1 summary"><p>Check stroke limit.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool CheckStrokeLimit(DVec3d mcXyzabc_mm_rad, IMessageKit messageKit)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>mcXyzabc_mm_rad</code> <a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
<dd><p>Machine coordinates in mm and radians.</p>
</dd>
<dt><code>messageKit</code> <a class="xref" href="Hi.Common.Messages.IMessageKit.html">IMessageKit</a></dt>
<dd><p>Message kit for error reporting.</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>Is under stroke limit.</p>
</dd>
</dl>
<a id="Hi_Numerical_NcEnv_IsAxisExisted_" data-uid="Hi.Numerical.NcEnv.IsAxisExisted*"></a>
<h3 id="Hi_Numerical_NcEnv_IsAxisExisted_System_Int32_" data-uid="Hi.Numerical.NcEnv.IsAxisExisted(System.Int32)">
IsAxisExisted(int)
</h3>
<div class="markdown level1 summary"><p>Determines whether a specific rotary axis exists in the machine configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsAxisExisted(int dir)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>dir</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd><p>The direction index (0=A, 1=B, 2=C).</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 specified axis exists; otherwise, false.</p>
</dd>
</dl>
<a id="Hi_Numerical_NcEnv_MakeXmlSource_" data-uid="Hi.Numerical.NcEnv.MakeXmlSource*"></a>
<h3 id="Hi_Numerical_NcEnv_MakeXmlSource_System_String_System_String_System_Boolean_" data-uid="Hi.Numerical.NcEnv.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_Numerical_NcEnv_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>
</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>