This commit is contained in:
2026-09-12 18:16:27 +08:00
parent b7f55aa631
commit 397a7a8cc4
96 changed files with 1167 additions and 1259 deletions
@@ -156,12 +156,17 @@ project file's own folder. Opening the project file in a text editor shows those
than what they point at.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p><strong>A reference that points at nothing does not stop the project opening.</strong> Load and ReLoad read what
they can and report what they could not — a missing STL, or a mesh-geometry <code>.wct</code> file a raw
geometry names — and the project comes up with that body simply having no geometry, the action
still reporting success. The message is the only thing that says otherwise, and it is not kept
where a run's messages are kept: see
<a href="messages-and-logs.html#messages-a-project-load-raises">Messages a project load raises</a>.</p>
<p><strong>A raw geometry that points at nothing does not stop the project opening; a missing side file
does.</strong> Load and ReLoad read what they can and report what they could not — a missing STL, say —
and the project comes up with that body simply having no geometry, the action still reporting
success. A mesh-geometry <code>.wct</code> file a raw geometry names is quieter still: the load neither opens
it nor mentions it, and the first word about it is a warning raised when the meshed geometry is
first needed. A side file named as a reference is the other case altogether: when the machine
chain, the spindle capability, a material or a cutting parameter set is not where the project file
says it is, the load fails outright — no project opens, and the failure is reported as an error
rather than as a diagnostic beside a successful load. Where a load does succeed with a hole, the
message is the only thing that says otherwise, and it is not kept where a run's messages are kept:
see <a href="messages-and-logs.html#messages-a-project-load-raises">Messages a project load raises</a>.</p>
</div>
<p>A project is therefore a folder at least as much as a file. Copying one to another machine, archiving
one, or handing one to somebody else means taking the folder.</p>
@@ -176,10 +181,14 @@ editor, waiting on a file to be given to it.</p>
<div class="WARNING">
<h5>Warning</h5>
<p><strong>A Save As into a new folder can produce a project that finds none of its programs.</strong> Save As
writes out every side file the project file holds as a reference, into the new folder and at the
same relative place, and nothing it does not. What it leaves behind is whatever the project names
as a plain path instead of as a reference — and the NC programs a mission plays are named that
way. Nothing rewrites those paths either, so the saved project still asks for <code>NC/…</code>, now
writes out the side files the project file references — the machine chain, the spindle capability,
the materials, the cutting parameters, and the STL meshes the equipment and the workpiece name —
into the new folder and at the same relative place. Two things travel as a path with nothing
behind them: a mesh-geometry <code>.wct</code>, which is never written out at all, and an STL that was
already missing when the project opened, which is deliberately left missing rather than replaced
by an empty file. Neither are the NC programs a mission plays: the project records
each as a path, and nothing on the save side copies the file. Nothing rewrites those paths either,
so the saved project still asks for <code>NC/…</code>, now
underneath the new folder, where nothing has put it. The programs have to be brought across by
hand, or the Save As aimed at a folder that already holds them.</p>
</div>
@@ -205,8 +214,9 @@ did not change — carries on with what it was showing.</p>
performed the Save As is told, in the reply to its own request. Every other browser goes on
displaying the old path in its <strong>Project</strong> dropdown, although the service is working with the new one
underneath — so a Save from any of them writes to the new path. A stale row corrects itself the next
time the service reports its state to that browser: a reload, another project change, or a run being
started, paused, finished or reset from any browser.</p>
time the service reports its state to that browser: a reload, the browser's status connection
dropping and coming back, another project change, or a run being started, paused, finished or reset
from any browser.</p>
<p>New, Load, ReLoad, Save and Save As take a turn each. A second one asked for while the first is still
running is refused rather than queued, and the refusal arrives as a warning reading <em>Another project
operation is in progress. Please try again.</em> Close Project takes no part in that turn-taking: it