Table of Contents

Tool House Page

The page triggers by Main Panel.

The key model is MachiningToolHouse. The model UserService is delivered by the host GUI.

Layout

  • Tool House Page
    • Tool List Panel The panel has CRUD (and Duplicate) of the tools. Read and Update the selected tool by the Selected Tool Editor Panel.
      • Head Line
      • Batch Action Menu
        • Select All Button
        • De-Select All Button
        • (splition bar)
        • Duplication Button
        • Remove Button
      • Create Tool Button
      • Tool List
        • Selection Checkbox (for batch action)
        • Editable Tool ID TextField
        • Editable Note/Abstract TextField
    • Selected Tool Editor Panel
    • Viewer Panel
Tip
  • Do not apply new window for tool creation. Assume the workflow is user create a default content tool and then user setup it in by the edit panel.
  • Add a resizable splition bar between Tool List Panel, Selected Tool Editor Panel and Viewer Panel.
  • The options of MillingCutterEditorDisplayee and HolderEditorDisplayee is enabled only if the upper level options are enabled, i.e. ShowCutter and ShowHolder.
  • Use less layer of EditorDisplayee Options ToolBar for user convenient. Flatten the options of the children displayee except the ratio button group.

The Tool ID can not be repeated. When create new tool, assign a new tool ID (maybe the largest ID plus 1).

When a tool is entered, call the renderingCanvas.DispEngine.SetViewToHomeView().

Duplication Button

Use Duplicate(params object[]) to duplicate the tool.

Note/Abstract TextField

The Note/Abstract TextField shows note if note existed and is not empty string; otherwise it shows the AbstractNote. The tooltip is the abstract note.

Source Code Path

See this page for git repository.

WPF Application Source Code Path

  • Mech/ToolHouse/ToolHousePage
  • Mech/ToolHouse/ToolHouseWindow

Web Page Application Source Code Path

