Archived
412 lines
28 KiB
HTML
412 lines
28 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Controller Branch | HiAPI-C# 2025 </title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="title" content="Controller Branch | 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-Controller">
|
|
<h1 id="controller-branch">Controller Branch</h1>
|
|
|
|
<p>The Controller branch is the SoftNcRunner-native settings face: the controller the project actually
|
|
parses NC with, edited one tree node at a time. It lives on the General Setup page at
|
|
<code>/general-setup</code> under the Control-Tree id <code>equipment/controller</code>, and grows two plane stems beneath
|
|
it — <code>equipment/controller/machine</code> and <code>equipment/controller/program-data</code>. The superseded
|
|
HardNcEnv surface still ships as a route of its own at <code>/controller</code>, and edits a different model.</p>
|
|
<div class="IMPORTANT">
|
|
<h5>Important</h5>
|
|
<p>Anatomy makes no claim that these ids are stable across versions. See
|
|
<a class="xref" href="../../platform/tree-ids-and-routes.html">Tree Ids and Routes</a> for the migration hop that keeps an older link
|
|
resolving.</p>
|
|
</div>
|
|
<h2 id="key-models">Key Models</h2>
|
|
<ul>
|
|
<li><a class="xref" href="../../../api/Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> — the switchable suit the branch edits: one runner plus the
|
|
per-workpiece dependency list the runner's proxy placeholders resolve against. A suit constructs
|
|
on the Fanuc preset, and a project file that carried no runner element keeps that.</li>
|
|
<li><a class="xref" href="../../../api/Hi.NcParsers.SoftNcRunner.html">SoftNcRunner</a> — the NC pipeline itself, and the object the branch root's
|
|
Object-Management menu loads, pastes and saves.</li>
|
|
<li><a class="xref" href="../../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_PipelineNcDependencyList">PipelineNcDependencyList</a> — what a runner file carries.</li>
|
|
<li><a class="xref" href="../../../api/Hi.NcParsers.NcRunnerSuit.html#Hi_NcParsers_NcRunnerSuit_PerCaseNcDependencyList">PerCaseNcDependencyList</a> — what stays on the project.</li>
|
|
<li><a class="xref" href="../../../api/Hi.NcParsers.Dependencys.CncBrandDependency.html">CncBrandDependency</a> — the brand marker the root panel's badge
|
|
reads. Its <a class="xref" href="../../../api/Hi.NcParsers.Dependencys.CncBrandDependency.html#Hi_NcParsers_Dependencys_CncBrandDependency_Brand">Brand</a> is a plain string with five
|
|
declared tokens, so the marker can be edited independently of the dependency list it sits in.</li>
|
|
<li><a class="xref" href="../../../api/Hi.MachiningProcs.LocalProjectService.html#Hi_MachiningProcs_LocalProjectService_SoftNcRunner">SoftNcRunner</a> — the facade setter every install and
|
|
every brand switch assigns through. It re-binds the proxies to the suit, stamps the machining
|
|
chain's axis codes onto the axis config, and resets the per-session runner state.</li>
|
|
</ul>
|
|
<p>Every value the branch reads is resolved through
|
|
<a class="xref" href="../../../api/Hi.NcParsers.SoftNcRunner.html#Hi_NcParsers_SoftNcRunner_GetEffectiveNcDependencyList_">GetEffectiveNcDependencyList</a><small>(API)</small> rather than the
|
|
raw pipeline list: the proxies deliberately implement no machine-config interface, so a consumer
|
|
that read the raw list would see a placeholder instead of the table. The tree itself speaks domain
|
|
vocabulary only — brand, machine limits, work coordinates. The dependency pipeline, the proxy
|
|
indirection and the brand preset lists have no node.</p>
|
|
<h2 id="the-two-planes">The Two Planes</h2>
|
|
<p>The branch root's children are two <code>Group</code> stems, and neither is ever empty: each carries at least
|
|
one leaf that every runner grows. A stem's editor panel is the shared group panel — an intro line
|
|
over a clickable list of its children.</p>
|
|
<p><strong>Machine / Controller</strong> (<code>equipment/controller/machine</code>) introduces itself as <em>"Machine and
|
|
controller presets that travel with the runner file — brand, travel limits, rapid rates, home / G28
|
|
reference, the tool-change position and the controller parameters (in both a domain-grouped
|
|
interface form and the native parameter form)."</em></p>
|
|
<p><strong>Program Data</strong> (<code>equipment/controller/program-data</code>) introduces itself as <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>
|
|
<h3 id="what-a-runner-file-actually-carries">What a runner file actually carries</h3>
|
|
<p>The runner's pipeline list holds two kinds of entry, and the difference decides what an installed
|
|
runner file changes.</p>
|
|
<p>Plain instances are the runner's own and are replaced outright by an install: the brand marker, the
|
|
tool-change position, the block-skip, subprogram-folder and iteration-guard configs a given preset
|
|
carries, and — on Siemens and Heidenhain — the generic fallback config those two presets add
|
|
because their parameter tables declare no number for the peck clearance. That last entry is why
|
|
<strong>Canned Cycle (Peck)</strong> is runner-owned on those two brands, while on the other three the same
|
|
clearance is a row of the brand parameter table and stays with the project.</p>
|
|
<p>The brand parameter table is reached through a proxy instead. The proxy carries a machine-config
|
|
<strong>seed</strong>, and that seed — not the live table — is what the runner file serializes.
|
|
<a class="xref" href="../../../api/Hi.NcParsers.NcRunnerSuit.html#Hi_NcParsers_NcRunnerSuit_WireNcDependencyProxies_">WireNcDependencyProxies</a><small>(API)</small> deep-clones the seed
|
|
into the project's per-case list only when the project holds no table of that type yet; a project
|
|
that already carries one keeps it. So the per-axis limits, rapid rates, home references, M-code
|
|
declarations and native parameters a panel edits are stored on the <strong>project</strong>, and installing a
|
|
same-brand runner file leaves them where they are while it does replace the plain instances above.
|
|
The Fanuc-family and Syntec parameter tables are per-case because they mix machine configuration
|
|
with per-case work-coordinate offsets, which the two planes could not otherwise split. The Siemens
|
|
machine-data and Heidenhain tables hold no work coordinates and are per-case for the other half of
|
|
the reason: a project's own table wins over the seed, so installing a same-brand runner file
|
|
re-binds to the machine data already edited instead of resetting it to the preset's.</p>
|
|
<h3 id="what-survives-a-swap">What survives a swap</h3>
|
|
<p>The per-case list belongs to the project and survives an install or a brand switch, minus one step:
|
|
after the new runner is assigned, per-case tables its proxies resolve nothing for are removed, so a
|
|
project switched from Fanuc to Siemens does not keep a retained-common-variable table nothing reads.
|
|
The generic tool-offset table survives every switch, because every brand preset proxies it.
|
|
Switching back does not restore what the sweep removed. Only the brand parameter table returns from
|
|
a seed, deep-cloned out of the new preset's proxy; the per-case tables beside it carry no seed at
|
|
all, so their proxies create bare instances — a project switched back to Fanuc gets an empty
|
|
retained-common-variable table, not the values it held before.</p>
|
|
<h2 id="the-root-panel">The Root Panel</h2>
|
|
<p>The <strong>Controller</strong> node's editor is the branch root panel. Its header row carries three things:</p>
|
|
<ul>
|
|
<li>The <strong>Object Management</strong> menu (<code>⋮</code>), whose entries are Load, Save As, Copy, Paste and XML Mode.
|
|
Load and Save As browse the server file system through the shared file-explorer dialog, filtered to
|
|
<code>*.Controller</code>, <code>*.SoftNcRunner</code> and <code>*.xml</code>; Save As proposes the name <code>NcRunner.Controller</code>.
|
|
Paste checks the pasted object against the expected type <code>Hi.NcParsers.SoftNcRunner, HiMech</code>.
|
|
Load, Paste and an XML apply all install the swapped object onto the project and then regrow the
|
|
branch. The button is disabled while no runner key is indexed, which is the state with no project
|
|
open; with a project but no runner a blank placeholder is indexed so the menu stays reachable as a
|
|
Load target.</li>
|
|
<li>A <strong>brand badge</strong>, shown only while a runner resolves. It reads the brand marker's string, or
|
|
<strong>Unknown brand</strong> when the marker is empty.</li>
|
|
<li>A <strong>runner-file caption</strong>. It reads the side-file path recorded on the suit, or <strong>Embedded in
|
|
project</strong> when the runner is inlined in the project file, or <strong>No NC runner</strong> when none resolves.
|
|
The web service reads that recorded path and never writes it, so a Save As from this menu writes a
|
|
file without changing what the caption names — and after an Object-Management install or a brand
|
|
switch the caption still names the file the project was loaded with rather than the runner now in
|
|
place.</li>
|
|
</ul>
|
|
<p>Below the separator the panel shows one of two bodies. With a runner it shows the presets hint —
|
|
<em>"Machine / controller presets (brand, limits, rapid, home, tool change, parameters) travel with the
|
|
runner and can be saved / loaded as a <code>.SoftNcRunner</code> asset via the ⋮ menu. Program data (work
|
|
coordinates, tool offsets…) stays with this project's workpiece. Edit each group via this item's
|
|
child tree-nodes."</em> Both hint blocks name <code>.SoftNcRunner</code>, while the file picker offers <code>.Controller</code>
|
|
first.</p>
|
|
<p>An orange line follows when the snapshot reports no axes: <em>"No machine axes yet — per-axis rows
|
|
(limits / rapid / home) are driven by the Machine Tool chain. Attach a machine tool to populate
|
|
them."</em> The axis set is read from the controller parameter table's axis-type rows, which the facade
|
|
setter stamps from the <a class="xref" href="../machine-tool.html">Machine Tool</a> chain — adding the chain's axes and
|
|
keeping the table's persisted ones. Every brand preset's default table already declares X, Y and Z,
|
|
so on a preset-built runner the warning does not appear; it is a live guard for a runner whose table
|
|
declares no axis, or which resolves no parameter table at all.</p>
|
|
<h2 id="when-no-runner-resolves">When No Runner Resolves</h2>
|
|
<p>With no project open the host skips the branch builder entirely, so the Controller node stands alone
|
|
with no children, and the root panel shows its own no-runner block: an hourglass, <em>"No NC controller
|
|
runner on this project."</em>, and the hint <em>"Load a project, or use the ⋮ menu → Load to attach a
|
|
<code>.SoftNcRunner</code> file."</em> This block is the panel's own, not the shared empty state the leaf panels use.</p>
|
|
<p>With a project open the builder runs and returns no children when the snapshot reports no runner —
|
|
and returns exactly the same empty result when the snapshot request throws. Nothing in the branch
|
|
shape distinguishes a failed fetch from an absent runner, and neither does the root panel: a failed
|
|
load resets the shared snapshot to the empty one, so the panel renders the same no-runner block. The
|
|
only signal is the error toast that failed load raises. The builder's own fetch failure raises
|
|
nothing, so a request that fails for the builder alone leaves a childless branch under a panel still
|
|
showing the brand badge.</p>
|
|
<p>In practice a loaded project resolves a runner, since the suit's runner property constructs on the
|
|
Fanuc preset and a project file with no runner element keeps that default. The empty branch is
|
|
therefore what a reader meets before a project is open rather than a state a loaded project sits in.</p>
|
|
<h2 id="how-the-branch-regrows">How the Branch Regrows</h2>
|
|
<p>Two panels in the whole branch report a structural change, and both scope it to the branch root:</p>
|
|
<ul>
|
|
<li>The <strong>root panel</strong>, after an Object-Management Load, Paste or XML apply. It installs the indexed
|
|
object onto the project, refreshes the shared snapshot and the runner key, and then emits — whether
|
|
or not the install itself succeeded, so the branch always regrows against a fresh snapshot.</li>
|
|
<li><strong>Controller Brand</strong>, after a brand switch, and only when the switch reported success.</li>
|
|
</ul>
|
|
<p>The host resolves the named scope, re-runs the branch builder over it, and adds the node to the
|
|
expansion list so the fresh children are visible. Because a brand switch replaces the whole runner,
|
|
this is what makes the brand-driven leaves appear and disappear.</p>
|
|
<p>A brand switch that fails <em>after</em> the server has already assigned the preset leaves the two halves
|
|
out of step: the shared snapshot is reloaded either way, so the badge and the brand select read the
|
|
new brand, while the branch was not regrown and still lists the old brand's leaves.</p>
|
|
<p>The tree shape and the panels' own gate come from two independent requests for the same snapshot.
|
|
The builder calls the endpoint directly; the panels read a module-singleton cache filled once per
|
|
SPA session and refreshed on a project-presence change, an Object-Management install and a brand
|
|
switch. No panel refreshes it, so an edit that empties a table changes neither the cache nor the
|
|
branch until one of those happens.</p>
|
|
<p>Both structural writes are refused while an NC program is playing: installing a runner and switching
|
|
brand each answer a conflict rather than swapping the parser under a running session.</p>
|
|
<h2 id="the-superseded-route">The Superseded Route</h2>
|
|
<p>The legacy controller page still ships at <code>/controller/:tab?</code> and is reached from the app menu bar's
|
|
<strong>Page → Legacy-Controller</strong> entry. It edits <a class="xref" href="../../../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a> through its own REST
|
|
surface, which is a different model from the runner this branch edits — the two are not two views of
|
|
one object, and an edit on one is invisible to the other. Its anatomy is
|
|
<a class="xref" href="../../legacy-controller.html">Legacy Controller Page</a>.</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 — <code>equipment/controller</code>, built after <strong>Workpiece</strong> and ahead of the two
|
|
optional runner-suit leaves
|
|
<ul>
|
|
<li><strong>Machine / Controller</strong> Group Row — <code>equipment/controller/machine</code>
|
|
<ul>
|
|
<li><strong>Controller Brand</strong>, <strong>Machine Limits (Stroke)</strong>, <strong>Rapid Feedrates</strong>,
|
|
<strong>Home / G28 Reference</strong>, <strong>Tool-Change Position</strong>, <strong>Controller Parameters</strong> — grown for
|
|
every runner</li>
|
|
<li><strong>M-Code Declarations</strong>, <strong>Canned Cycle (Peck)</strong>, <strong>Block Skip / Delete</strong>,
|
|
<strong>Subprogram Folders</strong>, <strong>Indexing Position Tables</strong>, <strong>Parameters (Native)</strong> — each grown
|
|
only where the snapshot reports its backing entry. Across the shipped presets only Block
|
|
Skip / Delete and Indexing Position Tables ever go missing; the other four are gated in code
|
|
and unconditional in practice</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>Program Data</strong> Group Row — <code>equipment/controller/program-data</code>
|
|
<ul>
|
|
<li><strong>Work Coordinates (G54…)</strong> and <strong>Tool Offsets</strong> — grown for every runner. The second reads
|
|
<strong>Tool Offsets (ISO G43 H)</strong> while the Siemens <code>$TC_DP</code> table resolves, so the two offset
|
|
ledgers do not read as one; its node id is unchanged by that relabel</li>
|
|
<li><strong>Tool Offsets ($TC_DP)</strong>, <strong>Tool Names</strong>, <strong>Datum Presets (Q339)</strong>, <strong>Datum Shifts (D)</strong>,
|
|
<strong>Frames (Siemens)</strong>, <strong>Retained Common Variables</strong>, <strong>R Parameters</strong> — each grown only where
|
|
the snapshot reports its backing table</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li>Editor Row — the panel of whichever node is selected
|
|
<ul>
|
|
<li><strong>Controller</strong> Root Panel
|
|
<ul>
|
|
<li>Object Management Menu Button (<code>⋮</code>) — Load, Save As, Copy, Paste, XML Mode</li>
|
|
<li>Brand Badge — the brand marker, or <strong>Unknown brand</strong></li>
|
|
<li>Runner File Caption — the recorded side file, <strong>Embedded in project</strong>, or <strong>No NC runner</strong></li>
|
|
<li>No-Runner Block — hourglass icon, <strong>No NC controller runner on this project.</strong>, and the
|
|
attach-a-file hint; shown instead of the two items below</li>
|
|
<li>Presets Hint</li>
|
|
<li>No-Axes Warning — shown only while the snapshot carries no axis</li>
|
|
</ul>
|
|
</li>
|
|
<li><strong>Machine / Controller</strong> and <strong>Program Data</strong> Group Panels — the stem's intro line over a
|
|
clickable list of its children, each row selecting that node</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>Which brand grows which leaf is <a class="xref" href="brand-matrix.html">Controller Brand Matrix</a>; how a
|
|
leaf panel commits an edit is <a class="xref" href="editing-contract.html">Controller Editing Contract</a>.</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/SoftNcRunnerRootPanel.vue</code> — the branch root's editor: the
|
|
Object-Management button and its install-then-regrow handler, the brand badge, the runner-file
|
|
caption, the no-runner block, the presets hint and the no-axes warning.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/softNcItemTypes.ts</code> — the wave's item-type registry and the
|
|
branch builder: the two plane stems, the leaves every runner grows, the snapshot flag each further
|
|
leaf is grown behind, and the Siemens relabel of the Tool Offsets leaf.</li>
|
|
<li><code>wwwroot-src/src/composables/useSoftNcRunner.ts</code> — the module-singleton snapshot and runner key,
|
|
the idempotent install of the project-presence watch, and the install and brand-switch calls the
|
|
two emitting panels use.</li>
|
|
<li><code>wwwroot-src/src/api/softNcRunner.ts</code> — the snapshot shape the tree and the panels parse, and the
|
|
typed wrappers over the controller's REST surface.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcEmptyState.vue</code> — the shared “no runner” line the
|
|
leaf panels render; the root panel renders its own block instead.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/SoftNcBrandPanel.vue</code> — the other panel that regrows the
|
|
branch: the staged brand select, its confirmation, and the scope it emits.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/useControlTreeHost.ts</code> — builds the <code>equipment/controller</code>
|
|
root inside the equipment group, and turns a reported structure change into a branch rebuild.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/GroupInfoPanel.vue</code> — the editor both plane stems use.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/itemTypes.ts</code> — the base item-type registry the wave's own
|
|
registry is spread into, and the mapping of the <code>Group</code> item type to that shared editor.</li>
|
|
<li><code>wwwroot-src/src/components/widgets/ObjectManagementMenuButton.vue</code> — the <code>⋮</code> menu: the server file
|
|
browser and its extension filter, the expected type it sends with a paste, and the events the root
|
|
panel listens to.</li>
|
|
<li><code>wwwroot-src/src/pages/GeneralSetupPage.vue</code> — the route that creates the <code>equipment</code>-scoped tree
|
|
host this branch is built in.</li>
|
|
<li><code>wwwroot-src/src/router/routes.ts</code> — the <code>/general-setup</code> route and the still-shipping
|
|
<code>/controller/:tab?</code> route beside it.</li>
|
|
<li><code>wwwroot-src/src/components/AppMenuBar.vue</code> — the Page menu entry that reaches the legacy route.</li>
|
|
<li><code>wwwroot-src/src/i18n/en/softNc.ts</code> — every label, group intro, hint and empty string this branch
|
|
renders.</li>
|
|
<li><code>wwwroot-src/src/i18n/en/tree.ts</code> — the <strong>Controller</strong> root label.</li>
|
|
<li><code>Mech/SoftNcRunnerController.cs</code> — the branch's REST surface: the snapshot the tree shape is built
|
|
from, the index-and-install pair behind Object Management, the brand switch with its carry and
|
|
sweep, and the per-group readers and writers the leaves use.</li>
|
|
<li><code>Widget/ObjectManagementController.cs</code> — the server half of the <code>⋮</code> menu: the paste that rejects
|
|
an object the expected-type string does not admit.</li>
|
|
</ul>
|
|
<h3 id="hiapi-engine">HiAPI Engine</h3>
|
|
<ul>
|
|
<li><code>HiMech/NcParsers/NcRunnerSuit.cs</code> — the suit: the runner, its optional side-file path, the
|
|
per-case list, the nested serialization of both, and the proxy wiring that materialises a per-case
|
|
table into a project holding none of that type yet.</li>
|
|
<li><code>HiMech/NcParsers/SoftNcRunner.cs</code> — the pipeline and the five brand presets whose entries decide
|
|
which leaves a brand grows, plus the chain configuration that stamps axis codes onto the axis
|
|
config.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/CncBrandDependency.cs</code> — the brand marker behind the badge and the
|
|
five declared tokens.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/ControllerParameterTableBase.cs</code> — the base whose interface list is
|
|
why the per-axis leaves exist on every brand, and the axis-type rows the axis set is read from.</li>
|
|
<li><code>HiMech/NcParsers/Dependencys/Fanuc/FanucParameterTableProxy.cs</code> — the get-or-create proxy pattern
|
|
the parameter tables use: a serialized seed on the runner, the live table on the project.</li>
|
|
<li><code>HiNc/MachiningProcs/LocalProjectService.cs</code> — the facade setter: the hoist of pre-proxy baked
|
|
tables, the proxy re-binding, the chain-driven axis stamp and the session reset.</li>
|
|
<li><code>HiNc/MachiningProcs/MachiningProject.cs</code> — where the suit hangs off the project and the load path
|
|
that leaves a project with the default preset when its file names no runner.</li>
|
|
</ul>
|
|
<h2 id="pages">Pages</h2>
|
|
<p>Ordered as the branch is read: the two references that hold across every node in it, then the two
|
|
plane folders whose leaves have editors of their own.</p>
|
|
<ul>
|
|
<li><a class="xref" href="brand-matrix.html">Controller Brand Matrix</a> — Which leaf exists on which brand,
|
|
the snapshot flag behind each one, and what a brand switch keeps, resets or destroys</li>
|
|
<li><a class="xref" href="editing-contract.html">Controller Editing Contract</a> — The rules every leaf panel
|
|
in the branch follows — when an edit commits, what a failed write does, how a table is rendered —
|
|
and the panels that depart from them</li>
|
|
<li><a class="xref" href="machine/index.html">Machine / Controller Plane</a> — The plane that carries the machine
|
|
and controller settings: the brand switch, the per-axis tables, the parameter forms, the M-code
|
|
declarations, program reading and the indexing tables</li>
|
|
<li><a class="xref" href="program-data/index.html">Program Data Plane</a> — The plane that carries the per-case
|
|
tables: the work coordinates, the two tool-offset ledgers, the Heidenhain datum rows, the Siemens
|
|
frames and the two variable tables</li>
|
|
</ul>
|
|
<h2 id="see-also">See Also</h2>
|
|
<ul>
|
|
<li><a class="xref" href="brand-matrix.html">Brand Matrix</a> — which leaf exists on which brand, and the snapshot flag
|
|
behind each one</li>
|
|
<li><a class="xref" href="editing-contract.html">Editing Contract</a> — the commit, rollback and error rules every leaf panel in
|
|
this branch follows</li>
|
|
<li><a class="xref" href="machine/index.html">Machine and Controller Plane</a> — the plane whose leaves carry the machine and controller
|
|
settings, one page per editor</li>
|
|
<li><a class="xref" href="program-data/index.html">Program Data Plane</a> — the plane whose leaves carry the per-case tables, and the
|
|
ownership rules that keep them on the project</li>
|
|
<li><a class="xref" href="../index.html">General Setup Page</a> — the page that hosts this branch, and the equipment items beside it</li>
|
|
<li><a class="xref" href="../../platform/control-tree.html">Control Tree</a> — the engine that builds, rebuilds and selects this branch</li>
|
|
<li><a class="xref" href="../../legacy-controller.html">Legacy Controller Page</a> — the superseded HardNcEnv route this branch replaces, still shipped
|
|
at <code>/controller</code></li>
|
|
<li><a class="xref" href="../../legacy-controller-settings.html">Legacy Controller Settings</a> — the model that route edits, what this branch shares with
|
|
it, and the three settings it holds alone</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>
|