Archived
deploy.
This commit is contained in:
@@ -100,96 +100,9 @@ different models, so an edit on one is invisible to the other.</p>
|
||||
page, and Anatomy makes no claim that it is stable across versions. The migration hop that keeps
|
||||
an older value resolving is described in <a class="xref" href="platform/tree-ids-and-routes.html">Tree Ids and Routes</a>.</p>
|
||||
</div>
|
||||
<h2 id="the-model-it-edits-and-the-one-it-does-not">The Model It Edits, and the One It Does Not</h2>
|
||||
<p>The project carries both models side by side and serializes both. <a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a> is
|
||||
loaded from the project's own <code>NcEnv</code> element unconditionally; <a class="xref" href="../api/Hi.NcParsers.NcRunnerSuit.html">NcRunnerSuit</a> — the
|
||||
runner plus the project's per-case dependency list — is read from its own nested element. The legacy
|
||||
element is a <em>fallback source</em> for the suit rather than a shared store: a project file that carries
|
||||
no runner element derives one from the legacy element at load time, and from then on the two drift
|
||||
apart, because every later edit lands on one of them alone.</p>
|
||||
<p>The legacy model is still read at play time. The legacy NC runner is constructed over a delegate
|
||||
onto the project's <code>NcEnv</code>, so installing a replacement through this page's ⋮ menu propagates without
|
||||
rewiring, and a project-level switch selects which of the two pipelines plays. That switch defaults
|
||||
to the SoftNc pipeline and no screen in the web application changes it; it is a scripting property,
|
||||
<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_EnableSoftNcRunner_">EnableSoftNcRunner</a><small>(API)</small>. The legacy NC
|
||||
optimisation route is the other live reader: it is taken whenever the switch is off or the session
|
||||
holds no played SoftNc layers, and it is handed <code>MachiningProject.NcEnv</code> directly.</p>
|
||||
<h2 id="what-only-this-screen-edits">What Only This Screen Edits</h2>
|
||||
<p>Three settings on this screen have no editor anywhere else in the web application — neither on the
|
||||
branch, nor on any other page.</p>
|
||||
<h3 id="align-p0-and-its-undo-history">Align P0, and its undo history</h3>
|
||||
<p>The Coordinate Table tab — that is the tab button's label; <strong>ISO Coordinate Table</strong> is the heading over the panel it opens — carries a third row action beside <strong>P0</strong> and <strong>M0</strong>: <strong>Align P0</strong>,
|
||||
titled <em>"Move workpiece+fixture so ProgramZero coincides with this ISO entry (mutates
|
||||
Fixture.GeomToTableTransformer)"</em>. It does not write the coordinate — it writes the <strong>fixture's
|
||||
geometry-to-table transformer</strong>, moving the workpiece and fixture so that program zero lands on the
|
||||
offset the row holds. The write goes to the authored setup equipment and reports the edit, so the
|
||||
runtime face follows at the next rebuild. The branch's Work Coordinates leaf carries P0 and M0 and
|
||||
no alignment.</p>
|
||||
<p>The endpoint keeps no undo slot. It answers with the assigned translation plus the transformer as it
|
||||
stood <strong>before</strong> and <strong>after</strong> the write, both serialized as XML, and the tab holds the history
|
||||
itself: <strong>Undo Align</strong> and <strong>Redo Align</strong> buttons over two component-local stacks, the undo stack
|
||||
capped at 32 entries and the oldest dropped past it. A third button sits beside them, <strong>Show on
|
||||
Display</strong>, which belongs to the viewer rather than to the history: it is a bound toggle over the
|
||||
<code>IsoCoordinate</code> rendering flag, carrying a <code>visibility</code> / <code>visibility_off</code> icon and writing through
|
||||
the same flag endpoint the Scene dropdown writes. The two datum tabs carry the same button over
|
||||
<code>HeidenhainCoordinate</code>. Each step posts a stashed snapshot back to a
|
||||
stateless revert endpoint, which parses it and assigns the result as the fixture's transformer. Both
|
||||
stacks are cleared whenever the tab's has-a-project prop changes, and the snapshot the component
|
||||
believes is current is only what it last saw — a transformer changed from another surface is
|
||||
overwritten wholesale by the next undo or redo rather than merged.</p>
|
||||
<p>The engine exposes the same operation as a script call,
|
||||
<a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_AlignWorkpieceProgramZeroToIso_">AlignWorkpieceProgramZeroToIso</a><small>(API)</small>; the
|
||||
history is the screen's own.</p>
|
||||
<h3 id="enable-shortest-rotary-path">Enable Shortest Rotary Path</h3>
|
||||
<p>The <strong>Config</strong> tab's single toggle writes <a class="xref" href="../api/Hi.Numerical.HardNcEnv.html#Hi_Numerical_HardNcEnv_EnableShortestRotary">EnableShortestRotary</a>, which
|
||||
constructs <code>true</code>. Its banner reads <em>"<strong>Shortest Rotary Path:</strong> optimises rotary axis motion to use
|
||||
the shortest angular distance between positions."</em> On the legacy pipeline the flag gates one step:
|
||||
each rotary axis of a block is cycled into the ±180° window around the previous block's value. The
|
||||
toggle is narrower than it reads, because that same cycle is applied unconditionally on
|
||||
<a class="xref" href="../api/Hi.Numerical.CncBrand.html#Hi_Numerical_CncBrand_Heidenhain">Heidenhain</a> — the brand branch runs it before the flag is consulted, so
|
||||
clearing the box changes nothing there.</p>
|
||||
<p>The runner's dependency layer declares no counterpart: no brand parameter table, no generic config
|
||||
and no branch leaf carries a shortest-rotary switch. The nearest thing the runner pipeline has is the
|
||||
Heidenhain <code>M126</code> / <code>M127</code> pair, which is read from the program text rather than from any setting.</p>
|
||||
<h3 id="heidenhain-master-axis-character">Heidenhain master-axis character</h3>
|
||||
<p>The <strong>Brand</strong> tab grows a second card while the brand is Heidenhain, holding one select over <code>A</code>,
|
||||
<code>B</code>, <code>C</code> labelled <strong>Master-axis character</strong>. It writes
|
||||
<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html#Hi_Numerical_HardNcEnv_HeidenhainMasterAxisChar">HeidenhainMasterAxisChar</a>, a character face over the integer axis
|
||||
direction the <code>PLANE … SEQ</code> solution family is resolved against. Reads are normalised: anything that
|
||||
is not <code>B</code> or <code>C</code> after trimming and upper-casing becomes <code>A</code>. On the runner pipeline the master
|
||||
rotary is <strong>derived rather than configured</strong> — it is the first declared rotary axis — so the branch
|
||||
has nothing to expose and no leaf for it.</p>
|
||||
<h2 id="what-it-shares-with-the-branch">What It Shares With the Branch</h2>
|
||||
<p>Naming what is <em>not</em> exclusive matters as much. The CNC brand, the stroke limits, the rapid feed,
|
||||
the tool-change time, the tool offset table with its tool-house dependence, the work coordinates
|
||||
with their P0 and M0 actions, and the Heidenhain datum preset and datum shift tables all have
|
||||
editors on the branch — see
|
||||
<a class="xref" href="general-setup/controller/brand-matrix.html">Brand Matrix</a> for which of those leaves each brand grows. The
|
||||
<strong>Max Speed (rpm)</strong> column has a counterpart too: on the runner pipeline the rotary speed ceiling is
|
||||
read from the rapid-feedrate config, and the legacy import funnels this field into it at rpm × 360
|
||||
deg/min, so the branch's Rapid Feedrates leaf edits the runner-side number.</p>
|
||||
<p>One control on this screen writes a value the branch also writes. <strong>Set ideal offset dependent on
|
||||
tool house</strong> is a project-level configuration flag rather than a member of either NC model, and both
|
||||
the Offset Table tab and the branch's Tool Offsets leaf read and write that one flag. The two
|
||||
<em>tables</em> stay separate: this tab's <strong>Refresh from Tool House</strong> recomputes
|
||||
<a class="xref" href="../api/Hi.Numerical.HardNcEnv.html#Hi_Numerical_HardNcEnv_MillingToolOffsetTable">MillingToolOffsetTable</a> from <a class="xref" href="../api/Hi.Machining.MachiningToolHouse.html">MachiningToolHouse</a>,
|
||||
while the branch's refresh recomputes the runner's own tool-offset table.</p>
|
||||
<h2 id="two-faces-of-a-work-coordinate">Two Faces of a Work Coordinate</h2>
|
||||
<p>The work-coordinate marker is one displayee class serving two providers. This page's viewer draws it
|
||||
from <a class="xref" href="../api/Hi.Numerical.HardNcEnv.html#Hi_Numerical_HardNcEnv_IsoCoordinateTable">IsoCoordinateTable</a> — a
|
||||
<a class="xref" href="../api/Hi.NcParsers.Dependencys.Generic.IsoCoordinateTable.html">IsoCoordinateTable</a> instance owned by the legacy model, which
|
||||
constructs with <code>G54</code> … <code>G59</code> and <code>G59.1</code> … <code>G59.9</code> all at zero. The General Setup canvas builds the
|
||||
same displayee over the active runner's effective
|
||||
<a class="xref" href="../api/Hi.NcParsers.Dependencys.IIsoCoordinateConfig.html">IIsoCoordinateConfig</a> instead, which on most brands is the brand
|
||||
parameter table. Same marker, same code, two stores.</p>
|
||||
<p>Selecting a row on the ISO Coordinate Table tab writes the marker's id onto the shared Execution
|
||||
displayee, so it decides which offset the marker draws at. It decides that whether or not the marker
|
||||
is drawn: all three coordinate flags are off in the shipped rendering-flag set — as are the machine
|
||||
tool and the cutter, leaving the workpiece, the fixture, the dimension bar and the cutter-location
|
||||
strip as the four that arrive on — so on an untouched project the selection column moves something
|
||||
invisible until <strong>Show on Display</strong> is pressed. The datum tabs also carry a
|
||||
single-selection column, but nothing is sent when it changes — there the selection is a highlight and
|
||||
nothing more.</p>
|
||||
<p>The model this screen edits — what <a class="xref" href="../api/Hi.Numerical.HardNcEnv.html">HardNcEnv</a> holds, the three settings it
|
||||
owns alone, what it shares with the branch, and the engine files behind all of it — is
|
||||
<a class="xref" href="legacy-controller-settings.html">Legacy Controller Settings</a>.</p>
|
||||
<h2 id="the-tabs">The Tabs</h2>
|
||||
<p>The left pane is a tab strip over seven panels, addressable as the route's optional segment:
|
||||
<code>coordinate-table</code>, <code>datum-preset</code>, <code>datum-shift</code>, <code>offset-table</code>, <code>machine</code>, <code>brand</code>, <code>config</code>. A
|
||||
@@ -509,37 +422,21 @@ number and shift argument it draws nothing without, and the legacy tables it res
|
||||
</ul>
|
||||
<h3 id="hiapi-engine">HiAPI Engine</h3>
|
||||
<ul>
|
||||
<li><code>HiUniNc/Numerical/HardNcEnv.cs</code> — the model this page edits: the coordinate, datum and offset
|
||||
tables, the stroke boxes that construct infinite, the rapid rate and tooling time, the
|
||||
shortest-rotary flag with its Heidenhain exclusion, and the master-axis character over its integer
|
||||
direction.</li>
|
||||
<li><code>HiUniNc/Numerical/HardNcEnv.cs</code> — the model behind the tab table above: the coordinate, datum and
|
||||
offset tables, the two stroke boxes that construct infinite, and the rapid rate and tooling time
|
||||
the Machine tab writes.</li>
|
||||
<li><code>HiGeom/Geom/Box3d.cs</code> — the box the two stroke limits are, its infinite construction, and the
|
||||
six-argument constructor whose grouped argument order the interleaved stroke writes are handed to.</li>
|
||||
<li><code>HiUniNc/Numerical/HardNcLine.cs</code> — the legacy consumers of two of those settings: the
|
||||
shortest-rotary path application and the <code>SEQ</code> solve that reads the master-axis direction.</li>
|
||||
<li><code>HiUniNc/Numerical/MillingToolOffsetTable.cs</code> — the offset table and the tool-house recompute the
|
||||
Refresh button calls.</li>
|
||||
<li><code>HiMech/NcParsers/Dependencys/Generic/IsoCoordinateTable.cs</code> — the coordinate table type and the
|
||||
fifteen G-code keys it constructs with, shared by name with the runner's brand-agnostic table.</li>
|
||||
<li><code>HiMech/Machining/MachiningEquipmentUtils/MachiningEquipmentUtil.cs</code> — the alignment itself: the
|
||||
translation written into the fixture's geometry-to-table transformer.</li>
|
||||
<li><code>HiMech/NcParsers/SoftNcRunner.cs</code> — the legacy import: which legacy fields are funnelled into
|
||||
which runner dependency, including the rotary speed conversion into the rapid-feedrate config.</li>
|
||||
<li><code>HiMech/NcParsers/LogicSyntaxs/PolarInterpolationUtil.cs</code> — the rotary speed ceiling the runner
|
||||
pipeline reads, and why it is the rapid-rate bucket rather than a setting of its own.</li>
|
||||
<li><code>HiMech/NcParsers/LogicSyntaxs/Heidenhain/HeidenhainPlaneTiltSyntax.cs</code> — the derived master rotary
|
||||
on the runner pipeline: the first declared rotary axis, with no configured alternative.</li>
|
||||
<li><code>HiNc/MachiningProcs/MachiningProject.cs</code> — where both models hang off the project, and the load
|
||||
path that derives a runner from the legacy element only when no runner element is present.</li>
|
||||
<li><code>HiNc/MachiningProcs/LocalProjectService.cs</code> — the legacy runner built over a delegate onto the
|
||||
project's model, the switch that selects which pipeline is active, and the per-step stroke check
|
||||
that falls back to the legacy boxes when no runner-side stroke config resolves.</li>
|
||||
<li><code>HiNc/Numerical/FilePlayers/HardNcRunner.cs</code> — the legacy runner itself.</li>
|
||||
<li><code>HiNc/MachiningProcs/SessionShell.cs</code> — the scripting face of the pipeline switch and of the
|
||||
alignment, and the optimisation route that passes the legacy model directly.</li>
|
||||
<li><code>HiUniNc/Numerical/MillingToolOffsetTable.cs</code> — the offset table the Offset Table tab edits: a
|
||||
dictionary keyed on the offset id, which is the key a row rename moves an entry to.</li>
|
||||
<li><code>HiNc/MachiningProcs/LocalProjectService.cs</code> — the per-step stroke check that falls back to the
|
||||
legacy boxes when no runner-side stroke config resolves, which is what makes a regrouped box
|
||||
observable.</li>
|
||||
</ul>
|
||||
<h2 id="see-also">See Also</h2>
|
||||
<ul>
|
||||
<li><a class="xref" href="legacy-controller-settings.html">Legacy Controller Settings</a> — the model this screen edits, the three settings it
|
||||
owns alone, and the engine files behind them</li>
|
||||
<li><a class="xref" href="general-setup/controller/index.html">Controller Branch</a> — the SoftNcRunner-native controller branch that supersedes this screen,
|
||||
and where controller settings for a project are edited</li>
|
||||
<li><a class="xref" href="general-setup/index.html">General Setup Page</a> — the page that hosts the branch above, and the rest of the equipment
|
||||
|
||||
Reference in New Issue
Block a user