This commit is contained in:
2026-09-16 00:00:49 +08:00
parent 1a75503105
commit bfa3106a69
60 changed files with 696 additions and 268 deletions
@@ -172,7 +172,7 @@ and be wrong.</p>
<a class="xref" href="../execution/strip-charts.html">Strip Charts</a> and <a class="xref" href="../execution/cycle-line-charts.html">Cycle-Line Charts</a>.</p>
<h2 id="mech">Mech</h2>
<p><code>Mech/</code> is the largest domain folder: the REST surfaces for the machine tool, the tool house and
cutter editing, fixtures and workpieces, spindle capability, background and coolant, and the three
cutter editing, fixtures and workpieces, spindle capability, ambient and coolant, and the three
runner suits. It also holds the display controllers that bind a mechanism scene onto a rendering
connection. <code>Mech/CutterDtoBuilder.cs</code> is the shared read-side DTO shape two controllers reuse, and
<code>Mech/NcSuitUsage.cs</code> is what lets the Control Tree show the CSV and CL runner branches only when the
@@ -2,9 +2,9 @@
<html>
<head>
<meta charset="utf-8">
<title>Background / Coolant | HiAPI-C# 2025 </title>
<title>Environment: Ambient Temperature / Coolant | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Background / Coolant | HiAPI-C# 2025 ">
<meta name="title" content="Environment: Ambient Temperature / Coolant | HiAPI-C# 2025 ">
<link rel="icon" href="../../img/HiAPI.favicon.ico">
@@ -85,19 +85,21 @@
</div>
<article data-uid="Anatomy-BackgroundCoolant">
<h1 id="background--coolant">Background / Coolant</h1>
<h1 id="environment-ambient-temperature--coolant">Environment: Ambient Temperature / Coolant</h1>
<p>Background and Coolant are two leaves of the General Setup page's Control Tree
(<code>/general-setup?tree=equipment/background</code>, <code>/general-setup?tree=equipment/coolant</code>), sitting
directly under the General Setup group between Spindle Capability and Fixture. They are two tree
items rather than a page, so the older <code>/equipment/background-coolant</code> path redirects onto the
Background leaf. Both are served by one panel component, which branches on the selected node's role
path.</p>
<p>Ambient Temperature and Coolant are the two leaves of the General Setup page's <strong>Environment</strong> root
(<code>/general-setup?tree=equipment/background/environment-temperature</code>,
<code>/general-setup?tree=equipment/background/coolant</code> — the root's id <code>equipment/background</code> and the
routes keep the legacy <code>background</code> spelling; since 2026-09-15 Environment is one of the page's four
roots beside Mechanism, Spindle Capability and Controller, and the pre-regroup <code>equipment/coolant</code> id
migrates). They are tree items rather than a page, so the older <code>/equipment/background-coolant</code> path
redirects onto the Environment root. Both leaves are served by one panel component, which branches
on the selected node's role path.</p>
<p>They edit the thermal condition on the project's authored equipment face,
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html">SetupEquipment</a>, reached as
<a class="xref" href="../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SetupEquipment">SetupEquipment</a>:</p>
<ul>
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_C">BackgroundTemperature_C</a> (Background
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a> (Ambient
leaf)</li>
<li>the whole <a class="xref" href="../../api/Hi.Physics.CoolantHeatCondition.html">CoolantHeatCondition</a> (Coolant leaf) — file-first, see below</li>
</ul>
@@ -105,10 +107,10 @@ leaf)</li>
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_CoolantHeatCondition">CoolantHeatCondition</a>).</p>
<h2 id="layout">Layout</h2>
<ul>
<li>Background leaf — <code>equipment/background</code>, item type <code>ThermalCondition</code>
<li>Ambient Temperature leaf — <code>equipment/background/environment-temperature</code>, item type <code>ThermalCondition</code>
<ul>
<li>Background Temperature NumberField (°C) —
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_C">BackgroundTemperature_C</a>.</li>
<li>Ambient Temperature NumberField (°C) —
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a>.</li>
</ul>
</li>
<li>Coolant leaf — <code>equipment/coolant</code>, the same item type and the same panel (file pick on top,
@@ -177,11 +179,11 @@ are the water-soluble preset's values.</li>
but exposes <code>_C</code> accessors that handle the conversion, and the DTO carries Celsius.</li>
<li><strong>Finite values only.</strong> Every field handler drops a null or non-finite entry before any request is
made, so <code>Infinity</code> never reaches these endpoints even though the numeric widget can parse it.
Background and coolant temperatures accept negatives (e.g. -40 °C for cryogenic coolant); the
Ambient and coolant temperatures accept negatives (e.g. -40 °C for cryogenic coolant); the
three convection fields are clamped to <code>min: 0</code>.</li>
<li><strong>The run sees it at once.</strong> The background-temperature write, all four condition scalars and the
<li><strong>The run sees it at once.</strong> The ambient-temperature write, all four condition scalars and the
file load each end in the project service's ForwardSetupEnvironmentToExecution, which stamps the
background temperature and the condition reference onto the runtime equipment face — including
ambient temperature and the condition reference onto the runtime equipment face — including
the lazily created condition, which otherwise would exist only on the authored side.</li>
</ul>
<h2 id="source-code-path">Source Code Path</h2>
@@ -190,7 +192,7 @@ the lazily created condition, which otherwise would exist only on the authored s
<p>HiNC-2025-webservice (Quasar CLI SPA):</p>
<ul>
<li><code>wwwroot-src/src/components/controlTree/ThermalConditionPanel.vue</code> — the one panel both leaves
share, branching on the node's last role-path segment: Background renders the single temperature
share, branching on the node's last role-path segment: Ambient Temperature renders the single temperature
field, Coolant the not-attached badge, the file row, the read-only Name / Note and the four
property fields.</li>
<li><code>wwwroot-src/src/components/controlTree/useControlTreeHost.ts</code> — declares the two
@@ -207,7 +209,8 @@ the flat snapshot, the load / save-as pair, and the five scalar PUTs.</li>
<li><code>wwwroot-src/src/router/routes.ts</code> — carries the <code>equipment/background-coolant</code> redirect, which
lands on <code>general-setup?tree=equipment/background</code>.</li>
<li><code>Mech/BackgroundCoolantController.cs</code> — REST surface at <code>/api/mech/background-coolant</code> over the
authored equipment face:
authored equipment face (the route, the PUT path and the snapshot field keep their legacy
<code>background</code> wire names; only the C# member behind them is renamed):
<ul>
<li><code>GET /</code> — flat snapshot <code>{ hasEquipment, backgroundTemperature_C, hasCoolant, coolantTemperature_C, coolantConvectionCoefficient_Wdm2K, mistFloodConvectionRatio, offConvectionCoefficient_Wdm2K, coolantName, coolantNote, coolantHeatConditionFile }</code>.</li>
<li><code>POST /load</code>, <code>POST /save-as</code><code>{ rootName, relFile }</code>: install a <code>.CoolantHeatCondition</code> file
@@ -218,7 +221,7 @@ project-relative path when it lands under the project. Save-as appends the exten
missing and renames the condition after the file (<code>IPreferredFileName</code>) with the <code>.default</code>
marker stripped.</li>
<li><code>PUT /background-temperature-c</code> — set
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_C">BackgroundTemperature_C</a>.</li>
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a>.</li>
<li><code>PUT /coolant-temperature-c</code>, <code>PUT /coolant-convection-coefficient-wdm2k</code>,
<code>PUT /mist-flood-convection-ratio</code>, <code>PUT /off-convection-coefficient-wdm2k</code> — the four condition
scalars, all through one helper that lazy-creates the condition when absent, writes it, and
@@ -233,7 +236,7 @@ flood / mist-ratio / off convection coefficients, Name and Note with <code>Prefe
<code>StandardPresets</code> / <code>ApplyPreset</code> / <code>MatchStandardPreset</code> statics behind the shipped resource
files.</li>
<li><code>HiMech/Machining/MachiningEquipmentUtils/SetupEquipment.cs</code> — the authored equipment face that
owns the background temperature, the condition and its file reference, and externalizes the
owns the ambient temperature, the condition and its file reference, and externalizes the
condition to the side-file when that reference is set.</li>
</ul>
<h2 id="see-also">See Also</h2>
@@ -372,7 +372,13 @@ bounded field on the four leaves, at zero or above.</li>
<p>The stroke limits are checked at each played step against the chain's current machine pose while the
session's stroke-limit check is on; a position past a configured limit is reported as a
stroke-limit validation error anchored to that step, and pauses the player when pause-on-failure is
set. The check walks a <strong>fixed axis vocabulary</strong> — X, Y and Z from the machine point, A, B and C
set. The comparison carries a small tolerance
(<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_Tolerance">Tolerance</a>), so an axis parked exactly on its limit
is not reported. The rotary limits also steer the tilt solves: when a <code>G53.1</code>, <code>G68.2</code>, <code>CYCLE800</code>,
<code>PLANE SPATIAL</code> or <code>LN</code> posture has its nearest rotary solution outside the travel, the solve takes
the admissible branch nearest the entry instead of commanding a posture the machine cannot take. A
project that declared its travel only in the legacy machine-limits boxes gets those ends copied into
this table on load, for the axes carrying no end here. The check walks a <strong>fixed axis vocabulary</strong> — X, Y and Z from the machine point, A, B and C
from its orientation — so a limit stored against any other axis name is kept and shown here but never
tested. Rapid-traverse timing has the same shape and the same six names: a G00 move is timed
axis-by-axis at each axis' rate and takes the slowest, falling back to the same 20000 mm/min and
@@ -104,7 +104,7 @@ application.</p>
<ul>
<li><a href="machine-tool.html">Machine Tool</a> — The kinematic chain the whole scene hangs from, and the standalone route that loads and previews it</li>
<li><a href="spindle-capability.html">Spindle Capability</a> — The spindle envelope: thermal condition, gear shift, dry run, power and torque</li>
<li><a href="background-coolant.html">Background / Coolant</a> — The two scene branches that are not machine parts: the backdrop and the coolant model</li>
<li><a href="background-coolant.html">Environment: Ambient Temperature / Coolant</a> — The Environment root's two thermal leaves, the ones that are not machine parts: the ambient (shop) temperature the thermal model starts from, and the coolant model</li>
<li><a href="fixture.html">Fixture</a> — What holds the workpiece, its geometry and the two anchors that place it</li>
<li><a href="workpiece.html">Workpiece</a> — Raw and target geometry, the anchors that locate them, the mesh, and the material</li>
<li><a href="controller/index.html">Controller</a> — The SoftNcRunner-native controller branch: its two planes, the brand matrix behind which nodes appear at all, and the contract every leaf edits by</li>
@@ -290,7 +290,7 @@ reference.</li>
<h2 id="see-also">See Also</h2>
<ul>
<li><a class="xref" href="../util/mech-builder.html">Mechanism Builder Page</a> — same file-level IO pattern (Load / Reload / Save As) but user-scoped rather than project-scoped.</li>
<li><a class="xref" href="background-coolant.html">Background / Coolant</a> — sibling branch of the same Control Tree, editing the same authored equipment face.</li>
<li><a class="xref" href="background-coolant.html">Environment: Ambient Temperature / Coolant</a> — sibling root of the same Control Tree, editing the same authored equipment face.</li>
<li><a class="xref" href="../../technique/machine-capability/spindle-capability.html">Spindle Capability</a> — what the model represents physically and how the per-step ratios come out of it.</li>
</ul>
@@ -22,7 +22,7 @@
<a href="spindle-capability.html" name="" title="Spindle Capability">Spindle Capability</a>
</li>
<li>
<a href="background-coolant.html" name="" title="Background / Coolant">Background / Coolant</a>
<a href="background-coolant.html" name="" title="Environment (Ambient Temperature / Coolant)">Environment (Ambient Temperature / Coolant)</a>
</li>
<li>
<a href="fixture.html" name="" title="Fixture">Fixture</a>
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"Machine Tool","href":"machine-tool.html","topicHref":"machine-tool.html"},{"name":"Spindle Capability","href":"spindle-capability.html","topicHref":"spindle-capability.html"},{"name":"Background / Coolant","href":"background-coolant.html","topicHref":"background-coolant.html"},{"name":"Fixture","href":"fixture.html","topicHref":"fixture.html"},{"name":"Workpiece","href":"workpiece.html","topicHref":"workpiece.html"},{"name":"Controller","href":"controller/index.html","tocHref":"controller/toc.html","topicHref":"controller/index.html","homepage":"controller/index.html"},{"name":"Hidden Controller Branches","href":"hidden-controllers.html","topicHref":"hidden-controllers.html"}]}
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"Machine Tool","href":"machine-tool.html","topicHref":"machine-tool.html"},{"name":"Spindle Capability","href":"spindle-capability.html","topicHref":"spindle-capability.html"},{"name":"Environment (Ambient Temperature / Coolant)","href":"background-coolant.html","topicHref":"background-coolant.html"},{"name":"Fixture","href":"fixture.html","topicHref":"fixture.html"},{"name":"Workpiece","href":"workpiece.html","topicHref":"workpiece.html"},{"name":"Controller","href":"controller/index.html","tocHref":"controller/toc.html","topicHref":"controller/index.html","homepage":"controller/index.html"},{"name":"Hidden Controller Branches","href":"hidden-controllers.html","topicHref":"hidden-controllers.html"}]}
@@ -121,12 +121,16 @@ session holds no played SoftNc layers, and it is handed <code>MachiningProject.N
the switch on, so a value that only the legacy endpoints or the project XML can change still shows
up on a runner play.</p>
<ul>
<li><strong>Stroke limits, as a fallback.</strong> The per-step stroke check reads the runner's
<li><strong>Stroke limits, as a fallback and as a seed.</strong> The per-step stroke check reads the runner's
<a class="xref" href="../api/Hi.NcParsers.Dependencys.IStrokeLimitConfig.html">IStrokeLimitConfig</a> when the switch is on and one is present, and
falls back to the legacy stroke boxes otherwise — a CSV or NX-CL suit carries no stroke config, so
a play on those falls through to the boxes. The pre-play audit that warns of an unlimited linear
axis reads both sources end by end, the runner's first and the legacy box behind it, and stays
silent for an axis either source guards.</li>
a play on those falls through to the boxes. When a project loads, the boxes' finite ends are also
copied into the runner's controller parameter table for every axis that carries no end there
(<a class="xref" href="../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PopulateLegacyStrokeLimitsWhereUnset_">PopulateLegacyStrokeLimitsWhereUnset</a>; an explicit row wins), so
a project that declared its travel only in the boxes is checked against it on SoftNc — and its
tilt solves prefer the rotary branch inside that travel. The pre-play audit that warns of an
unlimited linear axis reads both sources end by end, the runner's first and the legacy box behind
it, and stays silent for an axis either source guards.</li>
<li><strong>The home position, as a fallback.</strong> The chain is re-homed from the runner's home config; the
legacy <code>HomeMc</code> fills in only when no linear axis was ever configured there.</li>
<li><strong>The Execution canvas's coordinate markers.</strong> The <code>IsoCoordinate</code> and <code>HeidenhainCoordinate</code>
@@ -116,7 +116,7 @@ segment is a scope key only.</li>
re-minted on every re-index; in the Mission branch it is the Mission API command path (<code>0</code>, <code>1</code>,
the dotted <code>0.2</code> of a nested list entry); in the Tool House branch it is the tool id as a string.
Waves whose panels read a module-level state singleton rather than an indexed object leave it
empty — the SoftNc controller leaves, the spindle sections, the Background and Coolant leaves and
empty — the SoftNc controller leaves, the spindle sections, the Environment root's Ambient Temperature and Coolant leaves and
the Program branch all do.</li>
<li><code>ctx</code> — the parent-provided <code>SlotCtx</code>: the <code>afterChange</code> commit chain, a slot's <code>onCreate</code>
create-and-rebind hook, and a slot picker's <code>allowedKinds</code> / <code>allowNone</code> constraints.</li>
@@ -209,7 +209,7 @@ moved into a Control Tree still lands on the editor.</p>
</tr>
<tr>
<td><code>/equipment/background-coolant</code></td>
<td><code>/general-setup?tree=equipment/background</code>. Background and Coolant are two separate tree nodes; the redirect picks Background.</td>
<td><code>/general-setup?tree=equipment/background</code>. That id is the Environment root over the Ambient Temperature and Coolant leaves (<code>equipment/background/environment-temperature</code>, <code>equipment/background/coolant</code>); the redirect lands on the root (the ids and the route keep the legacy <code>background</code> spelling).</td>
</tr>
<tr>
<td><code>/mission</code></td>
@@ -119,14 +119,14 @@ signed-in session; it is omitted only while that probe has reported no version.<
<li>Tool House MenuItem
Open <a class="xref" href="../tool-house/index.html">Tool House Page</a></li>
<li>General Setup MenuItem
The equipment Control Tree — Machine Tool, Spindle Capability, Background, Coolant, Fixture, Workpiece, Controller, in that order — plus the shared equipment canvas. Two further controller branches, CSV Controller and CL Controller, are <a class="xref" href="../general-setup/hidden-controllers.html">hidden by default</a> and are switched on from the Preference dropdown.</li>
The equipment Control Tree — four roots: Mechanism (Machine Tool / Fixture / Workpiece), Spindle Capability, Environment (Ambient Temperature / Coolant) and Controller, in that order — plus the shared equipment canvas. Two further controller branches, CSV Controller and CL Controller, are <a class="xref" href="../general-setup/hidden-controllers.html">hidden by default</a> and are switched on from the Preference dropdown.</li>
<li>Execution MenuItem
Open <a class="xref" href="../execution/index.html">Execution Page</a></li>
<li>File Explorer MenuItem (below a separator). See <a href="../util/index.html">Util Pages</a>.</li>
<li>Mechanism Builder MenuItem
Open <a class="xref" href="../util/mech-builder.html">Mechanism Builder Page</a></li>
</ul>
<p>The dropdown is not every route the application has. The Machine Tool page stays reachable by URL for its chain-only canvas preview, the Log Viewer is reached by the <code>Show Log</code> button, and the Fixture, Workpiece, Spindle Capability, Mission, Background / Coolant and legacy Controller paths resolve as redirects into the two tree pages.</p>
<p>The dropdown is not every route the application has. The Machine Tool page stays reachable by URL for its chain-only canvas preview, the Log Viewer is reached by the <code>Show Log</code> button, and the Fixture, Workpiece, Spindle Capability, Mission, Environment (Ambient Temperature / Coolant) and legacy Controller paths resolve as redirects into the two tree pages.</p>
</li>
<li><p><a class="xref" href="preference-menu.html">Preference Menu Dropdown</a></p>
</li>
@@ -203,7 +203,7 @@ watching for project changes itself.</li>
<ul>
<li>The <a class="xref" href="../execution/index.html">Execution Page</a> is the landing route — <code>/</code> redirects to <code>/execution</code></li>
<li>The page URL and panel state are synchronized (bi-directional navigation)</li>
<li>There is no Environment dropdown. Machine Tool, Fixture, Workpiece, Controller, Background / Coolant and Spindle Capability are branches of the General Setup page's Control Tree, and Tool House and Execution are pages of their own; the remaining paths resolve as redirects into those pages. The menu bar is therefore <code>Project ▾ | Page ▾ | Preference ▾</code>.</li>
<li>There is no Environment dropdown (Environment is now a root of the General Setup page's Control Tree, over Ambient Temperature / Coolant). Mechanism (Machine Tool / Fixture / Workpiece), Spindle Capability, Environment and Controller are the roots of that tree, and Tool House and Execution are pages of their own; the remaining paths resolve as redirects into those pages. The menu bar is therefore <code>Project ▾ | Page ▾ | Preference ▾</code>.</li>
</ul>
<h2 id="source-code-path">Source Code Path</h2>
<p>See <a class="xref" href="../index.html">HiNC App Anatomy</a> for git repository links.</p>
@@ -252,6 +252,73 @@ serialized: runtime data cannot reach the project file by construction.</p>
</h2>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_C_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_C" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C">
AmbientTemperature_C
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ambient temperature in Celsius.
This is a convenience property that converts between Celsius and Kelvin.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AmbientTemperature_C { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_K_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_K" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K">
AmbientTemperature_K
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ambient temperature in Kelvin. Runtime-stamped
from the authored face at materialise; the authored value's home is
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AmbientTemperature_K { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Asmb_" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Asmb*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Asmb" data-uid="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Asmb">
@@ -291,13 +358,13 @@ serialized: runtime data cannot reach the project file by construction.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Celsius.
This is a convenience property that converts between Celsius and Kelvin.</p>
<div class="markdown level1 summary"><p>Source-compatible delegate of <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_C">AmbientTemperature_C</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double BackgroundTemperature_C { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to AmbientTemperature_C.&quot;)]
public double BackgroundTemperature_C { get; set; }</code></pre>
</div>
@@ -324,14 +391,13 @@ This is a convenience property that converts between Celsius and Kelvin.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Kelvin. Runtime-stamped
from the authored face at materialise; the authored value's home is
<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_K">BackgroundTemperature_K</a>.</p>
<div class="markdown level1 summary"><p>Source-compatible delegate of <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_K">AmbientTemperature_K</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double BackgroundTemperature_K { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to AmbientTemperature_K.&quot;)]
public double BackgroundTemperature_K { get; set; }</code></pre>
</div>
@@ -299,6 +299,76 @@ shipped project files keep their layout, only the deserialized object changed.
</h2>
<a id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C_" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C">
AmbientTemperature_C
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ambient temperature in Celsius.
This is a convenience property that converts between Celsius and Kelvin.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AmbientTemperature_C { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K_" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K">
AmbientTemperature_K
</h3>
<div class="markdown level1 summary"><p>Gets or sets the ambient temperature in Kelvin: the shop-floor
temperature the workpiece, cutter, chips and spindle start at and the
spindle cools toward. The cutting zone itself convects to
<a class="xref" href="Hi.Physics.CoolantHeatCondition.html#Hi_Physics_CoolantHeatCondition_CoolantTemperature_K">CoolantTemperature_K</a>.
Serialized as <code>AmbientTemperature_C</code>; the pre-rename element
<code>BackgroundTemperature_C</code> is still read.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AmbientTemperature_K { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_Asmb_" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.Asmb*"></a>
<h3 id="Hi_Machining_MachiningEquipmentUtils_SetupEquipment_Asmb" data-uid="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.Asmb">
@@ -338,13 +408,13 @@ shipped project files keep their layout, only the deserialized object changed.
</h3>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Celsius.
This is a convenience property that converts between Celsius and Kelvin.</p>
<div class="markdown level1 summary"><p>Source-compatible delegate of <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double BackgroundTemperature_C { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to AmbientTemperature_C.&quot;)]
public double BackgroundTemperature_C { get; set; }</code></pre>
</div>
@@ -371,13 +441,13 @@ This is a convenience property that converts between Celsius and Kelvin.</p>
</h3>
<div class="markdown level1 summary"><p>Gets or sets the background temperature in Kelvin.
This represents the ambient temperature of the machining environment.</p>
<div class="markdown level1 summary"><p>Source-compatible delegate of <a class="xref" href="Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double BackgroundTemperature_K { get; set; }</code></pre>
<pre><code class="lang-csharp hljs">[Obsolete(&quot;Renamed to AmbientTemperature_K.&quot;)]
public double BackgroundTemperature_K { get; set; }</code></pre>
</div>
@@ -196,7 +196,7 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StepMotionSnapshot(DVec3d GeomCl, DVec3d ProgramCl, SeqPair&lt;Mat4d&gt; Seq, Dictionary&lt;Anchor, Mat4d&gt; AnchorTransformDictionary, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double BackgroundTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList&lt;double, double&gt; FluteZToDzList, DVec3d PreTipPose = null)</code></pre>
<pre><code class="lang-csharp hljs">public StepMotionSnapshot(DVec3d GeomCl, DVec3d ProgramCl, SeqPair&lt;Mat4d&gt; Seq, Dictionary&lt;Anchor, Mat4d&gt; AnchorTransformDictionary, double[] McValues, bool EnableSweeping, IMachiningTool MachiningTool, WorkpieceService WorkpieceService, double AmbientTemperature_K, CoolantHeatCondition CoolantHeatCondition, SortedList&lt;double, double&gt; FluteZToDzList, DVec3d PreTipPose = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -225,8 +225,8 @@ Class MachiningVolumeRemovalProc.StepMotionSnapshot
<dt><code>WorkpieceService</code> <a class="xref" href="Hi.NcMech.Workpieces.WorkpieceService.html">WorkpieceService</a></dt>
<dd><p>Service that owns the workpiece being machined.</p>
</dd>
<dt><code>BackgroundTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Background temperature in Kelvin.</p>
<dt><code>AmbientTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>Ambient temperature in Kelvin.</p>
</dd>
<dt><code>CoolantHeatCondition</code> <a class="xref" href="Hi.Physics.CoolantHeatCondition.html">CoolantHeatCondition</a></dt>
<dd><p>The coolant heat condition.</p>
@@ -258,6 +258,38 @@ it may span two steps back.</p>
</h2>
<a id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AmbientTemperature_K_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AmbientTemperature_K" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K">
AmbientTemperature_K
</h3>
<div class="markdown level1 summary"><p>Ambient temperature in Kelvin.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double AmbientTemperature_K { get; init; }</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_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AnchorTransformDictionary_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AnchorTransformDictionary*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AnchorTransformDictionary" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AnchorTransformDictionary">
@@ -290,38 +322,6 @@ it may span two steps back.</p>
<a id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_BackgroundTemperature_K_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_BackgroundTemperature_K" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K">
BackgroundTemperature_K
</h3>
<div class="markdown level1 summary"><p>Background temperature in Kelvin.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double BackgroundTemperature_K { get; init; }</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_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_CoolantHeatCondition_" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.CoolantHeatCondition*"></a>
<h3 id="Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_CoolantHeatCondition" data-uid="Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.CoolantHeatCondition">
@@ -2222,7 +2222,7 @@ no-op, for hosts without a setup face (e.g. test stubs).</p>
</h3>
<div class="markdown level1 summary"><p>Forwards the authored environment values (background temperature,
<div class="markdown level1 summary"><p>Forwards the authored environment values (ambient 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
@@ -3735,6 +3735,46 @@ The previous step is null if no previous step exists.</p>
<h3 id="Hi_MachiningProcs_LocalProjectService_OnNcPipelineReset" data-uid="Hi.MachiningProcs.LocalProjectService.OnNcPipelineReset">
OnNcPipelineReset
</h3>
<div class="markdown level1 summary"><p>App-lifetime event raised after the per-session NC pipeline state has been
rewound (<span class="xref">Hi.MachiningProcs.LocalProjectService.ResetNcPipelineState()</span>): 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> re-initialises from scratch, so its
FileIndex / SentenceIndex counters restart at 0. Raised on EVERY rewind path —
a runner-suit rewire (brand switch), <a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_PowerReset">PowerReset()</a> and
<a class="xref" href="Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_ResetRuntime_System_IProgress_Hi_Common_Messages_IMessage__">ResetRuntime(IProgress&lt;IMessage&gt;)</a> (including a mission script's <code>ResetRuntime()</code>
between two NC files) — not only on a PacePlayer reset or a project swap,
which are the two boundaries a session-lifetime consumer already sees. Anything
keyed by those counters must drop its index here, or the next file's pieces
land under the previous file's numbers.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public event Action OnNcPipelineReset</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
@@ -190,13 +190,13 @@ Class MachiningParallelProc.StepTaskBundle
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StepTaskBundle(double backgroundTemperature_K, double spindleTemperature_K)</code></pre>
<pre><code class="lang-csharp hljs">public StepTaskBundle(double ambientTemperature_K, double spindleTemperature_K)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>backgroundTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The background temperature in Kelvin.</p>
<dt><code>ambientTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The ambient temperature in Kelvin.</p>
</dd>
<dt><code>spindleTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The spindle temperature in Kelvin.</p>
@@ -6,7 +6,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class RapidCutMonitor | HiAPI-C# 2025 ">
<meta name="description" content="Reports a rapid traverse that removed stock: the steps of one NC line that were commanded as rapid traverse (G00, ) and touched the workpiece fold into one Play-RapidCut&amp;ndash;Detected validation warning, anchored on the line&#39;s first touching step and carrying the line&#39;s total removed volume and its largest cutting depth. A rapid move through material breaks the tool or crashes the machine on a real run, yet with the spindle turning the engine treats it as ordinary cutting: the collision rule (Hi.Machining.MachiningEquipment.Detect) pairs flute and workpiece only while the spindle is stopped, so such a line used to pass with no message at all. One instance per . runs on the sequential post-physics stage of every built step (one thread, step order), closes the last line at the end of a play and drops a pending line on a session reset; both run on the shell thread after , so no lock is needed. Folding: consecutive rapid steps with the same (the NC line number, or the sentence itself where a runner has no line numbers) form one report; a feed step, a different line or the end of the play closes it. A line re-entered later (a subprogram loop) reports again, deliberately. The report is emitted only when the line&#39;s total removed volume reaches (default 0: any contact). Steps with the spindle stopped are skipped while collision detection is on — that rule owns them and raises Collision--Detected — and counted otherwise.">
<meta name="description" content="Reports a rapid traverse that removed stock: the steps of one NC line that were commanded as rapid traverse (G00, ) and touched the workpiece fold into one Play-RapidCut&amp;ndash;Detected validation warning, anchored on the line&#39;s first touching step and carrying the line&#39;s total removed volume and its largest cutting depth. A rapid move through material breaks the tool or crashes the machine on a real run, yet with the spindle turning the engine treats it as ordinary cutting: the collision rule () pairs flute and workpiece only while the spindle is stopped, so such a line used to pass with no message at all. One instance per . runs on the sequential post-physics stage of every built step (one thread, step order), closes the last line at the end of a play and drops a pending line on a session reset; both run on the shell thread after , so no lock is needed. Folding: consecutive rapid steps with the same (the NC line number, or the sentence itself where a runner has no line numbers) form one report; a feed step, a different line or the end of the play closes it. A line re-entered later (a subprogram loop) reports again, deliberately. The report is emitted only when the line&#39;s total removed volume reaches (default 0: any contact). Steps with the spindle stopped are skipped while collision detection is on — that rule owns them and raises Collision--Detected — and counted otherwise.">
<link rel="icon" href="../img/HiAPI.favicon.ico">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
@@ -105,7 +105,7 @@ the line's first touching step and carrying the line's total removed
volume and its largest cutting depth. A rapid move through material
breaks the tool or crashes the machine on a real run, yet with the
spindle turning the engine treats it as ordinary cutting: the collision
rule (Hi.Machining.MachiningEquipment.Detect) pairs flute
rule (<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Detect_System_Boolean_">Detect(bool)</a>) pairs flute
and workpiece only while the spindle is stopped, so such a line used to
pass with no message at all.</p>
<p>
@@ -222,7 +222,7 @@ the line's first touching step and carrying the line's total removed
volume and its largest cutting depth. A rapid move through material
breaks the tool or crashes the machine on a real run, yet with the
spindle turning the engine treats it as ordinary cutting: the collision
rule (Hi.Machining.MachiningEquipment.Detect) pairs flute
rule (<a class="xref" href="Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Detect_System_Boolean_">Detect(bool)</a>) pairs flute
and workpiece only while the spindle is stopped, so such a line used to
pass with no message at all.</p>
<p>
@@ -229,13 +229,13 @@ Class SeqPhysicsBrief
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public SeqPhysicsBrief(double backgroundTemperature_K, double spindleTemperature_K)</code></pre>
<pre><code class="lang-csharp hljs">public SeqPhysicsBrief(double ambientTemperature_K, double spindleTemperature_K)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>backgroundTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The background temperature in Kelvin.</p>
<dt><code>ambientTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The ambient temperature in Kelvin.</p>
</dd>
<dt><code>spindleTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The spindle temperature in Kelvin.</p>
@@ -1050,7 +1050,7 @@ public double WorkpieceSurfaceTemperature_C { get; set; }</code></pre>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void BuildCuttingTemperatureAndWear(SeqPhysicsBrief preSeqPhysicsBrief, MachineMotionStep preMachineMotionStep, MachineMotionStep curMachineMotionStep, double backgroundTemperature_K, SpindleCapability spindleCapability, IMachiningTool machiningTool, Workpiece workpiece, int stepIndex, Substraction substraction, LayerMillingEngagement layerMillingEngagement, MillingPhysicsBrief millingPhysicsBrief, CoolantHeatCondition coolantHeatCondition, CoolantMode coolantMode, bool enableWearEffect, MillingToolPhysicsPack physicsPack = null, Action&lt;string&gt; onWarning = null)</code></pre>
<pre><code class="lang-csharp hljs">public void BuildCuttingTemperatureAndWear(SeqPhysicsBrief preSeqPhysicsBrief, MachineMotionStep preMachineMotionStep, MachineMotionStep curMachineMotionStep, double ambientTemperature_K, SpindleCapability spindleCapability, IMachiningTool machiningTool, Workpiece workpiece, int stepIndex, Substraction substraction, LayerMillingEngagement layerMillingEngagement, MillingPhysicsBrief millingPhysicsBrief, CoolantHeatCondition coolantHeatCondition, CoolantMode coolantMode, bool enableWearEffect, MillingToolPhysicsPack physicsPack = null, Action&lt;string&gt; onWarning = null)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1064,8 +1064,8 @@ public double WorkpieceSurfaceTemperature_C { get; set; }</code></pre>
<dt><code>curMachineMotionStep</code> <a class="xref" href="Hi.MachiningSteps.MachineMotionStep.html">MachineMotionStep</a></dt>
<dd><p>The current machine motion step.</p>
</dd>
<dt><code>backgroundTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The background temperature in Kelvin.</p>
<dt><code>ambientTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd><p>The ambient temperature in Kelvin.</p>
</dd>
<dt><code>spindleCapability</code> <a class="xref" href="Hi.Milling.SpindleCapability.html">SpindleCapability</a></dt>
<dd><p>The spindle capability information.</p>
@@ -1135,7 +1135,7 @@ derivations on use.</p>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void BuildSpindleTemperatureAndRatio(MachineMotionStep machiningStep, MillingPhysicsBrief rakeFacePhysicsBrief, double backgroundTemperature_K, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, double preSpindleTemperature_K)</code></pre>
<pre><code class="lang-csharp hljs">public void BuildSpindleTemperatureAndRatio(MachineMotionStep machiningStep, MillingPhysicsBrief rakeFacePhysicsBrief, double ambientTemperature_K, SpindleCapability spindleCapability, SpindleSpeedCache spindleSpeedCache, double preSpindleTemperature_K)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -1144,7 +1144,7 @@ derivations on use.</p>
<dd></dd>
<dt><code>rakeFacePhysicsBrief</code> <a class="xref" href="Hi.MillingForces.MillingPhysicsBrief.html">MillingPhysicsBrief</a></dt>
<dd></dd>
<dt><code>backgroundTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dt><code>ambientTemperature_K</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
<dt><code>spindleCapability</code> <a class="xref" href="Hi.Milling.SpindleCapability.html">SpindleCapability</a></dt>
<dd></dd>
File diff suppressed because one or more lines are too long
@@ -96,7 +96,7 @@ described.</p>
job, in the order a job uses it:</p>
<ul>
<li><strong>Tool House</strong> — the tools, one editor per tool</li>
<li><strong>General Setup</strong> — the equipment: the machine tool, the spindle capability, the background and
<li><strong>General Setup</strong> — the equipment: the machine tool, the spindle capability, the ambient and
coolant conditions, the fixture, the workpiece and the controller</li>
<li><strong>Execution</strong> — the run: the mission that is executed, the program as it was played, and what the
run reports</li>
@@ -124,9 +124,9 @@ address is <code>/preference/log</code>.</li>
path of the selection — <em>General Setup / Workpiece / Anchor / Geom To Fixture</em> — which is also how
these pages name a place in prose; the header shows as much of it as the dock is wide, so a deep
path arrives truncated.</p>
<p>General Setup's tree has one root, <strong>General Setup</strong>, holding <strong>Machine Tool</strong>, <strong>Spindle
Capability</strong>, <strong>Background</strong>, <strong>Coolant</strong>, <strong>Fixture</strong>, <strong>Workpiece</strong> and <strong>Controller</strong>, in that
order. With a project open, a <strong>CSV Controller</strong> and a <strong>CL Controller</strong> node follow, each behind
<p>General Setup's tree has four roots — <strong>Mechanism</strong> (holding <strong>Machine Tool</strong>, <strong>Fixture</strong> and
<strong>Workpiece</strong>), <strong>Spindle Capability</strong>, <strong>Environment</strong> (holding <strong>Ambient Temperature</strong> and
<strong>Coolant</strong>) and <strong>Controller</strong> — in that order. With a project open, a <strong>CSV Controller</strong> and a <strong>CL Controller</strong> node follow, each behind
its own Preference checkbox — as siblings of Controller at the same level, not as children of it.
With no project open neither node is built, whatever the preferences say. Execution's tree has one
root, <strong>Execution</strong>, holding <strong>Mission</strong> above <strong>Program</strong>.</p>
@@ -253,7 +253,7 @@ page's node instead:</p>
</tr>
<tr>
<td><code>/equipment/background-coolant</code></td>
<td>General Setup, the Background item</td>
<td>General Setup, the Environment root (Ambient Temperature / Coolant)</td>
</tr>
<tr>
<td><code>/mission</code></td>
@@ -88,7 +88,7 @@
<h1 id="projects">Projects</h1>
<p>A project is the whole of what a simulation runs against: the machine tool, the spindle capability,
the background and coolant conditions, the fixture, the workpiece, the tool house, the controller and
the ambient and coolant conditions, the fixture, the workpiece, the tool house, the controller and
the NC programs a mission plays. It is a project file together with the folder that file sits in, and
the <strong>Project</strong> dropdown on the menu bar is where one is created, opened, saved and closed. The
equipment and mission screens are editors on whichever project is open, so a change of project
@@ -93,10 +93,11 @@ temperatures and everything downstream of them — and setting them needs no hea
all, because the cooling types ship as ready-made files.</p>
<h2 id="where-it-is">Where it is</h2>
<p>The General Setup page, at <code>/general-setup</code>, reached from the menu bar's <strong>Page</strong> dropdown.
<strong>Background</strong> (<code>/general-setup?tree=equipment/background</code>) and <strong>Coolant</strong>
(<code>/general-setup?tree=equipment/coolant</code>) are two leaves of the Control Tree, sitting together
between Spindle Capability and Fixture. Both are inert until a project is open: the fields are
disabled and the panel says so.</p>
<strong>Ambient Temperature</strong> (<code>/general-setup?tree=equipment/background/environment-temperature</code>) and
<strong>Coolant</strong> (<code>/general-setup?tree=equipment/background/coolant</code>) are the two leaves of the Control
Tree's <strong>Environment</strong> root, between Spindle Capability and Controller (the ids keep the legacy
<code>background</code> spelling). Both are inert until a project is
open: the fields are disabled and the panel says so.</p>
<p>The <strong>Coolant</strong> leaf selected on a demo project. The panel under the tree opens with the file row —
the <strong>Select</strong> dropdown, the path field reading <em>No coolant file (saved inline)</em>, and <strong>Save As&hellip;</strong>
— then the read-only <strong>Name</strong> and <strong>Note</strong> of whatever file is loaded, and then the condition's own
@@ -190,17 +191,19 @@ loses its <code>.default</code> marker on the way, because that marker means <em
yours.</p>
<p>The result is loadable into the next project through the same <strong>Select</strong> dropdown — which is the
point of saving one: a shop with its own measured coolant performance describes it once.</p>
<h2 id="background-temperature">Background temperature</h2>
<p>The <strong>Background</strong> leaf carries a single field, <strong>Background Temperature</strong> in °C: the surrounding
temperature the thermal model works against. It defaults to 25 °C, it belongs to the project exactly
as the coolant condition does, and it is read by the same milling-temperature model and by the feed
optimizer, so it is not a display setting.</p>
<p>Set it to the shop's real ambient. There is no file to load and nothing else to configure: one
number, applied to the whole project.</p>
<h2 id="ambient-temperature">Ambient temperature</h2>
<p>The <strong>Ambient Temperature</strong> leaf carries a single field of the same name, in °C: the shop-floor ambient
temperature the temperature the workpiece, the cutter, the chips and the spindle start at, and the
one the spindle cools toward. The cutting zone itself convects to the <strong>Coolant</strong> leaf's coolant
temperature, not to this one. It defaults to 25 °C, it belongs to the project exactly as the coolant
condition does, and it is read by the same milling-temperature model and by the feed optimizer, so
it is not a display setting.</p>
<p>Set it to the shop's real ambient temperature. There is no file to load and nothing else to
configure: one number, applied to the whole project.</p>
<h2 id="see-also">See Also</h2>
<ul>
<li><a class="xref" href="../../technique/milling-physics/coolant-model.html">Coolant Model</a> — the coefficients, the M-code that selects one, the shipped presets and the file format</li>
<li><a class="xref" href="../../anatomy/general-setup/background-coolant.html">Background / Coolant Page</a> — the Control-Tree editor for these values, field by field</li>
<li><a class="xref" href="../../anatomy/general-setup/background-coolant.html">Environment: Ambient Temperature / Coolant Page</a> — the Control-Tree editor for these values, field by field</li>
<li><a href="index.html">Setup</a> — the rest of the pre-simulation configuration</li>
</ul>
@@ -112,7 +112,7 @@
</ul>
<h2 id="environment">Environment</h2>
<ul>
<li><a href="coolant.html">Coolant</a> — Pick how the cutting zone is cooled, and set the ambient temperature it works against</li>
<li><a href="coolant.html">Coolant</a> — Pick how the cutting zone is cooled, and set the shop's ambient temperature the thermal model starts from</li>
</ul>
<p>Which NC vocabulary a controller brand honours is not a setup task and no longer lives here — it is
<a href="../../technique/nc-dialects/index.html">NC Dialects</a>. Neither is what a cutter's quantities mean: the
@@ -195,7 +195,8 @@ runtime — a machine's moving axes are branches carrying those.</p>
<p><img src="mech-builder-img/branch-transformer.en.png" alt="The same mechanism with a branch picked instead: the graph edge is stroked green, the Identity card names the two anchors it joins with an arrow between them, and the Transformer card reads Dynamic Rotation over a rotation axis, an angle and a pivot"></p>
<p><em>At <code>/util/mech-builder</code>, with a branch picked. A <code>Dynamic Rotation</code> carries the axis it turns
about and the pivot it turns around; the angle is the value a run varies, so the number shown here
is the resting one. The sentence under the fields names the same three parts.</em></p>
is the resting one. The sentence under the fields names two of those parts, the axis and the
angle, and says that the angle is the one a run varies.</em></p>
<h2 id="see-also">See Also</h2>
<ul>
<li><a href="file-explorer.html">File Explorer</a> — the server-side browser behind this page's Load and Save As dialogs, and the roots they offer</li>
@@ -127,8 +127,8 @@ an earlier runtime cannot load them at all</li>
<h3 id="graphics-and-gpu">Graphics and GPU</h3>
<ul>
<li>GPU is used only for 3D rendering/visualization, not for computation acceleration</li>
<li>A working OpenGL context is required even if nobody looks at the 3D view: the rendering engine is initialised at startup, and the software will not start without one</li>
<li>Cloud deployment is supported, but choose an instance that has a GPU with its graphics driver installed. Instances with no GPU, or with a GPU whose driver is missing, are the usual cause of a failed start</li>
<li>The rendering engine is initialised at startup even if nobody looks at the 3D view. A host with no usable OpenGL context still starts and logs one line saying so: NC play, physics and training run, the 3D view does not</li>
<li>Cloud deployment is supported; for the 3D view choose an instance that has a GPU with its graphics driver installed. An instance with no GPU, or with a GPU whose driver is missing or mismatched, runs headless without 3D</li>
</ul>
<h3 id="storage-performance">Storage Performance</h3>
<ul>
@@ -87,6 +87,113 @@
<article data-uid="">
<h1 id="release-note">Release Note</h1>
<h2 id="hinc-packages-version-3226">HiNc Packages Version 3.2.26</h2>
<p>Rotary-axis correctness on SoftNc, cutting forces that no longer depend on how the geometry kernel
tiled the contact surface, and a process that survives a host without OpenGL. The 3.1.175 → 3.2 line
jump is the 3.2.7 entry below; the long form is still
<a href="upgrading-to-3.2/index.html">Upgrading from 3.1.175 to 3.2</a>.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p><strong>Adoption status.</strong> Verification is still in progress across most areas.</p>
<p><strong>Do not put 3.2 NC optimization into production.</strong> It is not finished on this line.
Work that depends on optimization should stay on the 3.1 line, serviced as
<code>3.1.175.&lt;patch&gt;</code>. The Blazor front end tracks the 3.2 packages, so it is not a way
to stay on the 3.1 behaviour.</p>
<p>The 3.2.24 hold on SoftNc canned cycles that index a rotary axis is <strong>lifted</strong> — see the
first entry below.</p>
</div>
<ul>
<li><strong>SoftNc canned cycles take rotary axis words.</strong> A G81G89 repeat block carrying an A / B / C
word indexes the table and drills again — the standard bolt-circle shape — where 3.2.24 either
skipped the hole or drilled it at the previous angle: a rotary-only repeat fires the cycle, a
mixed block pre-positions XYZ and the table in one simultaneous move before the strokes, and
under <code>G68.2</code> without RTCP the feature frame stays pinned in machine space so the hole stays put
while the workpiece turns. Under <code>G91</code> only the words the block itself spoke are increments, so
an X-pitch repeat no longer doubles Y. Hole bottoms match the HardNc replay of a customer's
bolt-circle program to 0.000 mm on all twelve C-indexed blocks, and setting
<a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_EnableSoftNcRunner">EnableSoftNcRunner</a> <code>false</code> is no longer needed for
such programs. See
<a href="upgrading-to-3.2/brand-nc-language-coverage.html#fanuc-and-iso-common">Brand NC language coverage</a>
and <a href="../technique/nc-dialects/controller-iso.html#canned-cycles">ISO core</a></li>
<li><strong>A rotary word under modal <code>G91</code> is an increment on SoftNc.</strong> <code>G91 … C20.</code> followed by <code>C20.</code>
leaves the table at 40, not 20; a per-word directive (<code>C=AC(90)</code>, <code>ACP</code> / <code>ACN</code>, <code>IC()</code>) still
wins over the modal state, and a spoken <code>G91 B270.</code> stays a +270° traverse instead of folding to
90°. A <code>G91 G28</code> rotary intermediate anchors on the previous modal angle (<code>G91 G28 C10.</code> from
C90 passes through 100, then returns home) instead of on zero. HardNc keeps its documented
absolute reading of a rotary word under <code>G91</code> and warns. The programmed deltas are recorded on
the block in <a class="xref" href="../api/Hi.NcParsers.Keywords.IncrementalWords.html">IncrementalWords</a>, beside the
<a class="xref" href="../api/Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a> the block spoke. See
<a href="upgrading-to-3.2/results-that-change-on-upgrade.html">Results that change on upgrade</a></li>
<li><strong>Rotary IK no longer reports failure from a pole seed.</strong> Every solve attempt now runs its
coarse stage and its polish, so a small tilt with a large azimuth that used to run out of
iterations a few milliradians short — and was then refused by <code>G53.1</code>, leaving the table at
A = C = 0 with the tilt still active and the whole path rotated off the part — solves to
1e-8 rad. On a Fanuc IJK grid from the pole seed, 54 / 69 failures per A/C chain become 0; on a
CL program 44 dropped endpoints of 536 become 0. The happy path is unchanged bit for bit; only a
failed attempt pays one extra polish</li>
<li><strong>Rotary travel picks the reachable IK branch.</strong> When the nearest solution lies outside an axis'
configured travel, the axial solve searches the other branches (sign, half-turn and supplement
combinations) and keeps the admissible one nearest the entry; <code>G53.1</code>, <code>G68.2</code>, <code>CYCLE800</code>,
<code>PLANE SPATIAL</code> and the <code>LN</code> vector syntax pass the travel through the new admissibility overloads
of <a class="xref" href="../api/Hi.Numerical.Xyzabc.IMachineKinematics.html">IMachineKinematics</a> and
<a class="xref" href="../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_RotaryAdmissibility_">RotaryAdmissibility</a>. The travel itself now
reaches SoftNc from every project: a stroke limit declared only in the legacy machine-limits
boxes is copied into the controller parameter table on load for the axes carrying no end there
(explicit rows win), where 3.2.24 checked such a project against nothing. Both stroke checks
apply <a class="xref" href="../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_Tolerance">Tolerance</a>, so an axis parked exactly on its
limit is not reported. See
<a href="../anatomy/general-setup/controller/machine/per-axis-tables.html">Per-axis tables</a></li>
<li><strong>A rapid traverse that removes stock is reported.</strong> <code>Play-RapidCut--Detected</code> folds the G00
steps of one NC line that touched the workpiece into one validation warning, anchored on the
line's first cutting step and carrying the line's removed volume (geometry only), its
touching-step count and its largest cutting depth. The line total is gated by the project-level
<a class="xref" href="../api/Hi.MachiningProcs.MachiningActRunnerConfig.html#Hi_MachiningProcs_MachiningActRunnerConfig_RapidCutVolumeThreshold_mm3">RapidCutVolumeThreshold_mm3</a> (default 0: any
contact reports); a step with the spindle stopped is left to collision detection while that is
on. <a class="xref" href="../api/Hi.MachiningSteps.MachineMotionStep.html#Hi_MachiningSteps_MachineMotionStep_IsRapid">IsRapid</a> marks the step. See
<a href="upgrading-to-3.2/new-diagnostics.html">New diagnostics</a></li>
<li><strong>Cutterworkpiece engagement no longer depends on how the contact surface was tiled.</strong> The scan
that turns a step's contact contours into the engaged angle ranges of
<a class="xref" href="../api/Hi.Milling.Engagements.LayerMillingEngagement.html">LayerMillingEngagement</a> dropped its dense-step bounding-box shortcut
and its winding dependence; a cylinder wall and a flat floor sector reproduce their analytic arcs
to 1e-9 rad at four tessellations, and the managed and native paths stay bit-identical.
<strong>Re-running an existing program moves the forces</strong> on most engaged steps — floors that used to
register as empty and side ranges fragmented by phantom 1° gaps move the most — and coefficient
sets trained before this build embed the old engagement. See
<a href="upgrading-to-3.2/results-that-change-on-upgrade.html">Results that change on upgrade</a></li>
<li><strong>The cube tree folds a re-cut flat region again.</strong> A comparison in the simplification gate had
been inverted since 2023, so a floor roughened by one pass and re-cut flat by a later one stayed
at its finest level for the life of the tree. On a 1000-move CL replay the node count drops 17%
and the peak working set 8%; the meshed-geometry writer and the fly-piece remover now tolerate a
fold landing under them mid-cut instead of crashing. See
<a href="upgrading-to-3.2/geometry-rendering-and-stability.html">Geometry, rendering and native stability</a></li>
<li><strong>A host with no usable OpenGL no longer aborts the process.</strong> Where the native display
initialiser used to kill the process at startup — every service on a machine whose graphics
driver and kernel module disagree — it now reports, and NC play, physics and training run
without 3D. <a class="xref" href="../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_IsGlAvailable">IsGlAvailable</a> carries the verdict and HiNc logs it once at
startup; a host must not obtain a <a class="xref" href="../api/Hi.Disp.DispEngine.html">DispEngine</a> while it is <code>false</code>. See
<a href="../product/system-requirements.html">System requirements</a></li>
<li><strong>Packaging.</strong> The Linux licence-key native library in the HiDisp package ships stripped: the
protected file no longer carries debug information</li>
</ul>
<p><strong>Committed after the 3.2.26 pack — these ship in the next package build:</strong></p>
<ul>
<li><strong><code>BackgroundTemperature</code> renames to <code>AmbientTemperature</code>.</strong>
<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a> /
<a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a> (and the same
pair on <a class="xref" href="../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>) name the shop-floor
temperature the workpiece, cutter, chips and spindle start at and the spindle cools toward; the
old names remain as <code>[Obsolete]</code> delegates. A <code>.hincproj</code> now writes <code>&lt;AmbientTemperature_C&gt;</code> and
still reads the legacy element and the 2019 wrapper, so no project needs editing. See
<a href="../manual/setup/coolant.html">Coolant</a> and
<a href="upgrading-to-3.2/breaking-changes.html#7-signature-and-shape-changes">Breaking changes</a></li>
<li><strong>Every NC-pipeline rewind raises one event.</strong> Suit rewiring, <code>PowerReset</code> and
<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ResetRuntime_">ResetRuntime</a> share one seam that drops the runner session
state and the NC diagnostics and raises
<a class="xref" href="../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnNcPipelineReset">OnNcPipelineReset</a> before the next file's pieces
arrive, so a consumer keyed by file / sentence index drops its stale index in step instead of
merging the next file into the previous file's numbers. See
<a href="upgrading-to-3.2/session-project-and-commands.html">Session, project and commands</a></li>
</ul>
<h2 id="hinc-packages-version-3224">HiNc Packages Version 3.2.24</h2>
<p>Correctness and coverage that landed after 3.2.7. The 3.1.175 → 3.2 line jump is the
3.2.7 entry below; the long form is still
@@ -258,11 +258,21 @@ extended table (P1P48). A selected row nobody has entered reports <code>Coord
spelling of <code>G20</code> and reports <code>Unit--InchNotSupported</code> rather than silently switching units.
<code>G05.1 Q1</code> / <code>Q0</code> is AICC / Nano Smoothing (recognized). Bare <code>G05 P{n}</code> is a different feature
(HPCC) and is consumed without changing programmed coordinates, reported under the <code>Hpcc--*</code> ids.</li>
<li><strong>Canned-cycle repeats do not take rotary words on SoftNc.</strong> The G73G89 family expands XYZ / R /
Q / F / P / K strokes. An A / B / C word on a repeat is not taken: a rotary-only repeat does not
fire the cycle, a mixed block drops the rotary word, and under G68.2 the hole follows the table.
<em>Not finished on this line, see Adoption status on the <a href="../index.html">release-note page</a>.</em> The
HardNc fallback indexes those blocks the way a control does.</li>
<li><strong>Canned-cycle repeats take rotary words on SoftNc.</strong> The G73G89 family expands XYZ / R / Q /
F / P / K strokes, and a repeat block carrying an A / B / C word indexes the table and drills
again, the way a control does: a rotary-only repeat fires the cycle, a mixed block pre-positions
XYZ and the table in one simultaneous move before the strokes, and under G68.2 without RTCP the
feature frame stays pinned in machine space so the hole stays put while the workpiece turns. Under
G91 only the words the block itself spoke are increments. The hold that 3.2.24 placed on these
programs is lifted; <code>EnableSoftNcRunner = false</code> is no longer needed for them.</li>
<li><strong>A rotary word under modal G91 is an increment on SoftNc.</strong> A bare A / B / C word follows the
block's modal positioning onto the same anchor + delta path as Siemens <code>IC()</code> and klartext <code>IC+</code>:
<code>G91 … C20.</code> then <code>C20.</code> leaves the table at 40. A per-word directive (<code>C=AC(90)</code>, <code>ACP</code> / <code>ACN</code>,
<code>IC()</code>) still beats the modal state, and a spoken <code>G91 B270.</code> stays a +270° traverse instead of
folding to 90°. A <code>G91 G28</code> rotary intermediate anchors on the previous modal angle, then
returns home. HardNc keeps its absolute reading of a rotary word under G91 and warns. The
programmed deltas are recorded in <a class="xref" href="../../api/Hi.NcParsers.Keywords.IncrementalWords.html">IncrementalWords</a>, beside the
<a class="xref" href="../../api/Hi.NcParsers.Keywords.RotaryWords.html">RotaryWords</a> the block spoke.</li>
</ul>
<h2 id="cross-brand">Cross-brand</h2>
<ul>
@@ -386,6 +386,13 @@ the authored one — the only face a project file persists, reached as
physics, collision and execution display read; it is rebuilt from the authored face at project
assignment and at session boundaries, so a value written onto it is discarded rather than saved.
See <a href="../../technique/api-foundations/getting-started.html">Getting started</a>.</li>
<li><code>BackgroundTemperature_C</code> / <code>_K</code> on both equipment faces rename to
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a> /
<a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a> (and the same pair
on <a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html">MachiningEquipment</a>): the shop-floor temperature the
workpiece, cutter, chips and spindle start at and the spindle cools toward. The old names remain
as <code>[Obsolete]</code> delegates, so nothing stops compiling. A <code>.hincproj</code> now writes
<code>&lt;AmbientTemperature_C&gt;</code>; the reader still accepts the legacy element and the 2019 wrapper.</li>
</ul>
<h2 id="8-defaults-and-gates-that-changed">8. Defaults and gates that changed</h2>
<ul>
@@ -120,6 +120,22 @@ mirrors <code>RemoveBySweepingVolume</code> — the geometry-layer symmetric poi
no deposition step in the machining runner yet, so this is a geometry-level API only.</li>
<li><strong><a class="xref" href="../../api/Hi.Milling.FluteContours.FreeformBottomContour.html">FreeformBottomContour</a></strong> is the user-editable point-list bottom
contour, mirroring the side contour with the key axis switched to radius.</li>
<li><strong>A host with no usable OpenGL no longer aborts the process.</strong> The native display initialiser
used to end the whole process when the GL loader failed — before any NC play, physics or training,
none of which need GL — which is what made every service on a machine whose graphics driver and
kernel module disagree unstartable, and kept it dead until the driver was fixed. It now reports
and returns; <a class="xref" href="../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_IsGlAvailable">IsGlAvailable</a> carries the verdict, <code>ContextProjDepth</code> reads
0 in that state, and HiNc logs one line at startup saying so. The contract is that a host must
not obtain a <a class="xref" href="../../api/Hi.Disp.DispEngine.html">DispEngine</a> while <code>IsGlAvailable</code> is <code>false</code>, rather than guard
individual draw calls.</li>
<li><strong>The cube tree folds a re-cut flat region again.</strong> A comparison in the simplification gate had
been inverted since 2023: it demanded the marching-cubes ambiguous face pattern instead of
forbidding it, so almost no cell reached the reproduction test and a floor roughened by one pass
and re-cut flat by a later one stayed at its finest level for the life of the tree. 128 of the 256
corner masks now pass, the 1e-9 reproduction test behind the gate is unchanged. On a 1000-move CL
replay the node count drops 17% and the peak working set 8%. Because folds are now routine, the
meshed-geometry writer and the fly-piece remover tolerate a child array folded away under them
while a cut runs on another thread — a snapshot taken mid-cut stays torn, but no longer crashes.</li>
</ul>
</article>
@@ -88,7 +88,7 @@
<h1 id="upgrading-from-31175-to-32">Upgrading from 3.1.175 to 3.2</h1>
<p>These pages are the long form of the 3.1.175 → 3.2 line — the 3.2.7 entry and the
<a href="../index.html">3.2.24</a> incremental drop. They exist because 3.2 is not
<a href="../index.html">3.2.24 and 3.2.26</a> incremental drops. They exist because 3.2 is not
an increment on the last release most callers hold — it is the accumulation of everything that
landed after the 3.1.175 package set, delivered in one step.</p>
<p>Read them in order the first time. The two sections that decide whether an upgrade is a recompile or
@@ -99,9 +99,9 @@ capability you can adopt when you need it.</p>
<h5>Important</h5>
<p>Read the <strong>Adoption status</strong> note on the <a href="../index.html">release-note page</a> before planning around this.
The short version: 3.2 is published for review, verification is still in progress across most
areas, <strong>NC optimization is not finished on this line</strong>, and <strong>SoftNc canned-cycle indexing
with rotary A/B/C words is not finished</strong> — work that depends on either should stay on 3.1,
serviced as <code>3.1.175.&lt;patch&gt;</code>, or run with SoftNc off for the rotary-cycle case.</p>
areas and <strong>NC optimization is not finished on this line</strong> — work that depends on it should stay
on 3.1, serviced as <code>3.1.175.&lt;patch&gt;</code>. The 3.2.24 hold on SoftNc canned cycles that index a
rotary axis is lifted in 3.2.26.</p>
</div>
<h2 id="pages">Pages</h2>
<p>Ordered the way to read them: what the package numbers mean, then the two sections that decide whether the upgrade is a recompile or an afternoon, then the new capability, adopted when needed.</p>
@@ -191,6 +191,10 @@ step touched the workpiece but no touched step carries a physics brief — namin
gate it: a tool bound to the spindle, the spindle actually rotating, and the workpiece cutting
parameter). That last state previously surfaced one process later, as a training run gathering zero
samples.</li>
<li><strong>Engagement is tessellation-invariant.</strong> The scan that turns a step's contact contours into
the engaged angle ranges no longer depends on how many polygons the geometry kernel cut the
contact surface into; forces on existing programs move accordingly — see
<a href="results-that-change-on-upgrade.html">Results that change on upgrade</a>.</li>
<li><strong>Performance</strong> is collected in its own section below.</li>
</ul>
@@ -242,6 +242,31 @@ them on the bench fixtures); the largest moves are floors that used to register
whole bottom disc dropped out — and side ranges that were fragmented into pieces separated by
phantom 1° gaps. Coefficient sets trained before this change embed the old engagement of their
training program; retrain on a replay if that fit matters.</li>
<li><strong>SoftNc canned cycles index a rotary axis.</strong> A G81G89 repeat block carrying an A / B / C word
used to skip the hole (rotary-only repeat), drill it at the previous angle (mixed block) or let it
follow the table under <code>G68.2</code>. It now indexes the table and drills again, pre-positioning XYZ and
the table in one move, and under <code>G68.2</code> without RTCP the feature frame stays pinned in machine
space. Under <code>G91</code> only the words the block itself spoke are increments — an X-pitch repeat used
to add the previous cycle's Y a second time and drill upward. A bolt-circle program that ran
short of holes, or drilled them in the wrong place, now matches the HardNc replay.</li>
<li><strong>A rotary word under modal <code>G91</code> is an increment.</strong> <code>G91 … C20.</code> then <code>C20.</code> left the table at
20; it is 40 now. A spoken <code>G91 B270.</code> stays a +270° traverse instead of folding to 90°, and a
<code>G91 G28</code> rotary intermediate anchors on the previous modal angle instead of on zero (<code>G91 G28 C0</code> from C90 now holds the table and returns home instead of swinging to 0 first). Per-word
directives (<code>C=AC(90)</code>, <code>ACP</code> / <code>ACN</code>, <code>IC()</code>) are unchanged. HardNc keeps its absolute reading
and warns.</li>
<li><strong>Rotary IK from a pole seed.</strong> Every solve attempt now runs coarse then polish, so a small tilt
with a large azimuth that ran out of iterations a few milliradians short — and was refused by
<code>G53.1</code>, leaving the table at A = C = 0 with the tilt active and the path rotated off the part —
now solves to 1e-8 rad. On a Fanuc IJK grid from the pole seed 54 / 69 failures per A/C chain
become 0; a CL program goes from 44 dropped endpoints of 536 to 0.</li>
<li><strong>The rotary branch inside the travel wins.</strong> When the nearest IK solution lies outside an axis'
configured travel, <code>G53.1</code>, <code>G68.2</code>, <code>CYCLE800</code>, <code>PLANE SPATIAL</code> and <code>LN</code> now take the admissible
branch nearest the entry (sign, half-turn and supplement combinations are searched); a posture
the cradle cannot take is no longer commanded silently. This needs the travel to be known, and
it now is on every project: stroke limits declared only in the legacy machine-limits boxes are
copied into the controller parameter table on load for the axes carrying no end there, where they
used to be checked against nothing on SoftNc. An axis parked exactly on its limit is no longer
reported (<a class="xref" href="../../api/Hi.NcParsers.Dependencys.StrokeLimitUtil.html#Hi_NcParsers_Dependencys_StrokeLimitUtil_Tolerance">Tolerance</a>).</li>
<li>The SoftNc pipeline is the default engine.</li>
<li>Executed <code>SyntaxPiece</code>s freeze to UTF-8 (below), so their <code>JsonObject</code> is a fresh read-only snapshot
per call rather than a retained live graph.</li>
@@ -158,6 +158,13 @@ rewinds the NC-runner session state, so the next play restarts file and line ind
the way <code>PowerReset</code> does, and it resets the CL device pose to identity. It no longer clobbers
<code>MachiningResolution_mm</code>: the runtime resolution is seeded from the workpiece's initial resolution
only when a project loads, so an explicit override survives a runtime reset and a workpiece swap.</li>
<li><strong>Every NC-pipeline rewind raises one event.</strong> Suit rewiring, <code>PowerReset</code> and
<a class="xref" href="../../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_ResetRuntime_">ResetRuntime</a> each dropped the runner session state on their
own with no notification, so the file / sentence counters restarted at 0 on the next play while
the session and its subscribers lived on — a consumer keyed by file index merged the next NC file
into the previous file's numbers. One seam now performs the reset (session state and the NC
diagnostics) and raises <a class="xref" href="../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnNcPipelineReset">OnNcPipelineReset</a>, an
app-lifetime event, before the next file's pieces arrive.</li>
<li><strong>Mixed runner kinds in one session are refused.</strong> <code>NcRunnerSessionState</code> remembers the runner that
initialised it and <a class="xref" href="../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_RunNcLines_">RunNcLines</a> refuses a different one with
<code>RunNcLines--RunnerMismatch</code> — reachable now that <code>NcKind.Auto</code> makes mixed-kind missions a
@@ -201,7 +201,7 @@ assignment and at session boundaries, so a value written onto it is discarded ra
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_MachiningChain">MachiningChain</a> - Configure the complete machine tool including geometry, kinematic chain, and coordinate transformations</li>
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_SpindleCapability">SpindleCapability</a> - Configure <a class="xref" href="../../api/Hi.Milling.SpindleCapability.html">SpindleCapability</a></li>
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_CoolantHeatCondition">CoolantHeatCondition</a> - Configure coolant heat conditions</li>
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_C">BackgroundTemperature_C</a> - Configure the environment background temperature in Celsius; <a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_BackgroundTemperature_K">BackgroundTemperature_K</a> holds the same value in Kelvin</li>
<li><a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C">AmbientTemperature_C</a> - Configure the ambient (shop-floor) temperature in Celsius, the temperature the thermal model starts from; <a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K">AmbientTemperature_K</a> holds the same value in Kelvin</li>
</ul>
</li>
<li>Variable settings:
@@ -225,7 +225,7 @@ means, to how the condition is stored.</p>
<h2 id="see-also">See Also</h2>
<ul>
<li><a href="../../manual/setup/coolant.html">Coolant</a> — picking a cooling type in the application, which is the whole of the end-user setup</li>
<li><a class="xref" href="../../anatomy/general-setup/background-coolant.html">Background / Coolant Page</a> — the Control-Tree editor for these values, field by field</li>
<li><a class="xref" href="../../anatomy/general-setup/background-coolant.html">Environment: Ambient Temperature / Coolant Page</a> — the Control-Tree editor for these values, field by field</li>
<li><a href="machinability.html">Process Machinability</a> — the thermal-yield ratio this model's temperatures feed</li>
</ul>
@@ -151,7 +151,7 @@ its own for the rest — see <a href="#siemens-sinumerik">Siemens SINUMERIK</a>.
</tr>
<tr>
<td><code>G28</code></td>
<td>Reference-point (home) return through an intermediate point.</td>
<td>Reference-point (home) return through an intermediate point. Under <code>G91</code> a rotary word gives the intermediate as an increment on the previous modal angle.</td>
</tr>
<tr>
<td><code>G53</code></td>
@@ -190,7 +190,7 @@ its own for the rest — see <a href="#siemens-sinumerik">Siemens SINUMERIK</a>.
</tr>
<tr>
<td><code>G90</code> / <code>G91</code></td>
<td>Absolute / incremental positioning.</td>
<td>Absolute / incremental positioning. Under <code>G91</code> a bare rotary word is an increment too; a per-word directive (<code>C=AC(90)</code>, <code>ACP</code> / <code>ACN</code>, <code>IC()</code>) overrides the modal state.</td>
</tr>
<tr>
<td><code>G94</code> / <code>G95</code></td>
@@ -376,11 +376,12 @@ tool-house refresh is chosen on <a class="xref" href="../../anatomy/general-setu
with its own feedrate, so material removal and cycle time come out of the real motion rather than an
approximation. Modal repetition and <code>G91</code> incremental cycle data are resolved before the strokes are
built.</p>
<p>On SoftNc (the 3.2 default) a repeat block is the XYZ / <code>R</code> / <code>Q</code> / <code>F</code> / <code>P</code> / <code>K</code> family. An
A / B / C word on a repeat is <strong>not taken</strong>: a rotary-only repeat does not fire the cycle, a mixed
block drops the rotary word, and under <code>G68.2</code> the hole follows the table. Programs that index a
rotary axis that way should run with SoftNc off — the HardNc fallback indexes those blocks the way a
control does. See the <a href="../../release-note/index.html">Adoption status</a> note.</p>
<p>A repeat block carrying an A / B / C word indexes the table and drills again, the standard way to
drill a bolt circle: a rotary-only repeat fires the cycle (any axis word repeats it), a mixed block
pre-positions XYZ and the table in one simultaneous move before the strokes, and under <code>G68.2</code>
without RTCP the feature frame stays pinned in machine space so the hole stays put while the
workpiece turns. Under <code>G91</code> only the words the block itself spoke are increments — an X-pitch
repeat does not move Y again.</p>
<h3 id="polar-interpolation">Polar interpolation</h3>
<p><code>G12.1</code> turns polar coordinate interpolation on and <code>G13.1</code> turns it off. Inside a polar section the
<code>X</code> word is a <strong>diameter</strong> and the <code>C</code> word is a hypothetical Cartesian axis in millimetres, not
@@ -98,7 +98,7 @@
<h2 id="core-concept-dispengine-and-idisplayee">Core Concept: DispEngine and IDisplayee</h2>
<p>At the heart of the rendering system is the relationship between <a class="xref" href="../../api/Hi.Disp.DispEngine.html">DispEngine</a> and <a class="xref" href="../../api/Hi.Disp.IDisplayee.html">IDisplayee</a>:</p>
<ul>
<li><a class="xref" href="../../api/Hi.Disp.DispEngine.html">DispEngine</a>: The rendering engine that manages the OpenGL context and handles user interaction</li>
<li><a class="xref" href="../../api/Hi.Disp.DispEngine.html">DispEngine</a>: The rendering engine that manages the OpenGL context and handles user interaction. <a class="xref" href="../../api/Hi.Disp.DispEngine.html#Hi_Disp_DispEngine_IsGlAvailable">IsGlAvailable</a> reports whether the process obtained a usable context; a host must not obtain a <code>DispEngine</code> while it is <code>false</code> — NC play, physics and training still run in that state, rendering does not</li>
<li><a class="xref" href="../../api/Hi.Disp.IDisplayee.html">IDisplayee</a>: The interface that defines objects that can be rendered by the DispEngine</li>
</ul>
<p>This relationship is fundamental - <strong>the purpose of <a class="xref" href="../../api/Hi.Disp.DispEngine.html">DispEngine</a> is to render <a class="xref" href="../../api/Hi.Disp.IDisplayee.html">IDisplayee</a> objects</strong>.</p>
@@ -274,7 +274,7 @@
<p>See <a class="xref" href="../technique/machine-capability/spindle-capability.html">Spindle Capability</a>.</p>
<h2 id="3-environment">3. Environment</h2>
<ul>
<li><strong>Coolant type</strong> — which coolant is used. <strong>Optional</strong> — if omitted, a default coolant setting is applied. The remaining coolant/thermal values (temperature, convection, background temperature) keep their defaults too; they only affect thermal and wear results.</li>
<li><strong>Coolant type</strong> — which coolant is used. <strong>Optional</strong> — if omitted, a default coolant setting is applied. The remaining coolant/thermal values (temperature, convection, ambient temperature) keep their defaults too; they only affect thermal and wear results.</li>
</ul>
<p>See <a href="../manual/setup/coolant.html">Coolant</a>.</p>
<h2 id="4-workpiece">4. Workpiece</h2>
+72 -14
View File
@@ -8,7 +8,7 @@ references:
name: APT Profile Panel
href: anatomy/tool-house/cutter/apt-profile-panel.html
- uid: Anatomy-BackgroundCoolant
name: Background / Coolant
name: 'Environment: Ambient Temperature / Coolant'
href: anatomy/general-setup/background-coolant.html
- uid: Anatomy-Box3dControl
name: Box3d Editor
@@ -69657,6 +69657,32 @@ references:
fullName.vb: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.New
nameWithType: MachiningEquipment.MachiningEquipment
nameWithType.vb: MachiningEquipment.New
- uid: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C
name: AmbientTemperature_C
href: api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_C
commentId: P:Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C
fullName: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C
nameWithType: MachiningEquipment.AmbientTemperature_C
- uid: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C*
name: AmbientTemperature_C
href: api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_C_
commentId: Overload:Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C
isSpec: "True"
fullName: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_C
nameWithType: MachiningEquipment.AmbientTemperature_C
- uid: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_K
commentId: P:Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K
fullName: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K
nameWithType: MachiningEquipment.AmbientTemperature_K
- uid: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K*
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_AmbientTemperature_K_
commentId: Overload:Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K
isSpec: "True"
fullName: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.AmbientTemperature_K
nameWithType: MachiningEquipment.AmbientTemperature_K
- uid: Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.Asmb
name: Asmb
href: api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_Asmb
@@ -70385,6 +70411,32 @@ references:
fullName.vb: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.New
nameWithType: SetupEquipment.SetupEquipment
nameWithType.vb: SetupEquipment.New
- uid: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C
name: AmbientTemperature_C
href: api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C
commentId: P:Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C
fullName: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C
nameWithType: SetupEquipment.AmbientTemperature_C
- uid: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C*
name: AmbientTemperature_C
href: api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_C_
commentId: Overload:Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C
isSpec: "True"
fullName: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_C
nameWithType: SetupEquipment.AmbientTemperature_C
- uid: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K
commentId: P:Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K
fullName: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K
nameWithType: SetupEquipment.AmbientTemperature_K
- uid: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K*
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_AmbientTemperature_K_
commentId: Overload:Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K
isSpec: "True"
fullName: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.AmbientTemperature_K
nameWithType: SetupEquipment.AmbientTemperature_K
- uid: Hi.Machining.MachiningEquipmentUtils.SetupEquipment.Asmb
name: Asmb
href: api/Hi.Machining.MachiningEquipmentUtils.SetupEquipment.html#Hi_Machining_MachiningEquipmentUtils_SetupEquipment_Asmb
@@ -70974,6 +71026,19 @@ references:
fullName.vb: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.New
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.StepMotionSnapshot
nameWithType.vb: MachiningVolumeRemovalProc.StepMotionSnapshot.New
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AmbientTemperature_K
commentId: P:Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
fullName: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K*
name: AmbientTemperature_K
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AmbientTemperature_K_
commentId: Overload:Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
isSpec: "True"
fullName: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.AmbientTemperature_K
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AnchorTransformDictionary
name: AnchorTransformDictionary
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_AnchorTransformDictionary
@@ -70987,19 +71052,6 @@ references:
isSpec: "True"
fullName: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.AnchorTransformDictionary
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.AnchorTransformDictionary
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
name: BackgroundTemperature_K
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_BackgroundTemperature_K
commentId: P:Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
fullName: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K*
name: BackgroundTemperature_K
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_BackgroundTemperature_K_
commentId: Overload:Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
isSpec: "True"
fullName: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
nameWithType: MachiningVolumeRemovalProc.StepMotionSnapshot.BackgroundTemperature_K
- uid: Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.CoolantHeatCondition
name: CoolantHeatCondition
href: api/Hi.Machining.MachiningVolumeRemovalProc.StepMotionSnapshot.html#Hi_Machining_MachiningVolumeRemovalProc_StepMotionSnapshot_CoolantHeatCondition
@@ -72466,6 +72518,12 @@ references:
commentId: E:Hi.MachiningProcs.LocalProjectService.OnNcFileRan
fullName: Hi.MachiningProcs.LocalProjectService.OnNcFileRan
nameWithType: LocalProjectService.OnNcFileRan
- uid: Hi.MachiningProcs.LocalProjectService.OnNcPipelineReset
name: OnNcPipelineReset
href: api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnNcPipelineReset
commentId: E:Hi.MachiningProcs.LocalProjectService.OnNcPipelineReset
fullName: Hi.MachiningProcs.LocalProjectService.OnNcPipelineReset
nameWithType: LocalProjectService.OnNcPipelineReset
- uid: Hi.MachiningProcs.LocalProjectService.OnShellMessageAdded
name: OnShellMessageAdded
href: api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_OnShellMessageAdded