Archived
538 lines
34 KiB
HTML
538 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Program Data Plane | HiAPI-C# 2025 </title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="title" content="Program Data Plane | HiAPI-C# 2025 ">
|
||
|
||
|
||
<link rel="icon" href="../../../../img/HiAPI.favicon.ico">
|
||
<link rel="stylesheet" href="../../../../public/docfx.min.css">
|
||
<link rel="stylesheet" href="../../../../public/main.css">
|
||
<meta name="docfx:navrel" content="../../../../toc.html">
|
||
<meta name="docfx:tocrel" content="toc.html">
|
||
|
||
<meta name="docfx:rel" content="../../../../">
|
||
|
||
|
||
|
||
<meta name="loc:inThisArticle" content="In this article">
|
||
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
||
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
||
<meta name="loc:tocFilter" content="Filter by title">
|
||
<meta name="loc:nextArticle" content="Next">
|
||
<meta name="loc:prevArticle" content="Previous">
|
||
<meta name="loc:themeLight" content="Light">
|
||
<meta name="loc:themeDark" content="Dark">
|
||
<meta name="loc:themeAuto" content="Auto">
|
||
<meta name="loc:changeTheme" content="Change theme">
|
||
<meta name="loc:copy" content="Copy">
|
||
<meta name="loc:downloadPdf" content="Download PDF">
|
||
|
||
<script type="module" src="./../../../../public/docfx.min.js"></script>
|
||
|
||
<script>
|
||
const theme = localStorage.getItem('theme') || 'auto'
|
||
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
||
</script>
|
||
|
||
</head>
|
||
|
||
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
|
||
<header class="bg-body border-bottom">
|
||
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
||
<div class="container-xxl flex-nowrap">
|
||
<a class="navbar-brand" href="../../../../index.html">
|
||
<img id="logo" class="svg" src="../../../../img/HiAPI.logo.png" alt="">
|
||
|
||
</a>
|
||
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
||
<i class="bi bi-three-dots"></i>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navpanel">
|
||
<div id="navbar">
|
||
<form class="search" role="search" id="search">
|
||
<i class="bi bi-search"></i>
|
||
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
</header>
|
||
|
||
<main class="container-xxl">
|
||
<div class="toc-offcanvas">
|
||
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
||
<div class="offcanvas-header">
|
||
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
||
</div>
|
||
<div class="offcanvas-body">
|
||
<nav class="toc" id="toc"></nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="content">
|
||
<div class="actionbar">
|
||
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
||
<i class="bi bi-list"></i>
|
||
</button>
|
||
|
||
<nav id="breadcrumb"></nav>
|
||
</div>
|
||
|
||
<article data-uid="Anatomy-ControllerProgramData">
|
||
<h1 id="program-data-plane">Program Data Plane</h1>
|
||
|
||
<p>Program Data is the second of the Controller branch's two plane stems: the coordinate, offset and
|
||
variable tables that belong to the workpiece rather than to the control, edited one leaf at a time.
|
||
It lives on the General Setup page at <code>/general-setup</code> under the Control-Tree id
|
||
<code>equipment/controller/program-data</code>, and each of its leaves takes that id plus one segment —
|
||
<code>work-coordinates</code>, <code>tool-offsets</code>, <code>siemens-tool-offsets</code>, <code>tool-names</code>, <code>datum-presets</code>,
|
||
<code>datum-shifts</code>, <code>frames</code>, <code>retained-variables</code>, <code>r-parameters</code>. The stem is not gated: it is part of
|
||
the branch builder's return value rather than a conditional entry, so it appears wherever a runner
|
||
resolves and always carries the two leaves no flag guards.</p>
|
||
<div class="IMPORTANT">
|
||
<h5>Important</h5>
|
||
<p>Anatomy makes no claim that any id named here is stable across versions. The migration hop that
|
||
keeps an older <code>?tree=</code> value resolving is described in
|
||
<a class="xref" href="../../../platform/tree-ids-and-routes.html">Tree Ids and Routes</a>.</p>
|
||
</div>
|
||
<p>Selecting the stem shows the shared group editor: its own introduction over a clickable list of its
|
||
children. The introduction reads <em>"Data that travels with the workpiece / project — work-coordinate
|
||
offsets (G54…), tool offsets and the brand-specific per-case tables. Kept on the project even when
|
||
the runner file is swapped."</em></p>
|
||
<p>Every leaf below follows the branch's shared editing rules — one read on mount, per-control commit,
|
||
capture-assign-await-restore on failure, a dense markup table with no sort and no pagination, and the
|
||
two empty layers. Those rules, and the places this plane departs from them, are
|
||
<a class="xref" href="../editing-contract.html">Editing Contract</a>.</p>
|
||
<h2 id="where-the-data-actually-lives">Where the Data Actually Lives</h2>
|
||
<p>The stem's introduction names a storage location, and here — unlike the machine stem's own
|
||
introduction — it holds for every leaf. What it does not say is that the location is not a file.</p>
|
||
<h3 id="one-list-inlined-in-the-project">One list, inlined in the project</h3>
|
||
<p><a class="xref" href="../../../../api/Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> carries the runner beside the project's own
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.NcRunnerSuit.html#Hi_NcParsers_NcRunnerSuit_PerCaseNcDependencyList">PerCaseNcDependencyList</a>, and serializes the two side by side. The
|
||
runner half can be written to a side file; the per-case half never is — the suit writes it as a
|
||
nested element with no file reference of its own, so it lands inside whatever file the owning project
|
||
writes. Every table this plane edits is an entry of that one list.</p>
|
||
<p>No panel and no endpoint reads or writes a table by reaching into that list by name. The one place
|
||
that addresses the list directly is the sweep that follows a runner swap, and it removes whole
|
||
entries rather than editing any value in one. A brand preset's pipeline list carries an
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.INcDependencyProxy.html">INcDependencyProxy</a> in place of each of these tables, and every read
|
||
and write resolves through
|
||
<a class="xref" href="../../../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_GetEffectiveNcDependencyList_">GetEffectiveNcDependencyList</a><small>(API)</small>, which substitutes
|
||
the project's table for the placeholder. That is also what the snapshot flags probe, so the tree
|
||
grows a leaf for the concrete table and never for the proxy —
|
||
<a class="xref" href="../brand-matrix.html">Brand Matrix</a>.</p>
|
||
<h3 id="the-proxies-on-this-plane-carry-nothing">The proxies on this plane carry nothing</h3>
|
||
<p><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTableProxy.html">ToolOffsetTableProxy</a> and its siblings — the Siemens <code>$TC_DP</code>,
|
||
frame and R-parameter proxies, the Heidenhain datum proxy and the Fanuc-family retained common
|
||
variable proxy — are get-or-create placeholders with no seed. Each serializes an empty element, and
|
||
on wiring installs a bare new instance into the per-case list when the project holds none of that
|
||
type; an existing table is left untouched.</p>
|
||
<p>Two consequences follow. A controller file written from the branch root's Object-Management menu
|
||
carries none of the values edited on this plane: the seedless proxies write an empty element, and the
|
||
one proxy on this plane that does carry a seed — the brand parameter-table proxy standing behind the
|
||
work coordinates on the Fanuc family and Syntec — serializes the fixed seed it was constructed with
|
||
rather than the table the panels have been editing. And a table this plane loses is not recoverable
|
||
from a preset: a fresh instance is what the proxy makes.</p>
|
||
<h3 id="which-store-a-work-coordinate-lands-in">Which store a work coordinate lands in</h3>
|
||
<p>Work Coordinates is the one leaf whose backing object changes with the brand. The panel reads and
|
||
writes the first <a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> in the effective list, and the
|
||
caption above its table names which one answered.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Brand</th>
|
||
<th>Backing object</th>
|
||
<th>Ids the table lists</th>
|
||
<th>Caption above the table</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>Fanuc, Mazak</td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Fanuc.FanucParameterTable.html">FanucParameterTable</a></td>
|
||
<td>G54–G59 and G54.1P1–G54.1P48</td>
|
||
<td><em>"Stored in the Fanuc parameter table (#5221+ / #7001+)."</em></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Syntec</td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Syntec.SyntecParameterTable.html">SyntecParameterTable</a></td>
|
||
<td>G54–G59 and G54.1P1–G54.1P48</td>
|
||
<td><em>"Stored in the Syntec parameter table (Pr5221+ / Pr7001+)."</em></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Siemens</td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html">SiemensFrameTable</a></td>
|
||
<td>G54–G57 and G505–G599</td>
|
||
<td><em>"Stored as Siemens settable frames ($P_UIFR; G500 cancels and is always zero)."</em></td>
|
||
</tr>
|
||
<tr>
|
||
<td>Heidenhain</td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a></td>
|
||
<td>G54–G59</td>
|
||
<td><em>"G54–G59 map onto Heidenhain datum preset rows 1–6."</em></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>An id appears only where the store actually holds it. A Fanuc-family or Syntec table yields an id
|
||
whose parameter address is present, and every one of those default tables seeds all of them at zero;
|
||
the Siemens frame table seeds G54–G57 and the extended series, and has no G58 or G59 row at all; the
|
||
Heidenhain table yields one id per preset row 1–6 that exists. G500 is never a row — the frame table
|
||
refuses to store it and does not seed it.</p>
|
||
<p>That caption is the panel's only statement of where a value went, and it is selected from the
|
||
snapshot's work-coordinate kind rather than from the brand marker.</p>
|
||
<h3 id="the-one-setting-that-is-not-in-the-list">The one setting that is not in the list</h3>
|
||
<p>The Tool Offsets leaf's <em>Set ideal offset dependent on tool house</em> toggle is not a dependency. It
|
||
writes <a class="xref" href="../../../../api/Hi.MachiningProcs.MachiningActRunnerConfig.html#Hi_MachiningProcs_MachiningActRunnerConfig_IsIdealOffsetDependentOnToolHouse">IsIdealOffsetDependentOnToolHouse</a>, an
|
||
element the project serializes beside the runner suit. It therefore stays with the project like
|
||
everything else on this plane, but by a different route — and, being outside the per-case list, it is
|
||
untouched by the sweep that follows a runner swap.</p>
|
||
<h2 id="how-this-differs-from-the-machine-plane">How This Differs From the Machine Plane</h2>
|
||
<p>The machine plane's ownership is split. Several of its leaves are plain instances the runner owns
|
||
outright — the tool-change position, the block-skip layers, the subprogram folders, and on Siemens
|
||
and Heidenhain the peck clearance — and an install replaces them with the incoming runner's; the
|
||
rest are rows of the brand parameter table and are stored on the project. One leaf holds both
|
||
halves: Controller Parameters, where the macro loop guards are runner-owned fields sitting beside
|
||
table rows. Which side of that line a machine-plane field falls on is
|
||
<a class="xref" href="../machine/index.html">Machine and Controller Plane</a>.</p>
|
||
<p>This plane has no such split. Nothing on it is a plain runner-owned instance: every leaf resolves a
|
||
per-case table through a proxy, so every value it edits is stored on the project. That is what makes
|
||
the two introductions' phrasing load-bearing rather than decorative — and it is why installing a
|
||
controller file of the brand already in force changes nothing here at all: each of that brand's
|
||
proxies takes the table the project already holds rather than installing a fresh one over it. The
|
||
same install does return the machine plane's runner-owned settings to the incoming file's values.</p>
|
||
<p>The one crossing runs the other way. On Fanuc, Mazak and Syntec the work coordinates are rows of the
|
||
same brand parameter table whose other rows the machine plane's per-axis leaves and native parameter
|
||
form edit. A single object straddles both stems there, which is exactly why that table is per-case at
|
||
all: the two planes could not otherwise be separated.</p>
|
||
<h2 id="the-planes-leaves">The Plane's Leaves</h2>
|
||
<p>Ordered as the branch builder pushes them: the two ungated leaves first, then each gated leaf or
|
||
gated pair behind the snapshot flag that grows it. Which brands satisfy each flag is
|
||
<a class="xref" href="../brand-matrix.html">Brand Matrix</a>; the column that page does not carry is the last
|
||
one here.</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Node segment</th>
|
||
<th>Label the tree shows</th>
|
||
<th>Gate</th>
|
||
<th>Backing table</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>work-coordinates</code></td>
|
||
<td>Work Coordinates (G54…)</td>
|
||
<td>ungated</td>
|
||
<td>the brand's ISO coordinate provider, per the table above</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>tool-offsets</code></td>
|
||
<td>Tool Offsets, read as Tool Offsets (ISO G43 H) where the Siemens table resolves</td>
|
||
<td>ungated; label switched by <code>hasSiemensToolOffsets</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Generic.ToolOffsetTable.html">ToolOffsetTable</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>siemens-tool-offsets</code></td>
|
||
<td>Tool Offsets ($TC_DP)</td>
|
||
<td><code>hasSiemensToolOffsets</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html">SiemensToolOffsetTable</a>, its cutting-edge map</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>tool-names</code></td>
|
||
<td>Tool Names</td>
|
||
<td><code>hasSiemensToolOffsets</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensToolOffsetTable.html">SiemensToolOffsetTable</a>, its name map</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>datum-presets</code></td>
|
||
<td>Datum Presets (Q339)</td>
|
||
<td><code>hasDatums</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a>, its preset rows</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>datum-shifts</code></td>
|
||
<td>Datum Shifts (D)</td>
|
||
<td><code>hasDatums</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.HeidenhainDatumTable.html">HeidenhainDatumTable</a>, its shift rows</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>frames</code></td>
|
||
<td>Frames (Siemens)</td>
|
||
<td><code>hasFrames</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensFrameTable.html">SiemensFrameTable</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>retained-variables</code></td>
|
||
<td>Retained Common Variables</td>
|
||
<td><code>hasRetainedVariables</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Fanuc.RetainedCommonVariableTable.html">RetainedCommonVariableTable</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>r-parameters</code></td>
|
||
<td>R Parameters</td>
|
||
<td><code>hasRParameters</code></td>
|
||
<td><a class="xref" href="../../../../api/Hi.NcParsers.Dependencys.Siemens.SiemensRParameterTable.html">SiemensRParameterTable</a></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p>Every label above is a translated role string rather than a type name, so the tree renders the
|
||
translation and a locale change rewrites the rows without touching an id.</p>
|
||
<p><strong>Two leaves stand on every brand: Work Coordinates (G54…) and Tool Offsets.</strong> They are the builder's
|
||
unconditional entries, and every brand preset satisfies them — each carries an ISO coordinate
|
||
provider of its own, and all five proxy the generic tool-offset table. The remaining leaves are
|
||
pushed inside a flag test, and each of those flags is satisfied by one brand family only.</p>
|
||
<h3 id="fewer-tables-than-leaves">Fewer tables than leaves</h3>
|
||
<p>Two flags grow two leaves each, because two leaves edit two halves of one object. Tool Offsets
|
||
($TC_DP) and Tool Names are the cutting-edge map and the name map of a single Siemens tool-offset
|
||
table, which is why there is no separate tool-name flag and why the two nodes appear and disappear
|
||
together. Datum Presets (Q339) and Datum Shifts (D) are the preset rows and the shift rows of a
|
||
single Heidenhain datum table, served by one component that reads its role from the node id's last
|
||
segment.</p>
|
||
<p>The work coordinates then fold two more leaves together, on the two brands where the ISO provider is
|
||
a table this plane already lists. On Siemens, Work Coordinates and Frames (Siemens) are two views of
|
||
one frame dictionary — the same ids, the same X/Y/Z translations, edited through two panels. On
|
||
Heidenhain, the G54–G59 rows of Work Coordinates <em>are</em> preset rows 1–6 of Datum Presets (Q339), so
|
||
editing one changes what the other shows. Datum Shifts has no such alias, and the Siemens frame
|
||
table's per-axis translation components beyond X/Y/Z are reachable from neither panel.</p>
|
||
<h3 id="the-two-tool-offset-ledgers-disagree-on-the-sign-of-wear">The two tool-offset ledgers disagree on the sign of wear</h3>
|
||
<p>Where both are present the difference matters more than the labels suggest. On the generic table an
|
||
effective value is the ideal minus the wear; on the Siemens <code>$TC_DP</code> table it is the geometry plus
|
||
the wear. That is why the Siemens panel spells the addition out in a footnote below its table, and
|
||
says in its own description that a shortened tool is entered as negative wear, while the generic
|
||
panel states no sign rule at all. The relabel of the ungated leaf to <strong>Tool Offsets (ISO G43 H)</strong>
|
||
exists so that the two are not read as one ledger.</p>
|
||
<h2 id="what-a-brand-change-does-here">What a Brand Change Does Here</h2>
|
||
<p>A brand switch replaces the whole runner with the target brand's preset and then removes every
|
||
per-case table the new runner references through no proxy. This plane is where that sweep lands: the
|
||
machine plane's project-owned parameter table is one entry, and every other entry the sweep can reach
|
||
is a table edited here. The staged select, its confirmation and the rest of the control are
|
||
<a class="xref" href="../machine/brand-switch.html">Controller Brand</a>; what follows is the outcome for this plane
|
||
alone.</p>
|
||
<ul>
|
||
<li><strong>Tool Offsets survives every switch.</strong> All five presets proxy the generic tool-offset table, so
|
||
the sweep's keep-set always contains it. Its rows, its tool numbering and the tool-house dependence
|
||
toggle beside it come through a brand change unchanged; only the leaf's label can change.</li>
|
||
<li><strong>Every other table on the plane is brand-bound and is removed</strong> the moment the target brand
|
||
proxies none of it — the Siemens <code>$TC_DP</code> table with its tool-name map, the Siemens frame table,
|
||
the Siemens R-parameter table, the Heidenhain datum table, and the Fanuc-family or Syntec parameter
|
||
table that holds the work coordinates. Switching back does not restore what was removed; the proxy
|
||
makes a fresh instance instead, empty for the tool-offset, tool-name, R-parameter and
|
||
retained-variable tables, and zero-filled for the frame and datum tables that seed a row set in
|
||
their constructor.</li>
|
||
<li><strong>The Fanuc and Mazak presets proxy the same parameter table</strong>, so a switch between those two
|
||
brands sweeps nothing here: the work coordinates and every other row of that table stay where they
|
||
are.</li>
|
||
<li><strong>Retained Common Variables spans a family rather than a brand.</strong> Fanuc, Syntec and Mazak all proxy
|
||
it, so it survives any switch among those three and is removed on a switch to Siemens or
|
||
Heidenhain.</li>
|
||
<li><strong>Work coordinates are the one set of values a switch can carry across.</strong> The brand panel's <em>Carry
|
||
work-coordinate XYZ (G54…) into the new brand's table</em> checkbox is on by default; the switch reads
|
||
every id the outgoing providers exposed and, after the swap, writes each back only to a provider
|
||
on the incoming runner that lists it — never to a provider that would merely accept it. The
|
||
Fanuc-family and Syntec presets expose the same set — G54–G59 and all forty-eight G54.1 P offsets
|
||
on the brand table, every address seeded, plus the extended G59.1–G59.9 on the brand-neutral
|
||
table behind it — so a switch between Syntec and either of Fanuc and Mazak carries every one of
|
||
them. A switch into Siemens carries only G54–G57, the frame table listing no G58, no G59, no
|
||
G59.x and no G54.1 P id at all; a switch into Heidenhain carries G54–G59 and drops the
|
||
forty-eight G54.1 P offsets and the nine G59.x. No other table's values are carried, and the carry
|
||
is skipped for a table the swap re-bound rather than replaced — which is the Fanuc-to-Mazak case.</li>
|
||
</ul>
|
||
<p>The banner shown before the apply says as much in one line: <em>"Switching brand replaces the whole
|
||
runner with the {brand} preset. Machine settings reset to that preset's defaults and the old brand's
|
||
program-data tables are removed — switching back does not restore them."</em></p>
|
||
<p>An Object-Management Load, Paste or XML apply runs the same install and the same sweep, so a
|
||
controller file of another brand takes this plane through the identical outcome without the carry
|
||
option. Both writes are refused while an NC program is playing.</p>
|
||
<h2 id="layout">Layout</h2>
|
||
<ul>
|
||
<li><strong>General Setup</strong> Control Tree — the left dock of <code>/general-setup</code>
|
||
<ul>
|
||
<li><strong>Controller</strong> Node Row
|
||
<ul>
|
||
<li><strong>Machine / Controller</strong> Group Row — the plane beside this one</li>
|
||
<li><strong>Program Data</strong> Group Row — <code>equipment/controller/program-data</code>
|
||
<ul>
|
||
<li><strong>Work Coordinates (G54…)</strong> Node Row</li>
|
||
<li><strong>Tool Offsets</strong> Node Row — reads <strong>Tool Offsets (ISO G43 H)</strong> where the Siemens <code>$TC_DP</code>
|
||
table resolves</li>
|
||
<li><strong>Tool Offsets ($TC_DP)</strong> Node Row — grown while the snapshot reports a Siemens tool-offset
|
||
table</li>
|
||
<li><strong>Tool Names</strong> Node Row — grown on the same flag</li>
|
||
<li><strong>Datum Presets (Q339)</strong> Node Row — grown while it reports a Heidenhain datum table</li>
|
||
<li><strong>Datum Shifts (D)</strong> Node Row — grown on the same flag</li>
|
||
<li><strong>Frames (Siemens)</strong> Node Row — grown while it reports a Siemens frame table</li>
|
||
<li><strong>Retained Common Variables</strong> Node Row — grown while it reports a retained common variable
|
||
table</li>
|
||
<li><strong>R Parameters</strong> Node Row — grown while it reports a Siemens R-parameter table</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>Editor Row — the panel of whichever node is selected
|
||
<ul>
|
||
<li><strong>Program Data</strong> Group Panel
|
||
<ul>
|
||
<li>Intro Caption — the stem's introduction line</li>
|
||
<li>Child List — one bordered, separated row per leaf above, each showing the leaf's label in the
|
||
theme's primary colour with a right chevron; a click selects that leaf</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<p>The stem's own editor holds no field, so nothing on this plane is edited from the group row itself.</p>
|
||
<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>
|
||
<h3 id="web-application">Web Application</h3>
|
||
<p>HiNC-2025-webservice (Quasar CLI SPA):</p>
|
||
<ul>
|
||
<li><code>wwwroot-src/src/components/controlTree/softNcItemTypes.ts</code> — the branch builder: the program-data
|
||
stem's id, label key and intro key, the two leaves it pushes unconditionally, the snapshot flag
|
||
each further leaf is pushed behind in the order the table above lists them, and the tool-offsets
|
||
relabel.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/GroupInfoPanel.vue</code> — the stem's editor: the intro caption
|
||
and the clickable child list that selects a leaf.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/useControlTreeHost.ts</code> — builds the <code>equipment/controller</code>
|
||
root this stem hangs from, inside the equipment group.</li>
|
||
<li><code>wwwroot-src/src/api/softNcRunner.ts</code> — the snapshot shape the builder reads its flags from, and
|
||
the typed wrappers over each leaf's reader and writers.</li>
|
||
<li><code>wwwroot-src/src/composables/useSoftNcRunner.ts</code> — the shared snapshot the leaf panels gate on, the
|
||
brand switch with its carry option, and the Object-Management install that regrows the branch.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcWorkCoordinatesPanel.vue</code> — the one panel that reads
|
||
the snapshot's work-coordinate kind, the caption it selects from it, and the extended-row filter.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcToolOffsetsPanel.vue</code> — the generic ledger: the
|
||
tool-house dependence toggle, the refresh it enables, and the Siemens caveat gated on the brand
|
||
string rather than on the table flag.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcSiemensToolOffsetsPanel.vue</code> and
|
||
<code>wwwroot-src/src/components/controlTree/SoftNcToolNamesPanel.vue</code> — the two leaves over one Siemens
|
||
table: the cutting-edge rows and the name map.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcDatumTablePanel.vue</code> — the one component behind both
|
||
Heidenhain leaves, choosing its role from the node id's last segment.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcFramesPanel.vue</code> — the settable-frame table and its
|
||
own always-visible set, narrower than the work-coordinate panel's.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcRetainedVariablesPanel.vue</code> and
|
||
<code>wwwroot-src/src/components/controlTree/SoftNcRParametersPanel.vue</code> — the two sparse variable
|
||
tables, and the vacant entry a cleared cell writes.</li>
|
||
<li><code>wwwroot-src/src/components/controlTree/SoftNcEmptyState.vue</code> — the shared no-runner line every
|
||
leaf on this plane falls back to.</li>
|
||
<li><code>wwwroot-src/src/api/equipmentSetup.ts</code> — the canvas marker id a work-coordinate row click writes,
|
||
outside this branch's own REST surface.</li>
|
||
<li><code>wwwroot-src/src/i18n/en/softNc.ts</code> — the stem's introduction line, every leaf label in the table
|
||
above, the work-coordinate storage captions and the brand-switch warning.</li>
|
||
<li><code>wwwroot-src/src/i18n/en/common.ts</code> — the shared column and action labels these tables reuse.</li>
|
||
<li><code>Mech/SoftNcRunnerController.cs</code> — the plane's REST surface: the presence flags, the per-table
|
||
readers and writers, the brand switch with its work-coordinate carry, and the sweep of per-case
|
||
tables the new runner references through no proxy.</li>
|
||
<li><code>Mech/EquipmentSetupDisplayController.cs</code> — the marked-coordinate id a work-coordinate row click
|
||
stores, on the user configuration rather than on the project.</li>
|
||
</ul>
|
||
<h3 id="hiapi-engine">HiAPI Engine</h3>
|
||
<ul>
|
||
<li><code>HiMech/NcParsers/NcRunnerSuit.cs</code> — the suit: the per-case list this plane's tables live in, the
|
||
serialization that inlines it with no file reference, and the proxy wiring that materialises a
|
||
table into a project holding none of that type.</li>
|
||
<li><code>HiMech/NcParsers/SoftNcRunner.cs</code> — the five brand presets as literal dependency lists, showing
|
||
which proxies each brand carries, and the proxy resolution every read on this plane goes through.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/INcDependencyProxy.cs</code> — the maker-and-taker contract, and why a
|
||
proxy's resolved data is never written into the runner.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Generic/ToolOffsetTableProxy.cs</code> — the seedless get-or-create shape
|
||
the Siemens, Heidenhain and Fanuc-family per-case proxies on this plane all repeat.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Fanuc/FanucParameterTableProxy.cs</code> — the contrasting seeded proxy,
|
||
and its own account of why the Fanuc-family table mixes machine configuration with the per-case
|
||
work-coordinate offsets.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/IIsoCoordinateConfig.cs</code> and
|
||
<code>HiMech/NcParsers/Dependencys/IsoCoordinateAddressMap.cs</code> — the interface the work-coordinate panel
|
||
edits through, and the address arithmetic that decides which ids a Fanuc-family or Syntec table
|
||
lists.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Generic/ToolOffsetTable.cs</code> — the generic ledger every preset
|
||
proxies, and the subtraction that makes an effective value ideal minus wear.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Siemens/SiemensToolOffsetTable.cs</code> — the cutting-edge map and the
|
||
name map behind two leaves, and the addition that makes an effective value geometry plus wear.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Siemens/SiemensFrameTable.cs</code> — the settable frames: the ids the
|
||
constructor seeds, the ISO coordinate implementation the work-coordinate leaf shares, and the
|
||
per-axis translation components neither panel exposes.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Siemens/SiemensRParameterTable.cs</code> and
|
||
<code>HiMech/NcParsers/Dependencys/Fanuc/RetainedCommonVariableTable.cs</code> — the two persistent variable
|
||
tables, their accepted id ranges, and the vacant entry a valueless element preserves across a save.</li>
|
||
<li><code>HiMech/NcParsers/Dependencys/Heidenhain/HeidenhainDatumTable.cs</code> — the preset and shift rows behind
|
||
two leaves, and the mapping that aliases G54–G59 onto preset rows 1–6.</li>
|
||
<li><code>HiMech/MachiningProcs/MachiningActRunnerConfig.cs</code> — the tool-house dependence flag, the one
|
||
setting on this plane stored outside the per-case list.</li>
|
||
<li><code>HiNc/MachiningProcs/LocalProjectService.cs</code> — the facade setter every install and brand switch
|
||
assigns through, and the proxy re-binding that materialises the incoming brand's per-case tables.</li>
|
||
<li><code>HiNc/MachiningProcs/MachiningProject.cs</code> — where the suit and the runner configuration hang off
|
||
the project, and the load path for a project file carrying the per-case list.</li>
|
||
</ul>
|
||
<h2 id="pages">Pages</h2>
|
||
<p>Ordered by the first node each page owns, as the plane lists them.</p>
|
||
<ul>
|
||
<li><a class="xref" href="work-coordinates.html">Work Coordinates</a> — The one uniform face over four brand
|
||
storage models, its P0 and M0 row actions, and the row click that marks a coordinate on the canvas</li>
|
||
<li><a class="xref" href="tool-offsets.html">Tool Offsets</a> — The generic ISO ledger: ideal against wear, the
|
||
renameable tool number, and what tool-house dependence takes over</li>
|
||
<li><a class="xref" href="siemens-tool-offsets.html">Siemens Tool Offsets</a> — The <code>$TC_DP</code> cutting-edge table
|
||
and the tool-name map beside it, two leaves over one object</li>
|
||
<li><a class="xref" href="datum-tables.html">Datum Tables</a> — The Heidenhain preset and shift rows, one
|
||
component serving both, and the preset rows the work coordinates alias</li>
|
||
<li><a class="xref" href="frames.html">Frames</a> — The Siemens settable frames, the ids they seed, and what
|
||
the work-coordinate leaf shows of the same table</li>
|
||
<li><a class="xref" href="persistent-variables.html">Persistent Variables</a> — The retained common variables
|
||
and the R parameters: sparse tables, accepted ranges, and the difference between vacant and deleted</li>
|
||
</ul>
|
||
<h2 id="see-also">See Also</h2>
|
||
<ul>
|
||
<li><a class="xref" href="../index.html">Controller Branch</a> — the branch this plane is half of, its runner root and the machine plane
|
||
beside it</li>
|
||
<li><a class="xref" href="../machine/index.html">Machine and Controller Plane</a> — the other plane, whose ownership splits between the runner and
|
||
the project where this one does not</li>
|
||
<li><a class="xref" href="../brand-matrix.html">Brand Matrix</a> — which brand satisfies each gate named above, and what each
|
||
flag actually probes</li>
|
||
<li><a class="xref" href="../editing-contract.html">Editing Contract</a> — the commit, rollback and rendering rules every leaf on
|
||
this plane inherits, and the panels that depart from them</li>
|
||
<li><a class="xref" href="work-coordinates.html">Work Coordinates</a> — the ungated leaf whose backing object changes with the
|
||
brand, and the only values a brand switch can carry</li>
|
||
<li><a class="xref" href="tool-offsets.html">Tool Offsets</a> — the other ungated leaf, and the one table on this plane that
|
||
survives every brand switch</li>
|
||
<li><a class="xref" href="siemens-tool-offsets.html">Siemens Tool Offsets</a> — the second tool-offset ledger, whose presence
|
||
relabels the first</li>
|
||
<li><a class="xref" href="datum-tables.html">Datum Tables</a> — the two Heidenhain leaves, and the preset rows the work
|
||
coordinates share</li>
|
||
<li><a class="xref" href="frames.html">Frames</a> — the Siemens frame table, read by two leaves of this plane at once</li>
|
||
<li><a class="xref" href="persistent-variables.html">Persistent Variables</a> — the two variable tables a program's arithmetic
|
||
reads, kept on the project rather than reset with the session</li>
|
||
</ul>
|
||
|
||
</article>
|
||
|
||
<div class="contribution d-print-none">
|
||
</div>
|
||
|
||
<div class="next-article d-print-none border-top" id="nextArticle"></div>
|
||
|
||
</div>
|
||
|
||
<div class="affix">
|
||
<nav id="affix"></nav>
|
||
</div>
|
||
</main>
|
||
|
||
<div class="container-xxl search-results" id="search-results"></div>
|
||
|
||
<footer class="border-top text-secondary">
|
||
<div class="container-xxl">
|
||
<div class="flex-fill">
|
||
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
</body>
|
||
</html>
|