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— thesection === 'resolution'branch: the two number fields, seeded fromGetand committed on blur / Enter.wwwroot-src/src/components/controlTree/toolHouseItemTypes.ts— registers that panel as theHolderSectionitem type and grows the Resolution node only for aCylindroidHolder.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.ts—PolarResolutionDto(linear_mm/angle_deg) andsetCylindroidHolderResolution.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.cs—POST /api/CylindroidHolder/SetPolarResolution, which rejects a non-positive value, assigns a freshPolarResolution2dand callsClearCache();GET Getreports a null resolution as 0 / 0.
See Also
- Cylindroid Holder Panel — the holder editor that embeds this panel to tessellate its profile
- Freeform Holder Panel — the other holder editor that embeds it