Table of Contents

Fixture

The fixture is what holds the workpiece on the machine table: one geometry, and the two anchor transformers that place that geometry against the workpiece and against the table. It has two surfaces:

  • the equipment/fixture branch of the General Setup page's Control Tree (/general-setup?tree=equipment/fixture), an equipment child of the General Setup group between Coolant and Workpiece. /fixture and anything below it redirects there.

It edits the one fixture the project owns.

There is no fixture-only canvas: the branch shares the General Setup canvas, whose displayee is the equipment-setup displayee (Disp/EquipmentSetupDisplayee.cs) — the merged fixture + workpiece scene with the anchor, buckle and controller-coordinate overlays. Its option set is the equipment-setup config (Disp/EquipmentSetupDisplayeeConfig.cs), carried on UserService.UserConfig as its EquipmentSetupDisplayeeConfig property.

Layout

Control Tree Branch

The root panel is rendered inline by the dock's primary editor pane, so it has no title label of its own — the wrapping expansion header carries the selection breadcrumb. Every item below is a tree node whose editor is swapped into that same PRIMARY row.

  • Fixture Root Panel — equipment/fixture, item type FixtureRoot
    • Object Management Menu Button — file extension .Fixture, load type Hi.NcMech.Fixtures.Fixture, HiMech, rel file Fixture.xml, based at the project directory. Load / Save As / Copy / Paste / XML.
    • Geometry Type Badge — the attached geometry's kind name, none when the slot is empty.
    • Intro caption, and an empty-state caption while no fixture key is minted.
  • equipment/fixture/geometry — “Geometry”, a Geometry slot backing Geom. The slot's own panel is the kind picker (Geometry Management Control, selector only); the picked kind's editor is the slot's child item. Kinds offered: Box3d, Cylindroid, StlFile, TransformationGeom, GeomCombination, plus None. The geometry must satisfy IStlSource, so the runtime-only voxel CubeTreeFile is not among them.
  • equipment/fixture/anchor — “Anchor”, a Group stem whose info text states how the fixture is placed. Two Transformer slots hang from it, each a kind picker (Transformer Manage Panel) over the picked kind's child editor:
    • equipment/fixture/geom-to-workpiece — “Geom To Workpiece”, GeomToWorkpieceTransformer, which places the workpiece buckle — where the workpiece attaches — relative to the fixture geometry (see Workpiece).
    • equipment/fixture/geom-to-table — “Geom To Table”, GeomToTableTransformer, which pins the fixture geometry onto the machine table buckle.
    • Kinds offered on both: StaticTranslation, StaticRotation, StaticFreeform, DynamicTranslation, DynamicRotation, GeneralTransform, NoTransform.
  • Shared slave view: the General Setup equipment canvas in the page's MAIN column, shared with Machine Tool, Workpiece and Controller (see General Setup Page). Its Display Options dropdown carries this branch's share of the scene — the Fixture Solid / Edge / Hide radio group, and the Fixture Geom Anchor, Workpiece Buckle and Table Buckle flags in the Anchors group.

Behavior

  • ClearGeomCache() runs after any change at or below the branch: each node's afterChange chain ends in the controller's ClearGeometryCache, which calls it.
  • The two anchor slots re-commit their swap-in before clearing the cache: an inner-value edit re-posts UpdateGeomToWorkpieceTransformer / UpdateGeomToTableTransformer, so the object the switchboard produced is always the one installed on the owning field when the redraw happens.
  • Load / Paste / XML-Apply only swap the IndexService entry. The tree root then installs the result onto the project through UpdateFixture — the equipment setter re-attaches the buckles itself — re-runs Initialize to re-mint the branch's keys, and clears the geometry cache. The button's XML dialog re-emits its object-loaded event on Apply, so that install and refresh chain runs exactly once.
  • Kind pickers are parent-aware. Picking a geometry kind calls CreateGeometry, which installs the new object on Geom server-side and maps the literal None to null; picking a transformer kind creates the object and then rebinds the owning field.
  • The shared canvas snaps to the isometric view once, when its displayee is bound — the display controller's initialize does it server-side. Afterwards a geometry set only clears the cache, and the operator re-frames from the RenderingCanvas Tool Bar's view picker.
  • Both canvases draw the live model, so an edit shows on the next frame with no further calls.

