This repository has been archived on 2026-10-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
HiNC-2025-win-desktop-Deploy/App/wwwroot/HiAPI-docsite/api/Hi.MachiningProcs.LocalProjectService.html
T
2026-09-09 17:35:23 +08:00

3944 lines
128 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class LocalProjectService | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class LocalProjectService | HiAPI-C# 2025 ">
<meta name="description" content="Root(Local) project service. Apply absolute file path.">
<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.MachiningProcs.LocalProjectService">
<h1 id="Hi_MachiningProcs_LocalProjectService" data-uid="Hi.MachiningProcs.LocalProjectService" class="text-break">
Class LocalProjectService
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.MachiningProcs.html">MachiningProcs</a></dd></dl>
<dl><dt>Assembly</dt><dd>HiNc.dll</dd></dl>
</div>
<div class="markdown summary"><p>Root(Local) project service.
Apply absolute file path.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class LocalProjectService : IProjectService, IMachiningProjectGetter, IMachiningService, IGetMachiningEquipment, IStepPropertyAccessHost, IDisposable</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">LocalProjectService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="Hi.MachiningProcs.IProjectService.html">IProjectService</a></div>
<div><a class="xref" href="Hi.MachiningProcs.IMachiningProjectGetter.html">IMachiningProjectGetter</a></div>
<div><a class="xref" href="Hi.MachiningSteps.IMachiningService.html">IMachiningService</a></div>
<div><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.IGetMachiningEquipment.html">IGetMachiningEquipment</a></div>
<div><a class="xref" href="Hi.MachiningSteps.IStepPropertyAccessHost.html">IStepPropertyAccessHost</a></div>
<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.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_MachiningProcs_LocalProjectService_remarks">Remarks</h2>
<div class="markdown level0 remarks"><p><a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> handles the runtime data and cache generally not requires configuration IO.
Compare to <a class="xref" href="Hi.MachiningProcs.MachiningProject.html">MachiningProject</a>, <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a> also handles events that does not reset on the <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningProject">MachiningProject</a> been reloaded.</p>
</div>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="Hi_MachiningProcs_LocalProjectService__ctor_" data-uid="Hi.MachiningProcs.LocalProjectService.#ctor*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService__ctor_Microsoft_Extensions_Logging_ILogger_Hi_MachiningProcs_LocalProjectService__" data-uid="Hi.MachiningProcs.LocalProjectService.#ctor(Microsoft.Extensions.Logging.ILogger{Hi.MachiningProcs.LocalProjectService})">
LocalProjectService(ILogger&lt;LocalProjectService&gt;)
</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 LocalProjectService(ILogger&lt;LocalProjectService&gt; logger = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>logger</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger-1">ILogger</a>&lt;<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a>&gt;</dt>
<dd><p>Optional logger instance.</p>
</dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="Hi_MachiningProcs_LocalProjectService_ActiveNcRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.ActiveNcRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ActiveNcRunner" data-uid="Hi.MachiningProcs.LocalProjectService.ActiveNcRunner">
ActiveNcRunner
</h3>
<div class="markdown level1 summary"><p>Gets the active NC runner based on <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EnableSoftNcRunner">EnableSoftNcRunner</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public INcRunner ActiveNcRunner { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.INcRunner.html">INcRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_BaseDirectory_" data-uid="Hi.MachiningProcs.LocalProjectService.BaseDirectory*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_BaseDirectory" data-uid="Hi.MachiningProcs.LocalProjectService.BaseDirectory">
BaseDirectory
</h3>
<div class="markdown level1 summary"><p>Gets the project base directory (relative-path root).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string BaseDirectory { 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_MachiningProcs_LocalProjectService_BoundSelectorHost_" data-uid="Hi.MachiningProcs.LocalProjectService.BoundSelectorHost*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_BoundSelectorHost" data-uid="Hi.MachiningProcs.LocalProjectService.BoundSelectorHost">
BoundSelectorHost
</h3>
<div class="markdown level1 summary"><p>Gets the bound selector host for managing selection boundaries.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public BoundSelectorHost BoundSelectorHost { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.StepSelectionUtils.BoundSelectorHost.html">BoundSelectorHost</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ClRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.ClRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ClRunner" data-uid="Hi.MachiningProcs.LocalProjectService.ClRunner">
ClRunner
</h3>
<div class="markdown level1 summary"><p>Gets the NX-CL (CLSF) runner of the project
(<code>NxClRunner</code>); <code>null</code> when there is no project.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public INcRunner ClRunner { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.INcRunner.html">INcRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ClStrip_" data-uid="Hi.MachiningProcs.LocalProjectService.ClStrip*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ClStrip" data-uid="Hi.MachiningProcs.LocalProjectService.ClStrip">
ClStrip
</h3>
<div class="markdown level1 summary"><p>Gets the cutter location strip containing the machining steps.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ClStrip ClStrip { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.CutterLocations.ClStrips.ClStrip.html">ClStrip</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_CsvRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.CsvRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_CsvRunner" data-uid="Hi.MachiningProcs.LocalProjectService.CsvRunner">
CsvRunner
</h3>
<div class="markdown level1 summary"><p>Gets the CSV runner — the CSV suit's pipeline
(<code>GeneralCsvRunner</code>); <code>null</code> when there is no project.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public INcRunner CsvRunner { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.INcRunner.html">INcRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_DictionaryColorGuide_" data-uid="Hi.MachiningProcs.LocalProjectService.DictionaryColorGuide*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_DictionaryColorGuide" data-uid="Hi.MachiningProcs.LocalProjectService.DictionaryColorGuide">
DictionaryColorGuide
</h3>
<div class="markdown level1 summary"><p>Gets the color guide for dictionary-based coloring.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DictionaryColorGuide DictionaryColorGuide { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Coloring.DictionaryColorGuide.html">DictionaryColorGuide</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_EnablePauseOnFailure_" data-uid="Hi.MachiningProcs.LocalProjectService.EnablePauseOnFailure*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EnablePauseOnFailure" data-uid="Hi.MachiningProcs.LocalProjectService.EnablePauseOnFailure">
EnablePauseOnFailure
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether to pause execution on failure.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnablePauseOnFailure { 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_MachiningProcs_LocalProjectService_EnableSoftNcRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.EnableSoftNcRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EnableSoftNcRunner" data-uid="Hi.MachiningProcs.LocalProjectService.EnableSoftNcRunner">
EnableSoftNcRunner
</h3>
<div class="markdown level1 summary"><p>Switches between <a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> and the legacy
<a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner.html">HardNcRunner</a>. Default <code>true</code> (2026-07-17):
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SoftNcRunner">SoftNcRunner</a> is the flagship NC pipeline; set
<code>false</code> to fall back to <a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner.html">HardNcRunner</a> for the
features that still depend on it (e.g. <span class="xref">Hi.NcOpt.NcOptProc</span>
optimization reads <a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner.html#Hi_Numerical_FilePlayers_HardNcRunner_NcLines">NcLines</a>).
Will be removed when <a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner.html">HardNcRunner</a> is fully replaced.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableSoftNcRunner { 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_MachiningProcs_LocalProjectService_EnableStrokeLimitCheck_" data-uid="Hi.MachiningProcs.LocalProjectService.EnableStrokeLimitCheck*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EnableStrokeLimitCheck" data-uid="Hi.MachiningProcs.LocalProjectService.EnableStrokeLimitCheck">
EnableStrokeLimitCheck
</h3>
<div class="markdown level1 summary"><p>Gets or sets whether stroke limit checking is enabled.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool EnableStrokeLimitCheck { 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_MachiningProcs_LocalProjectService_Fixture_" data-uid="Hi.MachiningProcs.LocalProjectService.Fixture*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Fixture" data-uid="Hi.MachiningProcs.LocalProjectService.Fixture">
Fixture
</h3>
<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>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Fixture Fixture { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Fixtures.Fixture.html">Fixture</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_Global_" data-uid="Hi.MachiningProcs.LocalProjectService.Global*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Global" data-uid="Hi.MachiningProcs.LocalProjectService.Global">
Global
</h3>
<div class="markdown level1 summary"><p>global variable for <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SessionShell">SessionShell</a>.
Not save on XML.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Dictionary&lt;object, object&gt; Global { 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.collections.generic.dictionary-2">Dictionary</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.object">object</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_InspectingKey_" data-uid="Hi.MachiningProcs.LocalProjectService.InspectingKey*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_InspectingKey" data-uid="Hi.MachiningProcs.LocalProjectService.InspectingKey">
InspectingKey
</h3>
<div class="markdown level1 summary"><p>Gets or sets the current inspecting key for visualization.
When set, updates the inspecting quantity function.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string InspectingKey { 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_MachiningProcs_LocalProjectService_InspectingQuantityFunc_" data-uid="Hi.MachiningProcs.LocalProjectService.InspectingQuantityFunc*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_InspectingQuantityFunc" data-uid="Hi.MachiningProcs.LocalProjectService.InspectingQuantityFunc">
InspectingQuantityFunc
</h3>
<div class="markdown level1 summary"><p>Gets the function that retrieves the quantity value for the current inspecting key.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Func&lt;MachiningStep, double?&gt; InspectingQuantityFunc { 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.func-2">Func</a>&lt;<a class="xref" href="Hi.MachiningSteps.MachiningStep.html">MachiningStep</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>?&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_IsCollisionDetectionEnabled_" data-uid="Hi.MachiningProcs.LocalProjectService.IsCollisionDetectionEnabled*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_IsCollisionDetectionEnabled" data-uid="Hi.MachiningProcs.LocalProjectService.IsCollisionDetectionEnabled">
IsCollisionDetectionEnabled
</h3>
<div class="markdown level1 summary"><p>Gets whether collision detection is currently enabled.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool IsCollisionDetectionEnabled { 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_MachiningProcs_LocalProjectService_LastMillingParaTrainResult_" data-uid="Hi.MachiningProcs.LocalProjectService.LastMillingParaTrainResult*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_LastMillingParaTrainResult" data-uid="Hi.MachiningProcs.LocalProjectService.LastMillingParaTrainResult">
LastMillingParaTrainResult
</h3>
<div class="markdown level1 summary"><p>Snapshot of the most recent <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_TrainMillingPara_Hi_MillingForces_Fittings_SampleFlag_System_Boolean_System_Double_System_String_System_Threading_CancellationToken_Hi_MillingForces_Fittings_ICuttingPara_System_IProgress_Hi_Common_Messages_IMessage__">TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress&lt;IMessage&gt;)</a> /
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ReTrainMillingPara_Hi_MillingForces_Fittings_SampleFlag_System_Double_System_String_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__">ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress&lt;IMessage&gt;)</a> outcome — sampleFlags, correlation R,
filtered sample count, output file and the built parameter's XML — so a
caller (e.g. the webservice) can read the training result without
re-opening the output <code>.mp</code> file. Service lifetime, last-wins;
null until the first training call completes. Deliberately not cleared
by <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ResetRuntime_System_IProgress_Hi_Common_Messages_IMessage__">ResetRuntime(IProgress&lt;IMessage&gt;)</a> so the result stays readable after a
post-run reset.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MillingParaTrainResult LastMillingParaTrainResult { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MillingForces.Training.MillingParaTrainResult.html">MillingParaTrainResult</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_Logger_" data-uid="Hi.MachiningProcs.LocalProjectService.Logger*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Logger" data-uid="Hi.MachiningProcs.LocalProjectService.Logger">
Logger
</h3>
<div class="markdown level1 summary"><p>Gets the logger instance for this service.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ILogger&lt;LocalProjectService&gt; Logger { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/microsoft.extensions.logging.ilogger-1">ILogger</a>&lt;<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningActRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningActRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningActRunner" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningActRunner">
MachiningActRunner
</h3>
<div class="markdown level1 summary"><p>Gets the machining act runner responsible for executing machining operations.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningActRunner MachiningActRunner { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningActRunner.html">MachiningActRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningChain_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningChain*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningChain" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningChain">
MachiningChain
</h3>
<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>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IMachiningChain MachiningChain { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mech.IMachiningChain.html">IMachiningChain</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningChainFile_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningChainFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningChainFile" data-uid="Hi.MachiningProcs.LocalProjectService.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_MachiningProcs_LocalProjectService_MachiningEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningEquipment">
MachiningEquipment
</h3>
<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; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningMotionResolution_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningMotionResolution*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningMotionResolution" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningMotionResolution">
MachiningMotionResolution
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining motion resolution strategy (project-level;
backed by <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningActRunner">MachiningActRunner</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IMachiningMotionResolution MachiningMotionResolution { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.MachiningMotionResolutionUtils.IMachiningMotionResolution.html">IMachiningMotionResolution</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningProject_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningProject" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningProject">
MachiningProject
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining project. The setter runs the full change
lifecycle (teardown of the outgoing project, then
<span class="xref">Hi.MachiningProcs.LocalProjectService.OnMachiningProjectChanged()</span>), so external assignment —
e.g. through <a class="xref" href="Hi.MachiningProcs.IProjectService.html#Hi_MachiningProcs_IProjectService_MachiningProject">MachiningProject</a> or a
desktop host — can no longer bypass the hooks and leave the runner
config un-wired (equipment-split P2).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProject MachiningProject { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningProjectPath_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningProjectPath*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningProjectPath" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningProjectPath">
MachiningProjectPath
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string MachiningProjectPath { 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_MachiningProcs_LocalProjectService_MachiningResolution_mm_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningResolution_mm*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningResolution_mm" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningResolution_mm">
MachiningResolution_mm
</h3>
<div class="markdown level1 summary"><p>Gets the machining resolution (mm) — the act-runner value, or the workpiece
bottom resolution when unset. Set via <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SetMachiningResolution_mm_System_Double_System_IProgress_Hi_Common_Messages_IMessage__">SetMachiningResolution_mm(double, IProgress&lt;IMessage&gt;)</a>
(have-both: the caller injects the message host). Seeded from
<a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_InitResolution">InitResolution</a> when a project
is loaded/assigned; an explicit setting then survives
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ResetRuntime_System_IProgress_Hi_Common_Messages_IMessage__">ResetRuntime(IProgress&lt;IMessage&gt;)</a> and workpiece swaps.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double MachiningResolution_mm { 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_MachiningProcs_LocalProjectService_MachiningSession_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningSession*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningSession" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningSession">
MachiningSession
</h3>
<div class="markdown level1 summary"><p>Gets the current machining session.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningSession MachiningSession { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningSession.html">MachiningSession</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningTool_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningTool*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningTool" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningTool">
MachiningTool
</h3>
<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>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IMachiningTool MachiningTool { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.IMachiningTool.html">IMachiningTool</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningToolHouse_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningToolHouse*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningToolHouse" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningToolHouse">
MachiningToolHouse
</h3>
<div class="markdown level1 summary"><p>Gets or sets the machining tool house containing tool configurations.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningToolHouse MachiningToolHouse { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Machining.MachiningToolHouse.html">MachiningToolHouse</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_MachiningToolHouseFile_" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningToolHouseFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningToolHouseFile" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningToolHouseFile">
MachiningToolHouseFile
</h3>
<div class="markdown level1 summary"><p>Gets or sets the file path to the milling tool house configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string MachiningToolHouseFile { 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_MachiningProcs_LocalProjectService_MillingStepLuggageReader_" data-uid="Hi.MachiningProcs.LocalProjectService.MillingStepLuggageReader*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_MillingStepLuggageReader" data-uid="Hi.MachiningProcs.LocalProjectService.MillingStepLuggageReader">
MillingStepLuggageReader
</h3>
<div class="markdown level1 summary"><p>Gets the reader for accessing milling step luggage data.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ParallelBulkReader&lt;MillingStepLuggage&gt; MillingStepLuggageReader { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.ParallelBulkUtils.ParallelBulkReader-1.html">ParallelBulkReader</a>&lt;<a class="xref" href="Hi.MillingSteps.MillingStepLuggage.html">MillingStepLuggage</a>&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_NcDiagnosticProgress_" data-uid="Hi.MachiningProcs.LocalProjectService.NcDiagnosticProgress*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NcDiagnosticProgress" data-uid="Hi.MachiningProcs.LocalProjectService.NcDiagnosticProgress">
NcDiagnosticProgress
</h3>
<div class="markdown level1 summary"><p>NC-pipeline diagnostic sink on the <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> channel — sibling of
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_StepDiagnosticProgress">StepDiagnosticProgress</a>. Stable for the service lifetime (created in the ctor,
only <code>Clear</code>ed on reset, never swapped per session).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NcDiagnosticProgress NcDiagnosticProgress { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.NcDiagnosticProgress.html">NcDiagnosticProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_NcManipulationDiagnosticProgress_" data-uid="Hi.MachiningProcs.LocalProjectService.NcManipulationDiagnosticProgress*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NcManipulationDiagnosticProgress" data-uid="Hi.MachiningProcs.LocalProjectService.NcManipulationDiagnosticProgress">
NcManipulationDiagnosticProgress
</h3>
<div class="markdown level1 summary"><p>Gets the NC-manipulation diagnostic sink — the second diagnostic home,
for operations that rework an already-played NC/CL program (writeback
conversion, NC optimization) as opposed to the play-time pipeline
diagnostics in <a class="xref" href="Hi.MachiningSteps.IMachiningService.html#Hi_MachiningSteps_IMachiningService_NcDiagnosticProgress">NcDiagnosticProgress</a>. Keeping the two
scenarios in separate homes lets a play reset clear run diagnostics
without discarding manipulation results, and vice versa; each
manipulation run clears this home at its start so it always holds the
latest run.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NcDiagnosticProgress NcManipulationDiagnosticProgress { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.NcDiagnosticProgress.html">NcDiagnosticProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_NcOptProc_" data-uid="Hi.MachiningProcs.LocalProjectService.NcOptProc*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NcOptProc" data-uid="Hi.MachiningProcs.LocalProjectService.NcOptProc">
NcOptProc
</h3>
<div class="markdown level1 summary"><p>Gets the NC optimization processor for optimizing NC programs.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public NcOptProc NcOptProc { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">NcOptProc</span></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_NcRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.NcRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NcRunner" data-uid="Hi.MachiningProcs.LocalProjectService.NcRunner">
NcRunner
</h3>
<div class="markdown level1 summary"><p>Gets the legacy NC runner.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public HardNcRunner NcRunner { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.FilePlayers.HardNcRunner.html">HardNcRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PacePlayer_" data-uid="Hi.MachiningProcs.LocalProjectService.PacePlayer*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PacePlayer" data-uid="Hi.MachiningProcs.LocalProjectService.PacePlayer">
PacePlayer
</h3>
<div class="markdown level1 summary"><p>Gets the pace player for controlling execution pace of milling operations.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public PacePlayer PacePlayer { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Common.PacePlayer.html">PacePlayer</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ProjectDirectory_" data-uid="Hi.MachiningProcs.LocalProjectService.ProjectDirectory*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ProjectDirectory" data-uid="Hi.MachiningProcs.LocalProjectService.ProjectDirectory">
ProjectDirectory
</h3>
<div class="markdown level1 summary"><p>Gets the directory containing the machining project.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string ProjectDirectory { 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_MachiningProcs_LocalProjectService_ScriptOptions_" data-uid="Hi.MachiningProcs.LocalProjectService.ScriptOptions*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ScriptOptions" data-uid="Hi.MachiningProcs.LocalProjectService.ScriptOptions">
ScriptOptions
</h3>
<div class="markdown level1 summary"><p>Project-level Roslyn script options for session script execution.
Initialized from <a class="xref" href="Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_DefaultScriptOptions">DefaultScriptOptions</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ScriptOptions ScriptOptions { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://github.com/dotnet/roslyn/blob/35d9211b841e7613c1d2f8f5af6d628ace696c4c/src/Scripting/Core/ScriptOptions.cs">ScriptOptions</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_SessionShell_" data-uid="Hi.MachiningProcs.LocalProjectService.SessionShell*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SessionShell" data-uid="Hi.MachiningProcs.LocalProjectService.SessionShell">
SessionShell
</h3>
<div class="markdown level1 summary"><p>Gets the shell API for the active session. Created at <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_BeginSession">BeginSession()</a>,
nulled at <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EndSession">EndSession()</a>; <code>null</code> outside a session — its lifetime is
unified with <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningSession">MachiningSession</a>, so a non-null instance always implies an
active session.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SessionShell SessionShell { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.SessionShell.html">SessionShell</a></dt>
<dd></dd>
</dl>
<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">
ShellProgress
</h3>
<div class="markdown level1 summary"><p>Session-level routine / lifecycle message sink on the <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> channel
(cache reset, file progress, …). Owned by <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningSession">MachiningSession</a> (truly
session-scoped); <code>null</code> outside a session. Use null-safely.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ShellProgress ShellProgress { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.ShellProgress.html">ShellProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_SoftNcRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.SoftNcRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SoftNcRunner" data-uid="Hi.MachiningProcs.LocalProjectService.SoftNcRunner">
SoftNcRunner
</h3>
<div class="markdown level1 summary"><p>Facade over the active suit's NC pipeline
(<code>MachiningProject.NcRunnerSuit.SoftNcRunner</code>). The getter is null-safe
(returns <code>null</code> when there is no project/suit). The setter is the single
rewiring entry point: it assigns the suit's runner and re-binds everything
that depends on it (proxy hosts, kinematics provider, session script
dictionaries, and the per-session <a class="xref" href="Hi.MachiningProcs.NcRunnerSessionState.html">NcRunnerSessionState</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SoftNcRunner SoftNcRunner { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_StepDiagnosticProgress_" data-uid="Hi.MachiningProcs.LocalProjectService.StepDiagnosticProgress*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_StepDiagnosticProgress" data-uid="Hi.MachiningProcs.LocalProjectService.StepDiagnosticProgress">
StepDiagnosticProgress
</h3>
<div class="markdown level1 summary"><p>Step-anchored message sink on the <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a> channel, threaded through the
runner / act-processing chain.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StepDiagnosticProgress StepDiagnosticProgress { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.StepDiagnosticProgress.html">StepDiagnosticProgress</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_StepPropertyAccessDictionary_" data-uid="Hi.MachiningProcs.LocalProjectService.StepPropertyAccessDictionary*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_StepPropertyAccessDictionary" data-uid="Hi.MachiningProcs.LocalProjectService.StepPropertyAccessDictionary">
StepPropertyAccessDictionary
</h3>
<div class="markdown level1 summary"><p>Gets the dictionary mapping property keys to their access methods.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ConcurrentDictionary&lt;string, PropertyAccess&lt;MachiningStep&gt;&gt; StepPropertyAccessDictionary { 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.concurrent.concurrentdictionary-2">ConcurrentDictionary</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>, <a class="xref" href="Hi.MachiningSteps.PropertyAccess-1.html">PropertyAccess</a>&lt;<a class="xref" href="Hi.MachiningSteps.MachiningStep.html">MachiningStep</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_TimeMapping_" data-uid="Hi.MachiningProcs.LocalProjectService.TimeMapping*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_TimeMapping" data-uid="Hi.MachiningProcs.LocalProjectService.TimeMapping">
TimeMapping
</h3>
<div class="markdown level1 summary"><p>Gets or sets the time mapping for synchronizing different time-based data streams.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public TimeMapping TimeMapping { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Mapping.TimeMapping.html">TimeMapping</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_Workpiece_" data-uid="Hi.MachiningProcs.LocalProjectService.Workpiece*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Workpiece" data-uid="Hi.MachiningProcs.LocalProjectService.Workpiece">
Workpiece
</h3>
<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>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Workpiece Workpiece { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html">Workpiece</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_WorkpieceService_" data-uid="Hi.MachiningProcs.LocalProjectService.WorkpieceService*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_WorkpieceService" data-uid="Hi.MachiningProcs.LocalProjectService.WorkpieceService">
WorkpieceService
</h3>
<div class="markdown level1 summary"><p>Gets the workpiece runtime service.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public WorkpieceService WorkpieceService { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.NcMech.Workpieces.WorkpieceService.html">WorkpieceService</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_XyzabcSolver_" data-uid="Hi.MachiningProcs.LocalProjectService.XyzabcSolver*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_XyzabcSolver" data-uid="Hi.MachiningProcs.LocalProjectService.XyzabcSolver">
XyzabcSolver
</h3>
<div class="markdown level1 summary"><p>Gets the shared kinematics solver — the third topology entity of the
equipment split, owned by the service (runtime side) rather than the
persisted project graph. Rebuilt by <span class="xref">Hi.MachiningProcs.LocalProjectService.BuildCoordinateConverter()</span>
whenever the machine chain changes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public XyzabcSolver XyzabcSolver { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.Xyzabc.XyzabcSolver.html">XyzabcSolver</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="Hi_MachiningProcs_LocalProjectService_Act_" data-uid="Hi.MachiningProcs.LocalProjectService.Act*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Act_Hi_Numerical_Acts_IAct_Hi_NcParsers_ISentenceCarrier_System_Nullable_System_Threading_CancellationToken__" data-uid="Hi.MachiningProcs.LocalProjectService.Act(Hi.Numerical.Acts.IAct,Hi.NcParsers.ISentenceCarrier,System.Nullable{System.Threading.CancellationToken})">
Act(IAct, ISentenceCarrier, CancellationToken?)
</h3>
<div class="markdown level1 summary"><p>Executes an act and collects all results.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Act(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>act</code> <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a></dt>
<dd><p>The act to execute.</p>
</dd>
<dt><code>sourceCommand</code> <a class="xref" href="Hi.NcParsers.ISentenceCarrier.html">ISentenceCarrier</a></dt>
<dd><p>The source command that triggered the act.</p>
</dd>
<dt><code>cancellationToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a>?</dt>
<dd><p>Cancellation token to cancel the operation.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_BeginNcRunner_" data-uid="Hi.MachiningProcs.LocalProjectService.BeginNcRunner*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_BeginNcRunner" data-uid="Hi.MachiningProcs.LocalProjectService.BeginNcRunner">
BeginNcRunner()
</h3>
<div class="markdown level1 summary"><p>Prepares the NC runner for a play session by initializing the
workpiece meshed geometry (when not already initialized), reporting
progress through <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ShellProgress">ShellProgress</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void BeginNcRunner()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_BeginSession_" data-uid="Hi.MachiningProcs.LocalProjectService.BeginSession*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_BeginSession" data-uid="Hi.MachiningProcs.LocalProjectService.BeginSession">
BeginSession()
</h3>
<div class="markdown level1 summary"><p>Initiate a simulation session.
Clear the state from previous session (if existed).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void BeginSession()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_CheckStrokeLimitOnStep_" data-uid="Hi.MachiningProcs.LocalProjectService.CheckStrokeLimitOnStep*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_CheckStrokeLimitOnStep" data-uid="Hi.MachiningProcs.LocalProjectService.CheckStrokeLimitOnStep">
CheckStrokeLimitOnStep()
</h3>
<div class="markdown level1 summary"><p>Checks stroke limit at the current MC position.
Uses <a class="xref" href="Hi.NcParsers.Dependencys.IStrokeLimitConfig.html">IStrokeLimitConfig</a> when <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EnableSoftNcRunner">EnableSoftNcRunner</a> is active,
otherwise falls back to <a class="xref" href="Hi.Numerical.HardNcEnv.html#Hi_Numerical_HardNcEnv_CheckStrokeLimit_Hi_Geom_DVec3d_System_IProgress_Hi_Common_Messages_IMessage__">CheckStrokeLimit(DVec3d, IProgress&lt;IMessage&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool CheckStrokeLimitOnStep()</code></pre>
</div>
<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 within limits or no limits configured.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_CloseProject_" data-uid="Hi.MachiningProcs.LocalProjectService.CloseProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_CloseProject" data-uid="Hi.MachiningProcs.LocalProjectService.CloseProject">
CloseProject()
</h3>
<div class="markdown level1 summary"><p>Closes the current project.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void CloseProject()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_ConvertClToNcFiles_" data-uid="Hi.MachiningProcs.LocalProjectService.ConvertClToNcFiles*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ConvertClToNcFiles_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.ConvertClToNcFiles(System.String,System.IProgress{Hi.Common.Messages.IMessage})">
ConvertClToNcFiles(string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Converts the CLSF play of the current session into Fanuc NC files
(writeback synthesis — MSYS tilt becomes <code>G68.2</code>, RTCP becomes
<code>G43.4</code>). Play a CL file on an XYZABC machine chain first, then
convert; see <a class="xref" href="Hi.MachiningProcs.MachiningSession.html#Hi_MachiningProcs_MachiningSession_ConvertClToNcFiles_System_String_System_String_System_IProgress_Hi_Common_Messages_IMessage__">ConvertClToNcFiles(string, string, IProgress&lt;IMessage&gt;)</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IReadOnlyList&lt;string&gt; ConvertClToNcFiles(string relNcFileTemplate = &quot;Output/[NcName].nc&quot;, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relNcFileTemplate</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Output path template; <code>[NcName]</code>
is replaced by the source file name.</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 message sink for lifecycle reporting.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist-1">IReadOnlyList</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a>&gt;</dt>
<dd><p>Written NC file paths, relative to the project base directory.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_Dispose_" data-uid="Hi.MachiningProcs.LocalProjectService.Dispose*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Dispose" data-uid="Hi.MachiningProcs.LocalProjectService.Dispose">
Dispose()
</h3>
<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">public void Dispose()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_Dispose_" data-uid="Hi.MachiningProcs.LocalProjectService.Dispose*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Dispose_System_Boolean_" data-uid="Hi.MachiningProcs.LocalProjectService.Dispose(System.Boolean)">
Dispose(bool)
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected virtual void Dispose(bool disposing)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>disposing</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_EnableCollisionDetection_" data-uid="Hi.MachiningProcs.LocalProjectService.EnableCollisionDetection*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EnableCollisionDetection_System_Boolean_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.EnableCollisionDetection(System.Boolean,System.IProgress{Hi.Common.Messages.IMessage})">
EnableCollisionDetection(bool, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Enables or disables collision detection. When enabling, prepares the
collidable items; when disabling, resets collision flags. Progress is
reported to the injected <code class="paramref">messageProgress</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void EnableCollisionDetection(bool value, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd><p>Whether collision detection should be enabled.</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>Sink-agnostic message host for progress reporting.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_EndSession_" data-uid="Hi.MachiningProcs.LocalProjectService.EndSession*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_EndSession" data-uid="Hi.MachiningProcs.LocalProjectService.EndSession">
EndSession()
</h3>
<div class="markdown level1 summary"><p>Ends the current machining session and releases associated resources.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void EndSession()</code></pre>
</div>
<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)">
FixedPace(double, double)
</h3>
<div class="markdown level1 summary"><p>Creates a fixed machining motion resolution with the specified linear
(mm) and rotary (deg) resolutions.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public FixedMachiningMotionResolution FixedPace(double linearResolution_mm, double rotaryResolution_deg)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>linearResolution_mm</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Linear resolution in millimeters.</p>
</dd>
<dt><code>rotaryResolution_deg</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Rotary resolution in degrees.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.Numerical.MachiningMotionResolutionUtils.FixedMachiningMotionResolution.html">FixedMachiningMotionResolution</a></dt>
<dd></dd>
</dl>
<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)">
GetInspectingKeyPresentName(StringLocalizer)
</h3>
<div class="markdown level1 summary"><p>Gets the localized presentation name for the current inspecting key.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public string GetInspectingKeyPresentName(StringLocalizer stringLocalizer)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stringLocalizer</code> <a class="xref" href="Hi.Common.StringLocalizer.html">StringLocalizer</a></dt>
<dd><p>The string localizer to use for localization</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><p>The localized presentation name</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_GetLocalProjectService_" data-uid="Hi.MachiningProcs.LocalProjectService.GetLocalProjectService*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetLocalProjectService" data-uid="Hi.MachiningProcs.LocalProjectService.GetLocalProjectService">
GetLocalProjectService()
</h3>
<div class="markdown level1 summary"><p>Get Local Project Service as base-service.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public LocalProjectService GetLocalProjectService()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a></dt>
<dd><p>Local Project Service</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_GetMachiningEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.GetMachiningEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetMachiningEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.GetMachiningEquipment">
GetMachiningEquipment()
</h3>
<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>
<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><p><a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a></p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_GetMachiningProject_" data-uid="Hi.MachiningProcs.LocalProjectService.GetMachiningProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_GetMachiningProject" data-uid="Hi.MachiningProcs.LocalProjectService.GetMachiningProject">
GetMachiningProject()
</h3>
<div class="markdown level1 summary"><p>Gets the MachiningProject instance.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public MachiningProject GetMachiningProject()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningProject.html">MachiningProject</a></dt>
<dd><p>The MachiningProject instance.</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">
GetSessionShell()
</h3>
<div class="markdown level1 summary"><p>Returns the session shell that exposes the runtime surface of the active machining session.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ISessionShell GetSessionShell()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.SessionShellUtils.ISessionShell.html">ISessionShell</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_LoadProject_" data-uid="Hi.MachiningProcs.LocalProjectService.LoadProject*"></a>
<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 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, 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>
<a id="Hi_MachiningProcs_LocalProjectService_NewProject_" data-uid="Hi.MachiningProcs.LocalProjectService.NewProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_NewProject_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.NewProject(System.String)">
NewProject(string)
</h3>
<div class="markdown level1 summary"><p>Creates a new project by file path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void NewProject(string projectPath)</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>
</dl>
<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)">
PlayBrandNcFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Plays a famous-brand NC code file from the specified path with pace
control (no kind dispatch — always the brand runner).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PlayBrandNcFile(string baseDirectory, string relFilePath)</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 for resolving relative paths</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the NC file</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PlayClFile_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayClFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PlayClFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayClFile(System.String,System.String)">
PlayClFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Plays an NX-CL (CLSF) file from the specified path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PlayClFile(string baseDirectory, string relFilePath)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the CLSF file.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PlayCsvFile_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayCsvFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PlayCsvFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayCsvFile(System.String,System.String)">
PlayCsvFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Plays a CSV file from the specified path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PlayCsvFile(string baseDirectory, string relFilePath)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the CSV file.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PlayNc_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayNc*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PlayNc_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayNc(System.String,System.String)">
PlayNc(string, string)
</h3>
<div class="markdown level1 summary"><p>Plays NC commands from raw text with pace control.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PlayNc(string ncText, string fileNameAlternative = &quot;--&quot;)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ncText</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The NC command text to execute</p>
</dd>
<dt><code>fileNameAlternative</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Alternative name to associate with the NC program</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PlayNcFile_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayNcFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PlayNcFile_System_String_System_String_Hi_MachiningProcs_NcKind_" data-uid="Hi.MachiningProcs.LocalProjectService.PlayNcFile(System.String,System.String,Hi.MachiningProcs.NcKind)">
PlayNcFile(string, string, NcKind)
</h3>
<div class="markdown level1 summary"><p>Plays an NC program file from the specified path, the runner picked by
<code class="paramref">kind</code> (<a class="xref" href="Hi.MachiningProcs.NcKind.html#Hi_MachiningProcs_NcKind_Auto">Auto</a> = by file
extension: known CL/CSV extensions map to those runners, anything else
plays as brand NC).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PlayNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the NC program file.</p>
</dd>
<dt><code>kind</code> <a class="xref" href="Hi.MachiningProcs.NcKind.html">NcKind</a></dt>
<dd><p>Which runner plays the file; Auto detects by extension.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_PowerReset_" data-uid="Hi.MachiningProcs.LocalProjectService.PowerReset*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_PowerReset" data-uid="Hi.MachiningProcs.LocalProjectService.PowerReset">
PowerReset()
</h3>
<div class="markdown level1 summary"><p>Performs a controller power reset, modelling a power-off / power-on cycle:</p>
<ul><li>Every <a class="xref" href="Hi.NcParsers.Dependencys.IPowerResettable.html">IPowerResettable</a> dependency clears its volatile
subset. Persistent dependency state (controller parameters,
Fanuc <code>#500-#999</code>, etc.) is left intact.</li><li>The active <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningSession">MachiningSession</a>'s
<a class="xref" href="Hi.MachiningProcs.NcRunnerSessionState.html">NcRunnerSessionState</a> is reset so the per-layer
<code>SyntaxPiece</code> dataflow — including <code>Vars.Volatile</code>, modal
carries, and the init seed — is dropped. The next
<a class="xref" href="Hi.Numerical.INcRunner.html#Hi_Numerical_INcRunner_RunNcLines_System_String_System_Collections_Generic_IEnumerable_System_String__Hi_MachiningProcs_MachiningSession_Hi_MachiningProcs_StepDiagnosticProgress_Hi_NcParsers_NcDiagnosticProgress_System_Threading_CancellationToken_">RunNcLines(string, IEnumerable&lt;string&gt;, MachiningSession, StepDiagnosticProgress, NcDiagnosticProgress, CancellationToken)</a> call re-initialises
everything from scratch.</li></ul>
Without the second step, calling <code>PowerReset</code> while a project is
loaded would leave volatile commons alive across the supposed power
cycle (they live in the SyntaxPiece JSON dataflow rather than in any
<a class="xref" href="Hi.NcParsers.Dependencys.IPowerResettable.html">IPowerResettable</a> dependency).
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void PowerReset()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_ProcAct_" data-uid="Hi.MachiningProcs.LocalProjectService.ProcAct*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ProcAct_Hi_Numerical_Acts_IAct_Hi_NcParsers_ISentenceCarrier_System_Nullable_System_Threading_CancellationToken__" data-uid="Hi.MachiningProcs.LocalProjectService.ProcAct(Hi.Numerical.Acts.IAct,Hi.NcParsers.ISentenceCarrier,System.Nullable{System.Threading.CancellationToken})">
ProcAct(IAct, ISentenceCarrier, CancellationToken?)
</h3>
<div class="markdown level1 summary"><p>Processes an act and returns the results.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;object&gt; ProcAct(IAct act, ISentenceCarrier sourceCommand = null, CancellationToken? cancellationToken = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>act</code> <a class="xref" href="Hi.Numerical.Acts.IAct.html">IAct</a></dt>
<dd><p>The act to process.</p>
</dd>
<dt><code>sourceCommand</code> <a class="xref" href="Hi.NcParsers.ISentenceCarrier.html">ISentenceCarrier</a></dt>
<dd><p>The source command that triggered the act.</p>
</dd>
<dt><code>cancellationToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a>?</dt>
<dd><p>Cancellation token to cancel the operation.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.object">object</a>&gt;</dt>
<dd><p>Enumerable of results from processing the act.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ReTrainMillingPara_" data-uid="Hi.MachiningProcs.LocalProjectService.ReTrainMillingPara*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ReTrainMillingPara_Hi_MillingForces_Fittings_SampleFlag_System_Double_System_String_System_Threading_CancellationToken_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.ReTrainMillingPara(Hi.MillingForces.Fittings.SampleFlag,System.Double,System.String,System.Threading.CancellationToken,System.IProgress{Hi.Common.Messages.IMessage})">
ReTrainMillingPara(SampleFlag, double, string, CancellationToken, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Train Milling Parameter.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ReTrainMillingPara(SampleFlag sampleFlags, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>sampleFlags</code> <a class="xref" href="Hi.MillingForces.Fittings.SampleFlag.html">SampleFlag</a></dt>
<dd></dd>
<dt><code>outlierRatio</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>dstRelFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>cancellationToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></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></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ReadNcRunnerSuit_" data-uid="Hi.MachiningProcs.LocalProjectService.ReadNcRunnerSuit*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ReadNcRunnerSuit_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.ReadNcRunnerSuit(System.String)">
ReadNcRunnerSuit(string)
</h3>
<div class="markdown level1 summary"><p>Reads an <a class="xref" href="Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> from <code class="paramref">relFile</code> (project
relative) and makes it the active suit — switching the active parser (NC or
CSV) — then re-binds every host hookup (see <span class="xref">Hi.MachiningProcs.LocalProjectService.RewireForActiveSuit()</span>).
Refused while an NC program is playing: the runner's per-session layers are
mid-enumeration and cannot be safely reset (an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iprogress-1">IProgress&lt;T&gt;</a>
error is reported instead).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ReadNcRunnerSuit(string relFile)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RefreshDrawing_" data-uid="Hi.MachiningProcs.LocalProjectService.RefreshDrawing*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RefreshDrawing" data-uid="Hi.MachiningProcs.LocalProjectService.RefreshDrawing">
RefreshDrawing()
</h3>
<div class="markdown level1 summary"><p>Refreshes the visual display of the milling course.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RefreshDrawing()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_Reg_" data-uid="Hi.MachiningProcs.LocalProjectService.Reg*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_Reg_Hi_Common_XmlUtils_XFactory_" data-uid="Hi.MachiningProcs.LocalProjectService.Reg(Hi.Common.XmlUtils.XFactory)">
Reg(XFactory)
</h3>
<div class="markdown level1 summary"><p>Bootstraps XML-factory registration for the simulation pipeline.
Entry points must call this once at startup before any project XML
is deserialized. Pass a custom <a class="xref" href="Hi.Common.XmlUtils.XFactory.html">XFactory</a> for test
isolation, or <code>null</code> to populate <a class="xref" href="Hi.Common.XmlUtils.XFactory.html#Hi_Common_XmlUtils_XFactory_Default">Default</a>.
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_MachiningProcs_LocalProjectService_RegisterStepVariable_" data-uid="Hi.MachiningProcs.LocalProjectService.RegisterStepVariable*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RegisterStepVariable_System_String_System_String_System_String_System_String_System_Func_Hi_MachiningSteps_MachiningStep_System_Object__" data-uid="Hi.MachiningProcs.LocalProjectService.RegisterStepVariable(System.String,System.String,System.String,System.String,System.Func{Hi.MachiningSteps.MachiningStep,System.Object})">
RegisterStepVariable(string, string, string, string, Func&lt;MachiningStep, object&gt;)
</h3>
<div class="markdown level1 summary"><p>Registers a step variable so downstream components (strip charts,
CSV exports, scripting) can read it from <a class="xref" href="Hi.MachiningSteps.MachiningStep.html">MachiningStep</a>.
Idempotent on <code class="paramref">key</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RegisterStepVariable(string key, string name, string unit, string formatString, Func&lt;MachiningStep, object&gt; variableFunc = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>key</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Unique key.</p>
</dd>
<dt><code>name</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Human-readable name; may equal <code class="paramref">key</code>.</p>
</dd>
<dt><code>unit</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Physical unit name (<code>PhysicsUnit</code>); nullable.</p>
</dd>
<dt><code>formatString</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Display format string; nullable.</p>
</dd>
<dt><code>variableFunc</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.func-2">Func</a>&lt;<a class="xref" href="Hi.MachiningSteps.MachiningStep.html">MachiningStep</a>, <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a>&gt;</dt>
<dd><p>Optional value extractor; nullable when the value comes from the step's flex dictionary.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_ReloadProject_" data-uid="Hi.MachiningProcs.LocalProjectService.ReloadProject*"></a>
<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 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(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>
<a id="Hi_MachiningProcs_LocalProjectService_ResetRuntime_" data-uid="Hi.MachiningProcs.LocalProjectService.ResetRuntime*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_ResetRuntime_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.ResetRuntime(System.IProgress{Hi.Common.Messages.IMessage})">
ResetRuntime(IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Reset the runtime states including: meshed geometry, collision flags, machine tool position, CL strips, message buffer and etc..
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_MachiningResolution_mm">MachiningResolution_mm</a> is deliberately left untouched so an
explicit setting survives resets; it is seeded from
<a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html#Hi_NcMech_Workpieces_Workpiece_InitResolution">InitResolution</a> only when a
project is loaded/assigned.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void ResetRuntime(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></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunBrandNcFile_" data-uid="Hi.MachiningProcs.LocalProjectService.RunBrandNcFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunBrandNcFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.RunBrandNcFile(System.String,System.String)">
RunBrandNcFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Runs a famous-brand NC code file from the specified path (no kind
dispatch — always the brand runner).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;Action&gt; RunBrandNcFile(string baseDirectory, string relFilePath)</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 for resolving relative paths. If the value is null, <a class="xref" href="Hi.MachiningProcs.MachiningProject.html#Hi_MachiningProcs_MachiningProject_BaseDirectory">BaseDirectory</a> substitutes the value.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the NC file.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.action">Action</a>&gt;</dt>
<dd><p>An enumerable of actions to be executed.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunClFile_" data-uid="Hi.MachiningProcs.LocalProjectService.RunClFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunClFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.RunClFile(System.String,System.String)">
RunClFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Runs an NX-CL (CLSF) file from the specified path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;Action&gt; RunClFile(string baseDirectory, string relFilePath)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the CLSF file.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.action">Action</a>&gt;</dt>
<dd><p>An enumerable of actions to be executed.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunCsvFile_" data-uid="Hi.MachiningProcs.LocalProjectService.RunCsvFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunCsvFile_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.RunCsvFile(System.String,System.String)">
RunCsvFile(string, string)
</h3>
<div class="markdown level1 summary"><p>Runs a CSV file from the specified path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;Action&gt; RunCsvFile(string baseDirectory, string relFilePath)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the CSV file.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.action">Action</a>&gt;</dt>
<dd><p>An enumerable of actions to be executed.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunNc_" data-uid="Hi.MachiningProcs.LocalProjectService.RunNc*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunNc_System_String_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.RunNc(System.String,System.String)">
RunNc(string, string)
</h3>
<div class="markdown level1 summary"><p>Runs NC commands from raw text.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;Action&gt; RunNc(string ncText, string fileNameAlternative = &quot;--&quot;)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>ncText</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>The NC command text to execute</p>
</dd>
<dt><code>fileNameAlternative</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Alternative name to associate with the NC program</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.action">Action</a>&gt;</dt>
<dd><p>An enumerable of actions to be executed</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunNcFile_" data-uid="Hi.MachiningProcs.LocalProjectService.RunNcFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunNcFile_System_String_System_String_Hi_MachiningProcs_NcKind_" data-uid="Hi.MachiningProcs.LocalProjectService.RunNcFile(System.String,System.String,Hi.MachiningProcs.NcKind)">
RunNcFile(string, string, NcKind)
</h3>
<div class="markdown level1 summary"><p>Runs an NC program file from the specified path, the runner picked by
<code class="paramref">kind</code> (<a class="xref" href="Hi.MachiningProcs.NcKind.html#Hi_MachiningProcs_NcKind_Auto">Auto</a> = by file
extension: known CL/CSV extensions map to those runners, anything else
runs as brand NC).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public IEnumerable&lt;Action&gt; RunNcFile(string baseDirectory, string relFilePath, NcKind kind = NcKind.Auto)</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 for resolving relative paths.</p>
</dd>
<dt><code>relFilePath</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Relative path to the NC program file.</p>
</dd>
<dt><code>kind</code> <a class="xref" href="Hi.MachiningProcs.NcKind.html">NcKind</a></dt>
<dd><p>Which runner runs the file; Auto detects by extension.</p>
</dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><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.action">Action</a>&gt;</dt>
<dd><p>An enumerable of actions to be executed.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_RunToLineEnd_" data-uid="Hi.MachiningProcs.LocalProjectService.RunToLineEnd*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_RunToLineEnd" data-uid="Hi.MachiningProcs.LocalProjectService.RunToLineEnd">
RunToLineEnd()
</h3>
<div class="markdown level1 summary"><p>Advances the player by one NC/CSV line and pauses.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RunToLineEnd()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_SaveAsProject_" data-uid="Hi.MachiningProcs.LocalProjectService.SaveAsProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SaveAsProject_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.SaveAsProject(System.String)">
SaveAsProject(string)
</h3>
<div class="markdown level1 summary"><p>Saves the current project to a specified relative file path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SaveAsProject(string projectPath)</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>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_SaveProject_" data-uid="Hi.MachiningProcs.LocalProjectService.SaveProject*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SaveProject" data-uid="Hi.MachiningProcs.LocalProjectService.SaveProject">
SaveProject()
</h3>
<div class="markdown level1 summary"><p>Save project by project path.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SaveProject()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_SetMachiningResolution_mm_" data-uid="Hi.MachiningProcs.LocalProjectService.SetMachiningResolution_mm*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_SetMachiningResolution_mm_System_Double_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.SetMachiningResolution_mm(System.Double,System.IProgress{Hi.Common.Messages.IMessage})">
SetMachiningResolution_mm(double, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Sets the machining resolution (mm). Progress is reported to the injected
<code class="paramref">messageProgress</code>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void SetMachiningResolution_mm(double value, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>value</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The machining resolution in millimeters.</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>Sink-agnostic message host for progress reporting.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_TrainMillingPara_" data-uid="Hi.MachiningProcs.LocalProjectService.TrainMillingPara*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_TrainMillingPara_Hi_MillingForces_Fittings_SampleFlag_System_Boolean_System_Double_System_String_System_Threading_CancellationToken_Hi_MillingForces_Fittings_ICuttingPara_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.TrainMillingPara(Hi.MillingForces.Fittings.SampleFlag,System.Boolean,System.Double,System.String,System.Threading.CancellationToken,Hi.MillingForces.Fittings.ICuttingPara,System.IProgress{Hi.Common.Messages.IMessage})">
TrainMillingPara(SampleFlag, bool, double, string, CancellationToken, ICuttingPara, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Train Milling Parameter.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void TrainMillingPara(SampleFlag sampleFlags, bool enableFzOnlyDuringDrilling, double outlierRatio, string dstRelFile, CancellationToken cancellationToken, ICuttingPara paraTemplate, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>sampleFlags</code> <a class="xref" href="Hi.MillingForces.Fittings.SampleFlag.html">SampleFlag</a></dt>
<dd></dd>
<dt><code>enableFzOnlyDuringDrilling</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
<dt><code>outlierRatio</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>dstRelFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
<dt><code>cancellationToken</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.threading.cancellationtoken">CancellationToken</a></dt>
<dd></dd>
<dt><code>paraTemplate</code> <a class="xref" href="Hi.MillingForces.Fittings.ICuttingPara.html">ICuttingPara</a></dt>
<dd></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></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_UpdateByMachiningChain_" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateByMachiningChain*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_UpdateByMachiningChain" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateByMachiningChain">
UpdateByMachiningChain()
</h3>
<div class="markdown level1 summary"><p>Updates components when the machining chain changes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateByMachiningChain()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_UpdateByMachiningEquipment_" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateByMachiningEquipment*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_UpdateByMachiningEquipment" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateByMachiningEquipment">
UpdateByMachiningEquipment()
</h3>
<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>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateByMachiningEquipment()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_UpdateIdealMillingToolOffsetTableByToolHouse_" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateIdealMillingToolOffsetTableByToolHouse*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_UpdateIdealMillingToolOffsetTableByToolHouse" data-uid="Hi.MachiningProcs.LocalProjectService.UpdateIdealMillingToolOffsetTableByToolHouse">
UpdateIdealMillingToolOffsetTableByToolHouse()
</h3>
<div class="markdown level1 summary"><p>Updates the ideal milling tool offset table based on the current tool house configuration.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void UpdateIdealMillingToolOffsetTableByToolHouse()</code></pre>
</div>
<a id="Hi_MachiningProcs_LocalProjectService_WriteNcRunnerSuit_" data-uid="Hi.MachiningProcs.LocalProjectService.WriteNcRunnerSuit*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_WriteNcRunnerSuit_System_String_" data-uid="Hi.MachiningProcs.LocalProjectService.WriteNcRunnerSuit(System.String)">
WriteNcRunnerSuit(string)
</h3>
<div class="markdown level1 summary"><p>Writes the active <a class="xref" href="Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> to <code class="paramref">relFile</code>
(project relative). Pure file IO — does not update any in-memory pointer.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void WriteNcRunnerSuit(string relFile)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relFile</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_WriteShotFile_" data-uid="Hi.MachiningProcs.LocalProjectService.WriteShotFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_WriteShotFile_System_TimeSpan_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.WriteShotFile(System.TimeSpan,System.String,System.IProgress{Hi.Common.Messages.IMessage})">
WriteShotFile(TimeSpan, string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Writes time-based shot data to a file with the specified sampling period.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void WriteShotFile(TimeSpan samplingPeriod, string relFileTemplate = &quot;Output/[NcName].shot.csv&quot;, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>samplingPeriod</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.timespan">TimeSpan</a></dt>
<dd><p>The time period between samples</p>
</dd>
<dt><code>relFileTemplate</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Template for the output file path, can include [NcName] placeholder</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-supplied progress sink for start/finish messages.</p>
</dd>
</dl>
<a id="Hi_MachiningProcs_LocalProjectService_WriteStepFile_" data-uid="Hi.MachiningProcs.LocalProjectService.WriteStepFile*"></a>
<h3 id="Hi_MachiningProcs_LocalProjectService_WriteStepFile_System_String_System_IProgress_Hi_Common_Messages_IMessage__" data-uid="Hi.MachiningProcs.LocalProjectService.WriteStepFile(System.String,System.IProgress{Hi.Common.Messages.IMessage})">
WriteStepFile(string, IProgress&lt;IMessage&gt;)
</h3>
<div class="markdown level1 summary"><p>Writes step-based data to a file.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void WriteStepFile(string relFileTemplate = &quot;Output/[NcName].step.csv&quot;, IProgress&lt;IMessage&gt; messageProgress = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>relFileTemplate</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd><p>Template for the output file path, can include [NcName] placeholder</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-supplied progress sink for start/finish messages.</p>
</dd>
</dl>
<h2 class="section" id="events">Events
</h2>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningProjectChanged" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningProjectChanged">
MachiningProjectChanged
</h3>
<div class="markdown level1 summary"><p>Event raised when the machining project changes.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event LocalProjectService.MachiningProjectChangedDelegate MachiningProjectChanged</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.LocalProjectService.html">LocalProjectService</a>.<a class="xref" href="Hi.MachiningProcs.LocalProjectService.MachiningProjectChangedDelegate.html">MachiningProjectChangedDelegate</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_MachiningStepBuilt" data-uid="Hi.MachiningProcs.LocalProjectService.MachiningStepBuilt">
MachiningStepBuilt
</h3>
<div class="markdown level1 summary"><p>event to configure steps.
The first parameter is the previous step; the second parameter is the current step.
The previous step is null if no previous step exists.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event MachiningActRunner.MachiningStepBuiltDelegate MachiningStepBuilt</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="Hi.MachiningProcs.MachiningActRunner.html">MachiningActRunner</a>.<a class="xref" href="Hi.MachiningProcs.MachiningActRunner.MachiningStepBuiltDelegate.html">MachiningStepBuiltDelegate</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnNcFileRan" data-uid="Hi.MachiningProcs.LocalProjectService.OnNcFileRan">
OnNcFileRan
</h3>
<div class="markdown level1 summary"><p>Event triggered after an NC file is executed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action OnNcFileRan</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnShellMessageAdded" data-uid="Hi.MachiningProcs.LocalProjectService.OnShellMessageAdded">
OnShellMessageAdded
</h3>
<div class="markdown level1 summary"><p>App-lifetime bridge for <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ShellProgress">ShellProgress</a> appends. Because <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ShellProgress">ShellProgress</a>
is session-scoped (recreated at <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_BeginSession">BeginSession()</a>, null outside a session), a consumer
that wants every session's shell messages subscribes here once instead of chasing the swapping
instance — <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_BeginSession">BeginSession()</a> re-wires the bridge to the new sink each session, the same
way <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnSourcedActEntry">OnSourcedActEntry</a> is bridged. Carries the append index and the message.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action&lt;int, IMessage&gt; OnShellMessageAdded</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-2">Action</a>&lt;<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a>, <a class="xref" href="Hi.Common.Messages.IMessage.html">IMessage</a>&gt;</dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnShellMessageCleared" data-uid="Hi.MachiningProcs.LocalProjectService.OnShellMessageCleared">
OnShellMessageCleared
</h3>
<div class="markdown level1 summary"><p>App-lifetime bridge for <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ShellProgress">ShellProgress</a> clears (see <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnShellMessageAdded">OnShellMessageAdded</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action OnShellMessageCleared</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnSourcedActEntry" data-uid="Hi.MachiningProcs.LocalProjectService.OnSourcedActEntry">
OnSourcedActEntry
</h3>
<div class="markdown level1 summary"><p>App-lifetime event triggered for each <a class="xref" href="Hi.Numerical.SourcedActEntry.html">SourcedActEntry</a> produced during NC/CSV execution.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action&lt;SourcedActEntry&gt; OnSourcedActEntry</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-1">Action</a>&lt;<a class="xref" href="Hi.Numerical.SourcedActEntry.html">SourcedActEntry</a>&gt;</dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnSyntaxPieceRan" data-uid="Hi.MachiningProcs.LocalProjectService.OnSyntaxPieceRan">
OnSyntaxPieceRan
</h3>
<div class="markdown level1 summary"><p>Raised after each <a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a> has been run during NC execution (app lifetime).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action&lt;SyntaxPiece&gt; OnSyntaxPieceRan</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-1">Action</a>&lt;<a class="xref" href="Hi.NcParsers.Syntaxs.SyntaxPiece.html">SyntaxPiece</a>&gt;</dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnUpdatedInspectingQuantityFunc" data-uid="Hi.MachiningProcs.LocalProjectService.OnUpdatedInspectingQuantityFunc">
OnUpdatedInspectingQuantityFunc
</h3>
<div class="markdown level1 summary"><p>Event triggered when the inspecting quantity function is updated.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action OnUpdatedInspectingQuantityFunc</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action">Action</a></dt>
<dd></dd>
</dl>
<h3 id="Hi_MachiningProcs_LocalProjectService_WorkpieceChanged" data-uid="Hi.MachiningProcs.LocalProjectService.WorkpieceChanged">
WorkpieceChanged
</h3>
<div class="markdown level1 summary"><p>Event that is raised when the workpiece is changed.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action&lt;SeqPair&lt;Workpiece&gt;&gt; WorkpieceChanged</code></pre>
</div>
<h4 class="section">Event Type</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.action-1">Action</a>&lt;<a class="xref" href="Hi.Common.SeqPair-1.html">SeqPair</a>&lt;<a class="xref" href="Hi.NcMech.Workpieces.Workpiece.html">Workpiece</a>&gt;&gt;</dt>
<dd></dd>
</dl>
<h4 class="section" id="Hi_MachiningProcs_LocalProjectService_WorkpieceChanged_remarks">Remarks</h4>
<div class="markdown level1 remarks"><p>This event is triggered whenever the workpiece property is modified.
Subscribers can use this event to respond to changes in the workpiece configuration,
such as updating visualizations or recalculating machining parameters.
The event provides both the previous and new workpiece values through a SeqPair.</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>