Archived
deploy webservice static-file routing for docsite folder URLs, per-instance step-cache db, and constant-height panel title bars.
This commit is contained in:
@@ -88,6 +88,7 @@
|
||||
<h1 id="workflow-basic-machining-simulation">Workflow: Basic Machining Simulation</h1>
|
||||
|
||||
<p>This workflow walks through setting up and running a machining simulation from scratch, including project configuration, option tuning, NC execution, and result inspection.</p>
|
||||
<p>For the <em>method</em> of assembling one — build order, how to shape the mission, and the replay-and-read-the-messages acceptance test that says the project is finished — see <a href="project-construction.html">Project Construction</a>.</p>
|
||||
<pre><code class="lang-mermaid">flowchart TD
|
||||
Equipment["Set machine tool &<br>controller brand/type"]
|
||||
Job["Set workpiece, fixture,<br>tool house, NC files,<br>controller offsets"]
|
||||
@@ -97,6 +98,57 @@
|
||||
|
||||
Equipment --> Job --> Option --> Run --> View
|
||||
</code></pre>
|
||||
<h2 id="starting-from-client-deliverables">Starting from Client Deliverables</h2>
|
||||
<p>A real project usually starts from a bundle a customer hands over: NC programs, part/blank CAD, a tool sheet, sometimes a machine model and a few words about how the part is clamped and zeroed. Before building anything, reconcile that bundle against the <a href="../manual/setup/project-data-checklist.html">Project Data Checklist</a>, then map each item to the steps below:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Client deliverable</th>
|
||||
<th>Maps to</th>
|
||||
<th>Setup page</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>NC programs (<code>.nc</code>, <code>.anc</code>, …)</td>
|
||||
<td>NC files + controller brand</td>
|
||||
<td><a href="../manual/setup/controller-iso.html">General NC Code Support</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tool sheet (diameters, corner radius, flute count, stick-out)</td>
|
||||
<td>Tool House</td>
|
||||
<td><a href="../manual/setup/cutter.html">Cutter</a>, <a href="../manual/setup/apt.html">APT</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Part CAD + blank/stock CAD</td>
|
||||
<td>Workpiece <code>IdealGeom</code> + <code>InitGeom</code></td>
|
||||
<td><a href="../manual/setup/anchor.html">Anchor</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Machine model + axis layout (3-axis, 3+1, 5-axis)</td>
|
||||
<td>Machine tool kinematic chain</td>
|
||||
<td><a href="../manual/setup/machine-tool.html">Machine Tool</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>“Where is program zero?” notes, work-offset list</td>
|
||||
<td>Program zero + work-offset table</td>
|
||||
<td><a href="../manual/setup/program-zero-alignment.html">Program Zero Alignment</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Material name</td>
|
||||
<td>Workpiece material + cutting parameters</td>
|
||||
<td><a href="../manual/setup/project-data-checklist.html">Project Data Checklist</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p>CAD geometry commonly arrives as <strong>STEP</strong> (<code>.step</code> / <code>.stp</code>). The workpiece and machine bodies are consumed as <strong>STL</strong> (or parametric primitives), so convert STEP to STL before import. The tool sheet's diameter and corner radius are authoritative; flute length, tooth count, helix, and stick-out are often missing and may have to be estimated from the spec string and confirmed with the client.</p>
|
||||
</div>
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p>When deliverables are incomplete (no blank CAD, unknown work offsets, unverified machine model), you can still stand up a <strong>rough</strong> project: use the NC tool diameters, the named material, a placeholder stock box that encloses the tool path, and an identity work offset — then run a coarse pass (see <a href="#31-workpiece-entity-resolution">§3.1</a>) to catch gross overcut/collision while you wait for the missing data. Record every assumed value so it can be confirmed later.</p>
|
||||
</div>
|
||||
<h2 id="1-set-machine-tool-and-controller">1. Set Machine Tool and Controller</h2>
|
||||
<p>The machine tool and controller are fixed equipment that define the physical simulation environment.</p>
|
||||
<h3 id="machine-tool">Machine Tool</h3>
|
||||
@@ -108,6 +160,10 @@
|
||||
<hr>
|
||||
<h2 id="2-set-job-components">2. Set Job Components</h2>
|
||||
<p>With equipment fixed, configure the job-specific components that change between simulations.</p>
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p>For the full list of data to collect before building a project (and a customer-facing checklist), see <a href="../manual/setup/project-data-checklist.html">Project Data Checklist</a>.</p>
|
||||
</div>
|
||||
<h3 id="job-components">Job Components</h3>
|
||||
<table>
|
||||
<thead>
|
||||
@@ -162,6 +218,10 @@ var fixture = Fixture;
|
||||
<h5>Warning</h5>
|
||||
<p>Each halving of mesh width can increase computation time and RAM by up to <strong>8x</strong>. Start with a coarser resolution and refine only when needed.</p>
|
||||
</div>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p>Going <em>finer</em> is what costs the <strong>8x</strong> — and at the fine resolutions real NC machining needs, geometry removal is usually the bottleneck. Going <em>coarser</em> only saves time while geometry removal is the bottleneck. Once the mesh is coarse enough that geometry removal is already cheap (1–2 mm is already very coarse for NC), the fixed per-step costs dominate and raising <code>MachiningResolution_mm</code> further barely changes total time (this is why 1.0 mm and 2.0 mm can run at nearly the same speed). To speed up in that regime, reduce the step count via <a href="#33-machining-motion-resolution">Machining Motion Resolution</a>. See <a href="../manual/analysis/cpu-usage.html">CPU Usage During Simulation</a>.</p>
|
||||
</div>
|
||||
<h3 id="32-display-cache">3.2 Display Cache</h3>
|
||||
<pre><code class="lang-csharp">DispCache_Mb = 260;
|
||||
</code></pre>
|
||||
@@ -180,25 +240,29 @@ var fixture = Fixture;
|
||||
<tr>
|
||||
<td>Feed Per Cycle</td>
|
||||
<td><code>MachiningMotionResolution = FeedPerCycle;</code></td>
|
||||
<td>One step per spindle revolution</td>
|
||||
<td>One step per spindle revolution (<strong>default</strong>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Scaled Feed Per Cycle</td>
|
||||
<td><code>MachiningMotionResolution = ScaledFeedPerCycle(0.5);</code></td>
|
||||
<td>One step per revolution × scale factor</td>
|
||||
<td><code>MachiningMotionResolution = ScaledFeedPerCycle(2);</code></td>
|
||||
<td>One step per (revolution × scale): scale > 1 → fewer steps (faster); scale < 1 → more steps (finer)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Feed Per Tooth</td>
|
||||
<td><code>MachiningMotionResolution = FeedPerTooth;</code></td>
|
||||
<td>One step per tooth revolution (default)</td>
|
||||
<td>One step per tooth pass (revolution ÷ flute count)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Fixed Pace</td>
|
||||
<td><code>MachiningMotionResolution = FixedPace(1, 15);</code></td>
|
||||
<td>Fixed linear (mm) and rotary (deg) resolution</td>
|
||||
<td>Fixed linear (mm) and rotary (deg) resolution; cuts by sweeping between steps</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="IMPORTANT">
|
||||
<h5>Important</h5>
|
||||
<p><strong>Total simulation time is governed by whichever is slower: geometry removal or the per-step fixed costs.</strong> Geometry-removal cost is set by <a href="#31-workpiece-entity-resolution">mesh resolution</a>; the per-step fixed costs (physics, thermal/wear, per-step bookkeeping) are set by the <strong>number of steps</strong> — the motion-resolution mode plus the spindle revolutions along the toolpath, independent of mesh resolution and of workpiece size. At the fine resolutions real NC machining needs, <strong>geometry removal is usually the bottleneck</strong> (finer = much slower). Only once the mesh is coarse enough that geometry removal is already cheap do the fixed per-step costs dominate — then raising <code>MachiningResolution_mm</code> further will <strong>not</strong> speed things up (this is why 1.0 mm and 2.0 mm can run at nearly the same speed); reduce the step count instead — e.g. <code>ScaledFeedPerCycle(2)</code> takes one step per 2 revolutions, halving the steps, at the cost of sparser force-curve sampling. See <a href="../manual/analysis/cpu-usage.html">CPU Usage During Simulation</a>.</p>
|
||||
</div>
|
||||
<div class="WARNING">
|
||||
<h5>Warning</h5>
|
||||
<p><strong>Do not use scaled model dimensions as a substitute for adjusting mesh width.</strong> Scaling model dimensions causes internal algorithm thresholds (minimum cuttable amount, floating-point-to-fraction range) to become invalid, producing irregular geometry artifacts. Adjust resolution settings instead.</p>
|
||||
@@ -209,7 +273,7 @@ var fixture = Fixture;
|
||||
</code></pre>
|
||||
<hr>
|
||||
<h2 id="4-run-simulation">4. Run Simulation</h2>
|
||||
<p>There are three ways to drive the simulation.</p>
|
||||
<p>There are four ways to drive the simulation, plus player controls.</p>
|
||||
<h3 id="41-playncfile--execute-from-a-file">4.1 PlayNcFile — Execute from a File</h3>
|
||||
<p><a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_PlayNcFile_">PlayNcFile</a><small>(API)</small> reads and executes an NC file.</p>
|
||||
<pre><code class="lang-csharp">PlayNcFile("NC/file1.nc");
|
||||
@@ -234,7 +298,15 @@ PlayNc($"G01 X{x} Y20 F100", "Generated Command");
|
||||
<h5>Tip</h5>
|
||||
<p>CSV files exported by <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_WriteStepFiles_">WriteStepFiles</a><small>(API)</small> can be directly read back with <a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_PlayCsvFile_">PlayCsvFile</a><small>(API)</small>.</p>
|
||||
</div>
|
||||
<h3 id="44-player-control">4.4 Player Control</h3>
|
||||
<h3 id="44-playclfile--drive-from-a-cutter-location-file">4.4 PlayClFile — Drive from a Cutter-Location File</h3>
|
||||
<p><a class="xref" href="../api/Hi.MachiningProcs.SessionShell.html#Hi_MachiningProcs_SessionShell_PlayClFile_">PlayClFile</a><small>(API)</small> replays an NX cutter-location file (CLSF / APT-source, <code>.cls</code>) directly as tool motion — the machine-independent CAM toolpath, <strong>before</strong> it is post-processed for a specific machine.</p>
|
||||
<pre><code class="lang-csharp">PlayClFile("CL/part-op10.cls");
|
||||
</code></pre>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p>Unlike the file players above, CL playback drives a <a class="xref" href="../api/HiMachining.Milling.ClMillingDevice.html">ClMillingDevice</a> chain — the cutter location is applied straight to the tool — <strong>not</strong> the machine-tool chain from <a href="#1-set-machine-tool-and-controller">§1</a>. Use it to verify the programmed path itself, independent of machine and post-processor. See <a href="../manual/runtime/cutter-location-playback.html">Cutter-Location (CL) Playback</a> for the supported record set, tool creation from <code>TLDATA</code>, and the chain requirement.</p>
|
||||
</div>
|
||||
<h3 id="45-player-control">4.5 Player Control</h3>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -263,13 +335,13 @@ if (someCondition)
|
||||
</code></pre>
|
||||
<hr>
|
||||
<h2 id="5-view-results">5. View Results</h2>
|
||||
<h3 id="51-runtime-geometry">5.1 Runtime Geometry</h3>
|
||||
<p>After simulation the workpiece geometry is a <strong>Runtime Geometry</strong> (cubic mesh). You can save and reload it to avoid re-computing the initial shape:</p>
|
||||
<pre><code class="lang-csharp">WriteRuntimeGeom("Cache/file1.wct");
|
||||
WriteRuntimeGeomToStl("Output/file1.stl");
|
||||
<h3 id="51-meshed-geometry">5.1 Meshed Geometry</h3>
|
||||
<p>After simulation the workpiece geometry is a <strong>Meshed Geometry</strong> (cubic mesh). You can save and reload it to avoid re-computing the initial shape:</p>
|
||||
<pre><code class="lang-csharp">WriteMeshedGeom("Cache/file1.wct");
|
||||
ExportMeshedGeomToStl("Output/file1.stl");
|
||||
</code></pre>
|
||||
<p>To reload a saved geometry for a subsequent run:</p>
|
||||
<pre><code class="lang-csharp">ReadRuntimeGeom("Cache/init.wct");
|
||||
<pre><code class="lang-csharp">ReadMeshedGeom("Cache/init.wct");
|
||||
PlayNcFile("NC/file1.nc");
|
||||
</code></pre>
|
||||
<h3 id="52-step-data-inspection">5.2 Step Data Inspection</h3>
|
||||
@@ -305,9 +377,14 @@ AppendMessagesToFile("Output/messages.txt");
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Very slow simulation</td>
|
||||
<td>Resolution too fine</td>
|
||||
<td>Increase <code>MachiningResolution_mm</code></td>
|
||||
<td>Very slow simulation, large pink trail behind the tool</td>
|
||||
<td>Geometry removal is the bottleneck (mesh too fine)</td>
|
||||
<td>Increase <code>MachiningResolution_mm</code> (coarser mesh)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Very slow simulation, but a coarser mesh doesn't help</td>
|
||||
<td>Limited by step count (per-step physics)</td>
|
||||
<td>Reduce steps via <code>MachiningMotionResolution</code> (e.g. <code>ScaledFeedPerCycle(2)</code>)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Irregular bumps on geometry</td>
|
||||
@@ -330,6 +407,7 @@ AppendMessagesToFile("Output/messages.txt");
|
||||
<ul>
|
||||
<li><a href="../manual/setup/controller-heidenhain.html">Heidenhain Support</a> — controller configuration</li>
|
||||
<li><a href="../manual/setup/controller-iso.html">General NC Code Support</a> — ISO NC support</li>
|
||||
<li><a href="../manual/runtime/cutter-location-playback.html">Cutter-Location (CL) Playback</a> — replay a CAM cutter-location file with <code>PlayClFile</code></li>
|
||||
<li><a href="../manual/runtime/step.html">Step</a> — what a step is, accessing and outputting step data</li>
|
||||
<li><a href="../manual/runtime/step-fields.html">Step Field Reference</a> — step field reference</li>
|
||||
<li><a class="xref" href="../manual/runtime/script-command.html">Glossary: Script Commands</a> — script command basics</li>
|
||||
|
||||
Reference in New Issue
Block a user