Archived
344 lines
24 KiB
HTML
344 lines
24 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Milling Cutter Panel | HiAPI-C# 2025 </title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="title" content="Milling Cutter Panel | 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-MillingCutterPanel">
|
|
<h1 id="milling-cutter-panel">Milling Cutter Panel</h1>
|
|
|
|
<p>The key model is <a class="xref" href="../../../api/Hi.Milling.Cutters.MillingCutter.html">MillingCutter</a>, the one cutter type edited here in full.</p>
|
|
<p>This cutter is not one panel but the section tabs the <a class="xref" href="cutter-panel.html">Cutter Panel</a> grows once a Milling Cutter is assigned: the Control-Tree nodes under <code>toolhouse/tool-<id>/cutter</code>, reached at <code>/tool-house/:toolId/cutter/:subtab</code> under the page route <code>/tool-house/:toolId?/:tab?/:subtab?</code>. The five <code>:subtab</code> values are <code>material</code>, <code>profile</code>, <code>contours</code>, <code>upper-beam</code> and <code>opt</code>. The cutter's General fields — Shank Mass, Hone Radius, Relief Angle — are not among them: they sit on the Cutter node's own panel.</p>
|
|
<h2 id="layout">Layout</h2>
|
|
<h3 id="web-layout">Web Layout</h3>
|
|
<ul>
|
|
<li>Cutter Section Tabs, in this order
|
|
<ul>
|
|
<li><a href="#material-section">Material Section</a> — grows only while the Advanced Physics preference is on</li>
|
|
<li><a href="#flute-profile-section">Flute Profile Section</a></li>
|
|
<li><a href="#flute-contours-section">Flute Contours Section</a></li>
|
|
<li><a href="#upper-beam-section">Upper Beam Section</a></li>
|
|
<li><a href="#optimization-section">Optimization Section</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>Material is the only physics-gated section. Flute Profile, Flute Contours, Upper Beam and Optimization grow for every Milling Cutter. The preference behind the gate is the SPA's Advanced Physics option, held as <code>isShowPhysicsOptions</code> in the app-state store and read from the server's preference endpoint, which reports it as on only while the physics feature is licensed.</p>
|
|
<p>Integral mode is read-only. The cutter DTO reports it, and the Material section reads it to decide whether the Shank Material picker applies, but no endpoint sets it.</p>
|
|
<h4 id="material-section">Material Section</h4>
|
|
<ul>
|
|
<li>Material Section (<code>.../cutter/material</code>)
|
|
<ul>
|
|
<li>Flute Material
|
|
Applies <a class="xref" href="../../../api/Hi.Physics.CutterMaterial.html">CutterMaterial</a>
|
|
<ul>
|
|
<li>Intro caption naming the <code>.CutterMaterial</code> extension</li>
|
|
<li>Material File Selector
|
|
<ul>
|
|
<li>Menu Dropdown — Browse Resource…, plus Clear once a file is picked</li>
|
|
<li>Readonly path TextBox with the placeholder “No flute material selected”</li>
|
|
</ul>
|
|
</li>
|
|
<li>Name and note caption beneath the picker, the two joined on one line</li>
|
|
</ul>
|
|
</li>
|
|
<li>Shank Material, rendered only while the cutter's integral mode is Insert End
|
|
Applies <a class="xref" href="../../../api/Hi.Physics.IStructureMaterial.html">IStructureMaterial</a>
|
|
<ul>
|
|
<li>Intro caption naming the <code>.xml</code> structure material and the <code>.CutterMaterial</code> alternative</li>
|
|
<li>Material File Selector, filtered to <code>.xml</code> — same Browse Resource… menu, with the placeholder “Default: AlloySteel42CrMo”</li>
|
|
<li>Name and note caption beneath the picker</li>
|
|
</ul>
|
|
</li>
|
|
<li>Solid-End Note, shown in place of that block for a solid-end cutter — the shank material mirrors the flute material, so it has no separate setting</li>
|
|
<li>Coating Layers
|
|
Manages <a class="xref" href="../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_CoatingLayerList">CoatingLayerList</a>
|
|
<ul>
|
|
<li>Add Layer Button</li>
|
|
<li>One sequence hint above the whole list: the sequence starts from the surface, <code>#0</code> is the outermost / air-exposing layer, and each layer is a <code>.CoatingMaterial</code> plus a thickness in um</li>
|
|
<li>One row per <a class="xref" href="../../../api/Hi.Physics.ThermalLayer1D.html">ThermalLayer1D</a>, all controls on that one line
|
|
<ul>
|
|
<li>Index Badge <code>#i</code></li>
|
|
<li>Coating Material File Selector — Browse Resource…, placeholder “No coating material”</li>
|
|
<li>Thickness Input Field (um) — <a class="xref" href="../../../api/Hi.Physics.ThermalLayer1D.html#Hi_Physics_ThermalLayer1D_Length_um">Length_um</a></li>
|
|
<li>Move Toward Surface Button, disabled on the first row</li>
|
|
<li>Move Toward Body Button, disabled on the last row</li>
|
|
<li>Delete Layer Button</li>
|
|
</ul>
|
|
</li>
|
|
<li>Empty state caption “No coating layers.”</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>All three pickers are resource-only, which is what leaves the dropdown with a single browse entry: the absolute Browse item is hidden and only Browse Resource… remains. The picked material's name and note are rendered as a caption line under the picker rather than as a tooltip on a readonly name box.</p>
|
|
<p>The mirroring for a solid-end cutter is enforced server-side: loading a flute material onto a solid-end cutter assigns the same material as the shank material, and unsetting it clears both. For an insert-end cutter, unsetting the shank material resets it to the built-in AlloySteel42CrMo rather than to nothing.</p>
|
|
<p>Every coating endpoint answers with the whole cutter DTO, so the row list re-renders from the server's own ordering after an add, a move or a delete.</p>
|
|
<h5 id="default-resource">Default Resource</h5>
|
|
<p>The default resources of Material live in the built-in <code>Resource</code> folder the server exposes as a named root of its own — not in the project folder. Each picker opens Browse Resource… into its own subfolder of that root:</p>
|
|
<ul>
|
|
<li><code>StructureMaterial</code> — the Shank Material picker</li>
|
|
<li><code>CutterMaterial</code> — the Flute Material picker</li>
|
|
<li><code>CoatingMaterial</code> — the coating rows' pickers</li>
|
|
</ul>
|
|
<h4 id="flute-profile-section">Flute Profile Section</h4>
|
|
<ul>
|
|
<li>Flute Profile Section (<code>.../cutter/profile</code>)
|
|
<ul>
|
|
<li>Profile Type Selection Dropdown
|
|
<ul>
|
|
<li>General APT (<a class="xref" href="../../../api/Hi.Milling.Apts.GeneralApt.html">GeneralApt</a>)</li>
|
|
<li>Ball APT (<a class="xref" href="../../../api/Hi.Milling.Apts.BallApt.html">BallApt</a>)</li>
|
|
<li>Column APT (<a class="xref" href="../../../api/Hi.Milling.Apts.ColumnApt.html">ColumnApt</a>)</li>
|
|
<li>Cone APT (<a class="xref" href="../../../api/Hi.Milling.Apts.ConeApt.html">ConeApt</a>)</li>
|
|
<li>Taper APT (<a class="xref" href="../../../api/Hi.Milling.Apts.TaperApt.html">TaperApt</a>)</li>
|
|
</ul>
|
|
</li>
|
|
<li>The APT fields themselves, rendered inline in this same panel</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>The five types are all wrapped by <a class="xref" href="../../../api/Hi.Milling.Cutters.AptProfile.html">AptProfile</a>, with a different <a class="xref" href="../../../api/Hi.Milling.Cutters.AptProfile.html#Hi_Milling_Cutters_AptProfile_Apt">Apt</a> assigned; which fields appear depends on the type. See <a class="xref" href="apt-profile-panel.html">APT Profile Panel</a> for the field list and the per-type table that drives it.</p>
|
|
<p>See the <code>DemoBuildMachiningProject</code> sample in the <a class="xref" href="../../../technique/api-foundations/packages-and-samples.html">Hi.Sample repository</a> for creating the APT profile and setting it on the cutter.</p>
|
|
<p><code>CustomSpinningProfile</code> is not offered here; the five APT types are.</p>
|
|
<h4 id="flute-contours-section">Flute Contours Section</h4>
|
|
<p>This part manages <a class="xref" href="../../../api/Hi.Milling.Cutters.MillingCutter.html#Hi_Milling_Cutters_MillingCutter_Fluting">Fluting</a>. It is a stem, not a leaf: the section node carries only the type selector, and the fluting itself is a sub-tree of nodes below it.</p>
|
|
<ul>
|
|
<li>Flute Contours Section (<code>.../cutter/contours</code>)
|
|
<ul>
|
|
<li>Title Label — Fluting</li>
|
|
<li>Fluting Type Selection Dropdown
|
|
<ul>
|
|
<li>Uniform (shared baseline) — <a class="xref" href="../../../api/Hi.Milling.FluteContours.UniformFluting.html">UniformFluting</a></li>
|
|
<li>Free (per-flute) — <a class="xref" href="../../../api/Hi.Milling.FluteContours.FreeFluting.html">FreeFluting</a></li>
|
|
<li><code>— unset —</code></li>
|
|
</ul>
|
|
</li>
|
|
<li>A caption describing the chosen kind, or “Fluting unset.” while none is set</li>
|
|
<li>Fluting Node, grown only once a fluting is set — labelled Uniform Fluting or Free Fluting
|
|
<ul>
|
|
<li>For a uniform fluting: Flute Number Input Field (minimum 1)</li>
|
|
<li>For a free fluting: a “Flutes: n” caption and an Add Flute Button, with a “No flutes yet” hint while the list is empty</li>
|
|
<li>Flute Contour Node(s)
|
|
<ul>
|
|
<li>One Baseline Contour node (<code>.../fluting/baseline</code>) for a uniform fluting; one Flute <em>n</em> node (<code>.../fluting/flute-{i}</code>) per flute for a free fluting</li>
|
|
<li>Setup Angle Input Field (deg)</li>
|
|
<li>Delete This Flute Button — free fluting only</li>
|
|
<li>Side Contour Sub-Node (<code>.../baseline/side</code>, <code>.../flute-{i}/side</code>)
|
|
<ul>
|
|
<li>Kind Selector — Const Helix / Freeform / <code>— unset —</code></li>
|
|
<li>Const Helix Side Contour form: Helix Angle (deg), Radial Rake Angle (deg), Radial Relief Angle (deg)</li>
|
|
<li>Freeform Side Contour form: the span-position table, ordered by Z</li>
|
|
</ul>
|
|
</li>
|
|
<li>Bottom Contour Sub-Node (<code>.../baseline/bottom</code>, <code>.../flute-{i}/bottom</code>)
|
|
<ul>
|
|
<li>Kind Selector — Slide / Freeform / <code>— unset —</code></li>
|
|
<li>Slide Bottom Contour form: Outer Radius (mm), Cutter Length on Bottom Projection (mm), Eccentric Angle (deg), Disk Angle (deg), Axial Rake Angle (deg)</li>
|
|
<li>Freeform Bottom Contour form: the span-position table, ordered by R</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>Both freeform forms share one span-position table: four numeric columns — R (mm), A (deg), Z (mm), R.Ang (deg) — one row per 4D span position, with an insert-next button that clones the row and a double-click to remove it. The header wording mirrors the CSV field order the wire format uses, and the R.Ang column carries a tooltip explaining that the radial angle feeds the bottom-surface loft.</p>
|
|
<p>A flute contour is always committed as a whole. Editing a Setup Angle, a side contour or a bottom contour re-sends the entire contour: a uniform fluting re-sends the fluting with its current flute number, and a free fluting updates the slot at its index. Free flute node ids are positional, so adding or deleting a flute rebuilds the branch to re-point them.</p>
|
|
<p>Picking <code>— unset —</code> in the Fluting Type selector is inert — the panel returns without a call, because the backend exposes no way to null a fluting. Picking <code>— unset —</code> on a Side or Bottom Contour, in contrast, does commit: it clears that contour on the flute.</p>
|
|
<h4 id="upper-beam-section">Upper Beam Section</h4>
|
|
<p>The upper beam is the cutter's shank / body above the flute.</p>
|
|
<ul>
|
|
<li>Upper Beam Section (<code>.../cutter/upper-beam</code>)
|
|
<ul>
|
|
<li>Intro caption</li>
|
|
<li>Warnings Banner — one orange banner per geometry issue the backend reports, e.g. an ExtendedCylinder beam whose FullLength sits below the flute top</li>
|
|
<li><a class="xref" href="../../geom/geom-manage-control.html">Geometry Management Control</a>, limited to the six <a class="xref" href="../../../api/Hi.Geom.IGetStl.html">IGetStl</a> kinds an upper beam can be
|
|
<ul>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.Cylindroid.html">Cylindroid</a></li>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.ExtendedCylinder.html">ExtendedCylinder</a></li>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.TransformationGeom.html">TransformationGeom</a></li>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.StlFile.html">StlFile</a></li>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.Box3d.html">Box3d</a></li>
|
|
<li><a class="xref" href="../../../api/Hi.Geom.GeomCombination.html">GeomCombination</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>The banner is persistent rather than a transient toast: the same unreasonable settings fail thermal physics at run time as configuration errors, so they are surfaced at edit time. Creating a geometry here is container-aware — the server builds it, sets it as the cutter's upper-beam geometry, auto-links an ExtendedCylinder to the flute with a valid seed length, and indexes it under the same key so the per-kind editor edits it in place. Each later edit resyncs the cutter and refreshes the warning list.</p>
|
|
<h4 id="optimization-section">Optimization Section</h4>
|
|
<p>This part manages <a class="xref" href="../../../api/Hi.NcOpt.MillingCutterOptOption.html">MillingCutterOptOption</a>.</p>
|
|
<ul>
|
|
<li>Optimization Section (<code>.../cutter/opt</code>)
|
|
<ul>
|
|
<li>Enable Optimization Checkbox
|
|
<ul>
|
|
<li>Controls whether the limits below are shown and active</li>
|
|
</ul>
|
|
</li>
|
|
<li>When optimization is enabled:
|
|
<ul>
|
|
<li>Limit by Theoretical Minimum Feed Per Tooth Checkbox</li>
|
|
<li>Limit by Relief Angle Checkbox</li>
|
|
<li>Min Feed Per Tooth Input Field (mm)</li>
|
|
<li>Max Feed Per Tooth Input Field (mm)</li>
|
|
<li>Yielding Utilization Factor Input Field
|
|
<ul>
|
|
<li>The reciprocal of the Yielding Safety Factor the server stores; the panel converts in both directions</li>
|
|
</ul>
|
|
</li>
|
|
<li>Hint caption: typical values run 0.33 (conservative) to 1.0 (aggressive)</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p>Both checkboxes are plain labelled checkboxes — neither displays a computed value. The server's defaults when a limit set is written without them are a Yielding Safety Factor of 3 (a utilization factor of about 0.33), a Max Feed Per Tooth of 999, and both limit flags on.</p>
|
|
<p>The minimum uncut chip thickness itself is not on this surface: no cutter endpoint returns it, and no field displays it.</p>
|
|
<h2 id="features">Features</h2>
|
|
<p>Every web edit is a whole-object commit followed by a cache clear. The Flute Profile panel re-sends the entire shaper profile on any field change — only the fields the selected APT type carries are included — then clears the tool cache. The contour panels re-send the whole flute contour. The optimization panel re-sends the whole limit set. The material and coating endpoints each answer with the full cutter DTO, which the panels re-render from.</p>
|
|
<p>A blanked numeric box commits nothing. The shared numeric field emits null for an empty entry, and every cutter panel returns on null rather than writing a zero, so clearing a field leaves the stored value alone.</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>
|
|
<p>HiNC-2025-webservice (Quasar CLI SPA):</p>
|
|
<ul>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolHouseItemTypes.ts</code> — the item-type registry and the child builders: the cutter's five sections, the Material physics gate, and the fluting / flute / side / bottom sub-tree.</li>
|
|
<li><code>wwwroot-src/src/router/treeRoutes.ts</code> — role-path to route translation; <code>CUTTER_SECTIONS</code> pins <code>material</code>, <code>profile</code>, <code>contours</code>, <code>upper-beam</code> and <code>opt</code>, and it also translates a <code>…/contours/tray…</code> id onto the <code>fluting</code> segment the node carries, so both spellings of the engine's Fluting type family resolve.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/ToolCutterPanel.vue</code> — the parent Cutter node: the type selector plus the cutter's General fields.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/CutterSectionPanel.vue</code> — the one panel shared by the material / profile / upper-beam / opt sections, keyed off the node's last role segment. It renders the Flute Profile fields inline and delegates the other three.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/MaterialDiv.vue</code> — the Material section: flute material, the insert-end-only shank material, the solid-end note, and the coating list.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/CoatingLayersDiv.vue</code> — the coating rows: index badge, material picker, thickness, move toward surface / body, delete.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/CutterContoursPanel.vue</code> — the Flute Contours stem: the Fluting Type selector.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/FlutingPanel.vue</code> — the concrete fluting node: Flute Number for uniform, the flute count and Add Flute for free.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/FluteContourPanel.vue</code> — one flute contour node: Setup Angle, and Delete This Flute for a free flute.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/FluteSideContourPanel.vue</code> and <code>wwwroot-src/src/components/controlTree/toolhouse/FluteBottomContourPanel.vue</code> — the two sub-nodes: kind selector plus the matching form.</li>
|
|
<li><code>wwwroot-src/src/components/controlTree/toolhouse/fluteContourNode.ts</code> — the shared load and commit logic behind those three panels, and the rule that a contour is committed whole.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/fluting/ConstHelixSideContourDiv.vue</code>, <code>wwwroot-src/src/components/toolhouse/fluting/SlideBottomContourDiv.vue</code>, <code>wwwroot-src/src/components/toolhouse/fluting/FreeformSideContourDiv.vue</code> and <code>wwwroot-src/src/components/toolhouse/fluting/FreeformBottomContourDiv.vue</code> — the four contour parameter forms.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/fluting/SpanContourPosListDiv.vue</code> — the R / A / Z / R.Ang span-position table both freeform forms share.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/UpperBeamDiv.vue</code> — the Upper Beam section: the six allowed geometry kinds, the container-aware create, the resync-on-edit and the warnings banner.</li>
|
|
<li><code>wwwroot-src/src/components/geom/GeometryEditor.vue</code> — the shared geometry editor that section reuses.</li>
|
|
<li><code>wwwroot-src/src/components/toolhouse/MillingCutterOptLimitDiv.vue</code> — the Optimization section, including the Yielding Utilization Factor conversion.</li>
|
|
<li><code>wwwroot-src/src/components/widgets/NumericInput.vue</code> — the numeric field every cutter form uses: no <code>G4</code>, commit on blur or Enter, revert on an unparseable entry.</li>
|
|
<li><code>wwwroot-src/src/components/widgets/FilePathInput.vue</code> — the picker behind the material selectors; its resource-only mode hides the absolute Browse item and leaves Browse Resource….</li>
|
|
<li><code>wwwroot-src/src/stores/appState.ts</code> — holds <code>isShowPhysicsOptions</code>, the Advanced Physics preference that gates the Material section.</li>
|
|
<li><code>wwwroot-src/src/i18n/en/toolhouse.ts</code> — every label quoted above: <code>cutter.*</code>, <code>material.*</code>, <code>contour.*</code>, <code>fluting.*</code>, <code>upperBeam.*</code> and <code>opt.*</code>.</li>
|
|
<li><code>wwwroot-src/src/api/toolHouse.ts</code> — the typed wrapper over <code>/api/Cutter</code>: shaper profile, fluting, the free-contour CRUD, the material and coating endpoints, the upper beam and the opt limit.</li>
|
|
<li><code>Mech/CutterController.cs</code> — the cutter backend: the APT construction from the profile DTO, the fluting builders, the opt-limit defaults, the solid-end shank-material mirroring, and the cache clear every field and geometry mutator performs.</li>
|
|
<li><code>Mech/CutterDtoBuilder.cs</code> — the read-side cutter DTO: integral mode, general, shaper profile, fluting, opt limit and material.</li>
|
|
<li><code>Mech/ToolHouseController.cs</code> — the tool detail that embeds that DTO, which every cutter section refreshes from.</li>
|
|
</ul>
|
|
<h2 id="see-also">See Also</h2>
|
|
<ul>
|
|
<li><a class="xref" href="../../geom/extended-cylinder-panel.html">Extended Cylinder Panel</a> — the Upper Beam's kind that exists
|
|
for this cutter, and the one surface that gives it a start section</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>
|