HiNC-2025-webservice (Quasar CLI SPA). The page is built on the shared Control Tree: the tool nodes on the left, the selected node's tab cascade in the middle, the canvas on the right.

  • wwwroot-src/src/pages/ToolHousePage.vue — routed page: ToolHouseRootPanel + tool list on the left, a NodeTabCascade tab strip for the selected tool in the middle, ToolHouseSetupPanel on the right, in resizable <q-splitter> panes.
  • wwwroot-src/src/components/toolhouse/ToolHouseSetupPanel.vue — the canvas column: one RenderingCanvas bound server-side to MillingToolEditorDisplayee, following the page's selected tool, with the Display Options dropdown (Show Cutter / Show Holder + 3 anchor flags + Holder Rendering Mode + Cutter Shape Mode).
  • wwwroot-src/src/components/controlTree/toolhouse/ToolHouseRootPanel.vue — the tool-house root node: Object Management (Load / Save / Paste / XML of the MachiningToolHouse) + New Tool.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolNodePanel.vue — one tool's General tab: Tool ID / Note / auto Abstract Note + Duplicate / Delete. Mounting it points the tool canvas at that tool.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolCutterPanel.vue — the Cutter stem: cutter type selector plus the MillingCutter identity fields (Shank Mass / Hone Radius / Relief Angle).
  • wwwroot-src/src/components/controlTree/toolhouse/CutterSectionPanel.vue — the cutter's inner tabs, keyed off the node's role path (material / profile / upper-beam / opt). Flute Profile is edited inline; the others dispatch to toolhouse/MaterialDiv.vue (which grows CoatingLayersDiv.vue), toolhouse/UpperBeamDiv.vue and toolhouse/MillingCutterOptLimitDiv.vue.
  • wwwroot-src/src/components/controlTree/toolhouse/CutterContoursPanel.vue — the Flute Contours stem: the fluting type selector only. The selected fluting's editor grows below it.
  • wwwroot-src/src/components/controlTree/toolhouse/FlutingPanel.vue — the concrete fluting node and its fluting-level fields; uniform fluting grows one Baseline Contour, free fluting one tab per flute.
  • wwwroot-src/src/components/controlTree/toolhouse/FluteContourPanel.vue — one flute contour node (baseline, or flute-<i> for a free fluting): hosts Setup Angle, with Side Contour and Bottom Contour as sub-tabs. fluteContourNode.ts carries the shared re-commit.
  • wwwroot-src/src/components/controlTree/toolhouse/FluteSideContourPanel.vue / FluteBottomContourPanel.vue — kind selector + editor, dispatching to toolhouse/fluting/ConstHelixSideContourDiv.vue, FreeformSideContourDiv.vue, SlideBottomContourDiv.vue and FreeformBottomContourDiv.vue; the two freeform editors share SpanContourPosListDiv.vue for the per-flute position list.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolHolderPanel.vue — the Holder stem: holder type selector plus the Cylindroid holder's Name / Note / auto Abstract Note.
  • wwwroot-src/src/components/controlTree/toolhouse/HolderSectionPanel.vue — the Cylindroid holder's Geometry (the Z-R profile, via geom/CylindroidEditor.vue) and Resolution tabs; resyncs the holder (UpdateByCylindroid()) after each edit.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolClampingPanel.vue — the Clamping tab: ExposedCutterHeight = PreservedDistance + FluteHeight; changing either field updates the other on the server.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolIntelligentPanel.vue — the Intelligent Holder tab; a thin wrapper over toolhouse/IntelligentHolderDiv.vue (Observation Location: ObservationAnchorReference dropdown + relative Z + ring radius).
  • wwwroot-src/src/api/toolHouse.ts — typed wrapper over three server modules: ToolHouseController (/api/ToolHouse), CutterController (/api/Cutter) and ToolHouseDisplayController (/api/mech/tool-house-display).
  • wwwroot-src/src/api/cylindroidHolder.ts — typed wrapper over CylindroidHolderController.
  • Mech/ToolHouseController.cs — the tool-house collection and the tool-level fields. REST endpoints: GET /, GET /{id}, GET /GetHolder, GET/PUT /{id}/observation, PUT /{id}/note | exposed-height | preserved-distance, POST /Initialize | Update | SelectTool | CreateTool | DuplicateTool | RenameTool | SetHolderType | ClearToolCache, DELETE /DeleteTool.
  • Mech/CutterController.cs — cutter editing, split out of ToolHouseController. REST endpoints at /api/Cutter/*: POST EnsureCutter | ClearCutter, PUT /{id}/shaper-profile | fluting | general | opt-limit, FreeFluting child CRUD at /{id}/fluting/contours[/{index}], GET/POST /{id}/upper-beam[/create | /resync], and the material endpoints /{id}/flute-material/*, /{id}/shank-material/*, /{id}/coating-layers/*.
  • Mech/ToolHouseDisplayController.cs — REST endpoints at /api/mech/tool-house-display/* for display options (initialize, select-tool, show-cutter / show-holder / show-geom-anchor / show-spindle-buckle / show-cutter-buckle, holder-rendering-mode, cutter-shape-mode, clear-cache).
  • Mech/CylindroidHolderController.cs — holder-aware layer over a tool's CylindroidHolder. REST endpoints at /api/CylindroidHolder/*: GET Get (returns name / note / abstract note / resolution + indexes the holder's Cylindroid), POST UpdateGeometryContent | SetName | SetNote | SetPolarResolution. UpdateGeometryContent is the post-edit resync (UpdateByCylindroid() + ClearCache()) that the generic CylindroidController cannot perform.
Note

The engine's ContourTray type family was renamed Fluting. Both spellings still resolve: the pre-rename UniformContourTray / FreeContourTray DTO type names are still accepted by PUT /{id}/fluting, and a Control-Tree id minted before the rename (…/cutter/contours/tray…) is migrated to …/contours/fluting… on the way in.

Not yet ported to the Quasar page (deferred; edit via the WPF client in the meantime):

  • FreeformRemover cutter type.
  • FreeformHolder geometry / transformer editing.
  • InsertCutter and FluteInnerBeam physics sub-tabs.
  • CustomSpinningProfile shaper profile type.