Table of Contents

Polar Resolution 2D Panel

The model is PolarResolution2d: a linear step in millimetres plus an angular step, carried in radians and edited in degrees, that together tessellate a revolved shape into an STL mesh. It is edited on a tool holder and nowhere else, through the Cylindroid holder's Resolution section.

Layout

  • Holder Resolution Section
    • Resolution Hint Caption — names the STL tessellation used for display and collision meshing
    • Linear Resolution (mm) Input Field
    • Angle Resolution (deg) Input Field

There is no enable checkbox and no null state: both fields are always editable, and each commits on blur or Enter, and only when both values are greater than zero.

Feature

An edit republishes a whole new carrier instead of mutating the current one. A holder's PolarResolution2d setter swaps the holder's solid for one born with the new value and disposes the old one, and skips a value-equal reassignment; the same swap happens server-side inside SetPolarResolution, which then clears the holder's cache.

A null host model means the resolution applied the default value: PolarResolution2d is a snapshot of the solid's identity, and a null carrier lets a parametric geometry apply its own default. Nothing on this surface can produce that state. The service reports a null resolution as 0 mm / 0 deg, the two fields display those zeros, and the commit guard then blocks any write until real numbers are typed.

Source Code Path

See HiNC App Anatomy for git repository links.

HiNC-2025-webservice (Quasar CLI SPA): no standalone widget. The resolution is edited on the Cylindroid holder's Resolution section, at the Control-Tree id toolhouse/tool-{id}/holder/resolution and the route /tool-house/:toolId/holder/resolution. A Freeform holder grows no sections here; its Holder panel shows a hint saying the geometry is edited elsewhere.

  • wwwroot-src/src/components/controlTree/toolhouse/HolderSectionPanel.vue — the section === 'resolution' branch: the two number fields, seeded from Get and committed on blur / Enter.
  • wwwroot-src/src/components/controlTree/toolHouseItemTypes.ts — registers that panel as the HolderSection item type and grows the Resolution node only for a CylindroidHolder.
  • wwwroot-src/src/components/controlTree/toolhouse/ToolHolderPanel.vue — the Holder stem above it, whose holder-type selector decides which sections appear.
  • wwwroot-src/src/api/cylindroidHolder.tsPolarResolutionDto (linear_mm / angle_deg) and setCylindroidHolderResolution.
  • wwwroot-src/src/router/treeRoutes.ts — maps the holder's section ids onto the Tool House route params.
  • wwwroot-src/src/i18n/en/toolhouse.ts — the two field labels and the tessellation hint caption.
  • Mech/CylindroidHolderController.csPOST /api/CylindroidHolder/SetPolarResolution, which rejects a non-positive value, assigns a fresh PolarResolution2d and calls ClearCache(); GET Get reports a null resolution as 0 / 0.

See Also