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
- Object Management Menu Button
- file extension is MachiningToolHouse
- The pointed Editor Panel is Tool List
- Title Label
- Object Management Menu Button
- 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
- Head Line
- Selected Tool Editor Panel
- Viewer Panel
- Viewer ToolBar
- Title Label
- RenderingCanvas Tool Bar
- EditorDisplayee Options ToolBar
- EditorDisplayee Options Menu Dropdown
- Head Label: Cutter
- Show Cutter CheckBox
- (Options of MillingCutterEditorDisplayee)
- Shape Mode SubMenu
Set ShapeMode to Solid Bounding Shape if EnablePhysics is false on GUI initialization.
- Solid Bounding Shape Ratio Button
- Detail Physics Shape Ratio Button Visible if EnablePhysics is true.
- Shape Mode SubMenu
Set ShapeMode to Solid Bounding Shape if EnablePhysics is false on GUI initialization.
- (spliter)
- Head Label: Holder
- Show Holder CheckBox
- (Options of HolderEditorDisplayee)
- Show Geometry Anchor CheckBox
- Show Spindle Buckle CheckBox
- Show Cutter Buckle CheckBox
- Rendering Mode SubMenu
- Solid CheckBox
- Edge CheckBox
- Hide CheckBox
- EditorDisplayee Options Menu Dropdown
- RenderingCanvas
- Viewer ToolBar
- Tool List Panel
The panel has CRUD (and Duplicate) of the tools. Read and Update the selected tool by the Selected Tool Editor 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, aNodeTabCascadetab strip for the selected tool in the middle,ToolHouseSetupPanelon the right, in resizable<q-splitter>panes.wwwroot-src/src/components/toolhouse/ToolHouseSetupPanel.vue— the canvas column: one RenderingCanvas bound server-side toMillingToolEditorDisplayee, 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 theMachiningToolHouse) + 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 totoolhouse/MaterialDiv.vue(which growsCoatingLayersDiv.vue),toolhouse/UpperBeamDiv.vueandtoolhouse/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, orflute-<i>for a free fluting): hosts Setup Angle, with Side Contour and Bottom Contour as sub-tabs.fluteContourNode.tscarries the shared re-commit.wwwroot-src/src/components/controlTree/toolhouse/FluteSideContourPanel.vue/FluteBottomContourPanel.vue— kind selector + editor, dispatching totoolhouse/fluting/ConstHelixSideContourDiv.vue,FreeformSideContourDiv.vue,SlideBottomContourDiv.vueandFreeformBottomContourDiv.vue; the two freeform editors shareSpanContourPosListDiv.vuefor 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, viageom/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 overtoolhouse/IntelligentHolderDiv.vue(Observation Location:ObservationAnchorReferencedropdown + relative Z + ring radius).wwwroot-src/src/api/toolHouse.ts— typed wrapper over three server modules:ToolHouseController(/api/ToolHouse),CutterController(/api/Cutter) andToolHouseDisplayController(/api/mech/tool-house-display).wwwroot-src/src/api/cylindroidHolder.ts— typed wrapper overCylindroidHolderController.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 ofToolHouseController. REST endpoints at/api/Cutter/*:POST EnsureCutter | ClearCutter,PUT /{id}/shaper-profile | fluting | general | opt-limit,FreeFlutingchild 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'sCylindroidHolder. REST endpoints at/api/CylindroidHolder/*:GET Get(returns name / note / abstract note / resolution + indexes the holder'sCylindroid),POST UpdateGeometryContent | SetName | SetNote | SetPolarResolution.UpdateGeometryContentis the post-edit resync (UpdateByCylindroid()+ClearCache()) that the genericCylindroidControllercannot 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.