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

311 lines
18 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PostExecutionCommand Panel (Post-Execution) | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="PostExecutionCommand Panel (Post-Execution) | 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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<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-PostExecutionCommandPanel">
<h1 id="postexecutioncommand-panel-post-execution">PostExecutionCommand Panel (Post-Execution)</h1>
<p>The key model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html">PostExecutionCommand</a>, the command both clients label
<strong>Post-Execution</strong>. It is the Output category's first catalog entry, and it carries five outputs
derived from what the session has played: step files, shot files, optimization files, a CL → NC
writeback, and a geometry-difference detection.</p>
<h2 id="when-it-runs-and-what-it-covers">When It Runs, and What It Covers</h2>
<p>Post-Execution is an ordinary entry in the command list, not an end-of-run hook. Its name describes
what it consumes, not a fixed position: the list runs its entries in order and skips any whose
Enable box is clear, and everything this command writes is derived from what the session has played
<strong>so far</strong>.</p>
<p>That makes its placement the whole question. Put it after two program entries and it writes both.
Put a second one halfway down the list and it writes an interim snapshot of the same accumulating
state. The CL → NC writeback says this outright in the panel — place the CL-playing Program File
command before this command — and it re-serializes every control file the session played, so an NC
play is written back too. Read this together with
<a class="xref" href="PreSettingCommand-panel.html">General Config</a>, the other half of the pair: those settings
apply from their position forward, these outputs cover everything up to this position.</p>
<p>The web client places the command anywhere in the list, like any other. The WPF client pins it to
the end: a new command is inserted before a trailing Post-Execution while that is the list's only
one, and the drag guard refuses to move it off the last position.</p>
<p><code>Run</code> executes the enabled outputs in an order of its own, which is <strong>not</strong> the order the tree and
the list below show them in: shot files, then step files, then optimization, then the CL → NC
writeback, then the geometry difference. Output timestamps follow that order rather than the layout.</p>
<h2 id="layout">Layout</h2>
<p>Every output is a section child node of the command, and each section's enable flag is that node's
own tree checkbox. The command node itself carries only a caption saying so; the section panels hold
the template and numeric fields, which stay editable whether or not the output is switched on —
the flag decides what runs, not what can be edited.</p>
<ul>
<li>Step Files Output Section
<ul>
<li>The node's checkbox is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_EnableWriteStepFiles">EnableWriteStepFiles</a>.</li>
<li>Step File Template Field
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_StepFileTemplate">StepFileTemplate</a>.</li>
<li>Default value: <code>Output/[NcName].step.csv</code></li>
</ul>
</li>
<li>Writes the step-series data of what the session has played.</li>
</ul>
</li>
<li>Shot Files Output Section
<ul>
<li>The node's checkbox is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_EnableWriteShotFiles">EnableWriteShotFiles</a>.</li>
<li>Shot File Template Field
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_ShotFileTemplate">ShotFileTemplate</a>.</li>
<li>Default value: <code>Output/[NcName].shot.csv</code></li>
</ul>
</li>
<li>Shot File Time Resolution Number Field (ms)
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_ShotFileTimeResolution_ms">ShotFileTimeResolution_ms</a>.</li>
<li>Default value: 1</li>
<li>This sampling period — not the machining resolution — sets the accuracy ceiling of the
time-series data, and a fine period produces a large file: a six-cut program writes about
13 MB at 1 ms and about 128 MB at 0.1 ms.</li>
</ul>
</li>
</ul>
</li>
<li>Optimization Output Section
<ul>
<li>The node's checkbox is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_EnableOptimizeToFiles">EnableOptimizeToFiles</a>.</li>
<li>Optimization File Template Field
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_OptimizationFileTemplate">OptimizationFileTemplate</a>.</li>
<li>Default value: <code>Output/Opt-[NcName]</code></li>
</ul>
</li>
<li>The SoftNc pipeline runs when the SoftNc runner is on and the session holds played syntax
layers; otherwise the HardNc path runs. Both clear every cutter's optimization-limit cache
first.</li>
</ul>
</li>
<li>CL → NC Writeback Section
<ul>
<li>The node's checkbox is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_EnableConvertClToNcFiles">EnableConvertClToNcFiles</a>.</li>
<li>NC Output Template Field
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_ClToNcFileTemplate">ClToNcFileTemplate</a>.</li>
<li>Default value: <code>Output/[NcName].nc</code></li>
<li>Its hint states the substitution: <code>[NcName]</code> is replaced by the source file name, extension
kept.</li>
</ul>
</li>
<li>A caption below the field explains the synthesis: the MSYS frame becomes a <code>G68.2</code> tilted
working plane, tool posture becomes <code>G43.4</code> RTCP with rotary words, and motions become
<code>G00</code>/<code>G01</code>/<code>G02</code>/<code>G03</code>. The CL must have been played on an XYZABC machine chain first. The
converted files appear as <code>→ file.nc</code> nodes on the Execution Program branch, with source ⇄
output line jumps.</li>
</ul>
</li>
<li>Geometry Difference Detection Section
<ul>
<li>The node's checkbox is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_EnableGeomDiff">EnableGeomDiff</a>.</li>
<li>Detect Radius Number Field (mm)
<ul>
<li>The model is <a class="xref" href="../../../api/Hi.SessionCommands.PostExecutionCommand.html#Hi_SessionCommands_PostExecutionCommand_GeomDiffDetectRadius_mm">GeomDiffDetectRadius_mm</a>.</li>
<li>Default value: 1</li>
</ul>
</li>
<li>Compares the workpiece geometry at that radius. With no workpiece in the session it reports
&ldquo;No Workpiece exist&rdquo; and does nothing.</li>
</ul>
</li>
</ul>
<p>Shot Files Output and Optimization Output are the two physics-gated sections. The condition is the
physics preference <strong>and</strong> the advanced-physics licence, served to the client already combined; when
it is off, the tree builder omits those two nodes entirely, and a preference flip shows up on the
next branch rebuild. CL → NC Writeback is deliberately not gated — writeback is a SoftNc syntax
feature, not a physics one.</p>
<p>Every edit saves as it is made. A rejected save is reported and the panel reloads the command.</p>
<div class="NOTE">
<h5>Note</h5>
<p>Post-Execution writes run-derived files only. The meshed-geometry snapshot is a placeable command
of its own, because a snapshot can be taken at any spot in a mission: Record Meshed Geometry
(<a class="xref" href="../../../api/Hi.SessionCommands.RecordMeshedGeomCommand.html">RecordMeshedGeomCommand</a>, with its No Action / Read / Write / Read On
First Or Write modes) and Export Meshed Geometry (STL)
(<a class="xref" href="../../../api/Hi.SessionCommands.ExportMeshedGeomToStlCommand.html">ExportMeshedGeomToStlCommand</a>) are both Output-category catalog entries
with editors of their own. Opening a project that still carries an enabled meshed-geometry output
on this command raises a system warning naming the replacement, and re-saving the project drops
the element.</p>
</div>
<div class="NOTE">
<h5>Note</h5>
<p><a class="xref" href="../../../api/Hi.SessionCommands.GeomDiffCommand.html">GeomDiffCommand</a> exists as a standalone command, as do
<code>WriteStepFilesCommand</code>, <code>WriteShotFilesCommand</code> and <code>OptimizeToFilesCommand</code>. None of them
carries the catalog attribute, so they load from a project file but are not offered in the Add
Command dialog. Post-Execution is the catalogued carrier of these outputs, which is why they are
edited as its sections.</p>
</div>
<h2 id="the-wpf-clients-panel">The WPF Client's Panel</h2>
<p>There four of the outputs are group boxes on one panel, each an enable checkbox over a grid that is
disabled until the box is ticked: Step Files Output, Shot Files Output, Optimization Output and
Geometry Difference Detection. The physics condition collapses the Shot Files and Optimization group
boxes rather than omitting tree nodes.</p>
<p>CL → NC Writeback is the one output the web client has and this panel does not. Its two properties
live on the same engine command, and the web section and its two endpoints are where they are
edited.</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/mission/PostExecutionCommandPanel.vue</code> — the command node's caption
and one headerless block per section: step-files, shot-files, optimization, cl-nc-writeback and
geom-diff. No checkboxes live here.</li>
<li><code>wwwroot-src/src/components/controlTree/missionItemTypes.ts</code> — declares the five sections with
their labels, marks Shot Files and Optimization physics-gated with an explicit note that CL → NC
is not, filters the gated sections out of the tree, and maps each section id to its enable-flag
reader and writer.</li>
<li><code>wwwroot-src/src/components/controlTree/MissionSectionPanel.vue</code> — renders one section headerless,
the breadcrumb already naming it, and passes no enable state down because the flags decide only
what runs.</li>
<li><code>wwwroot-src/src/components/controlTree/useControlTreeHost.ts</code> — the ticks: a command node ticks
its own enable flag, a section node with an enable flag ticks that, and every other node hides the
box.</li>
<li><code>wwwroot-src/src/api/mission.ts</code> — <code>loadPostExecution</code> and the eleven <code>postexecution/*</code> PUTs.</li>
<li><code>wwwroot-src/src/i18n/en/mission.ts</code> — the field labels, the <code>[NcName]</code> hint, the command node's
overview caption and the writeback paragraph.</li>
<li><code>wwwroot-src/src/i18n/en/tree.ts</code> — the five section node labels.</li>
<li><code>wwwroot-src/src/stores/appState.ts</code> — the physics preference and licence flags the tree builder
reads.</li>
<li><code>Environments/PreferenceController.cs</code> — serves the physics preference already combined with the
advanced-physics licence, the same condition the WPF panel evaluates.</li>
<li><code>Missions/MissionController.cs</code> — the <code>commands/{path}/postexecution/*</code> endpoints: the five enable
flags, the four templates, the shot-file time resolution and the geom-diff detect radius.</li>
</ul>
<h3 id="hiapi-engine">HiAPI Engine</h3>
<ul>
<li><code>HiNc/SessionCommands/PostExecutionCommand.cs</code> — the model, its display name and Output-category
catalog registration, every default above, the run order, and the warning raised for a project
still carrying a meshed-geometry output.</li>
<li><code>HiNc/SessionCommands/ListCommand.cs</code> — the in-order run that skips disabled entries, which is
what makes this command's placement decide what it covers.</li>
<li><code>HiNc/MachiningProcs/SessionShell.cs</code> — what each output actually calls: the shot-file writer and
its sampling-period guidance, the step-file writer, the optimization routing between the SoftNc
and HardNc paths, the CL → NC writeback synthesis, and the workpiece difference.</li>
<li><code>HiNc/SessionCommands/GeomDiffCommand.cs</code>, <code>HiNc/SessionCommands/WriteStepFilesCommand.cs</code>,
<code>HiNc/SessionCommands/WriteShotFilesCommand.cs</code> and
<code>HiNc/SessionCommands/OptimizeToFilesCommand.cs</code> — the standalone commands behind the same four
outputs: loadable from a project file, absent from the catalog.</li>
<li><code>HiNc/SessionCommands/RecordMeshedGeomCommand.cs</code> and
<code>HiNc/SessionCommands/ExportMeshedGeomToStlCommand.cs</code> — the two catalogued Output commands that
carry the meshed-geometry snapshot.</li>
<li><code>HiNc/SessionCommands/CommandCatalogAttribute.cs</code> — the attribute that separates a loadable
command from an addable one.</li>
</ul>
<h2 id="see-also">See Also</h2>
<ul>
<li><a class="xref" href="PreSettingCommand-panel.html">PreSettingCommand Panel</a> — the other half of the positional pair: those settings apply forward, these outputs cover everything up to here</li>
<li><a class="xref" href="NcOptOption-panel.html">NC Optimization Option Panel</a> — the settings the Optimization Output section writes its result under</li>
<li><a href="../../../manual/run/the-other-commands.html">The Other Commands</a> — the task this command serves</li>
<li><a href="index.html">Mission</a> — the rest of the command panels</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>