Source Code Path

See HiNC App Anatomy for git repository links.

Web Application

HiNC-2025-webservice (Quasar CLI SPA):

  • wwwroot-src/src/components/controlTree/useControlTreeHost.ts — builds the equipment/fixture root (item type FixtureRoot, keyed on the IndexService fixture key) with its geometry slot and the anchor Group holding geom-to-workpiece and geom-to-table; owns the clear-cache and transformer-rebind afterChange chains, the create hooks and the Object Management install handlers.
  • wwwroot-src/src/components/controlTree/PrimarySlavePanel.vue — renders the root editor inline: the Object Management button, the geometry-type badge and the intro / empty-state captions.
  • wwwroot-src/src/components/controlTree/itemTypes.ts — the ItemType registry that binds the branch's Geometry and Transformer slots and every concrete kind to their panels, and grows the sub-tree from the indexed object's type.
  • wwwroot-src/src/components/controlTree/GeometrySlotPanel.vue — the Geometry node's kind picker.
  • wwwroot-src/src/components/controlTree/TransformerSlotPanel.vue — the Geom To Workpiece and Geom To Table nodes' kind picker.
  • wwwroot-src/src/components/controlTree/SoleEditorPanel.vue — hosts the concrete kind's own editor once a geometry or transformer kind is chosen.
  • wwwroot-src/src/components/controlTree/ControlTreeDock.vue — the left dock: the Control Tree row over the PRIMARY editor row, with a draggable height divider.
  • wwwroot-src/src/pages/GeneralSetupPage.vue — the three-column host page (dock / content column / canvas) that provides the equipment-scope control-tree host.
  • wwwroot-src/src/components/mech/EquipmentSetupPanel.vue — the shared canvas column: the RenderingCanvasToolBar, the Display Options dropdown and the RenderingCanvas.
  • wwwroot-src/src/components/widgets/ObjectManagementMenuButton.vue — the reused object-management dropdown, keyed entirely on its modelKey (see Object Management Menu Button).
  • wwwroot-src/src/components/geom/GeometryEditor.vue — the generic geometry kind switchboard reached from the Geometry slot panel, including its None (unset) entry.
  • wwwroot-src/src/components/topo/TransformerSelectPanel.vue — the generic transformer kind switchboard reached from the Transformer slot panels.
  • wwwroot-src/src/api/fixture.ts — typed client for /api/Fixture/*: Initialize, UpdateFixture, the three Get…Type reads, UpdateGeometry, the two Update…Transformer rebinds, CreateGeometry and ClearGeometryCache.
  • wwwroot-src/src/api/equipmentSetup.ts — typed client for the shared canvas: binds the equipment-setup displayee onto the connection's engine and drives its display options.
  • wwwroot-src/src/router/routes.ts — declares general-setup and the fixture/:rest(.*)* redirect onto ?tree=equipment/fixture.
  • Mech/FixtureController.cs — REST surface at /api/Fixture: Initialize, UpdateFixture, GetGeometryType, GetGeomToWorkpieceType, GetGeomToTableType, UpdateGeometry, UpdateGeomToWorkpieceTransformer, UpdateGeomToTableTransformer, CreateGeometry, IndexCurrentGeometry and ClearGeometryCache.
  • Mech/EquipmentSetupDisplayController.cs/api/mech/equipment-setup-display: binds and configures the displayee per rendering connection and serves its whole option set — the three rendering-mode endpoints (fixture, raw-geom, ideal-geom), show-machine, show-tool, show-dimension-bar, show-fixture-geom-anchor, show-workpiece-buckle, show-table-buckle, show-workpiece-geom-anchor, show-program-zero-anchor, show-meshed-geom, show-controller-coordinate and controller-coordinate-id.
  • Disp/EquipmentSetupDisplayee.cs — the displayee the General Setup canvas renders: the merged fixture + workpiece scene with the anchor, buckle and controller-coordinate overlays.

HiAPI Engine

  • HiMech/NcMech/Fixtures/Fixture.cs — the key model: the geometry, the table and workpiece buckles, the geom anchor, the two anchor transformers and ClearGeomCache.

See Also