Cylindroid Editor
The Cylindroid editor edits a Cylindroid — a solid of revolution defined by a list of
(Z, R) pairs — as a table of rows, with a minimum of two. It is reached from any Geometry slot that
admits the Cylindroid kind, and again from the Tool House cylindroid holder, whose Geometry node
embeds the same editor directly.
Layout
- Z-R pairs — a header row carrying the section label and an Add button. Add appends a row ten millimetres above the last one, at the same radius.
- The table — one row per pair, columns
#,Z (mm)andR (mm). Each Z and R cell is an inline text field parsed as a number; there is no spinner. A per-row remove button sits at the end of each row, disabled once only two pairs remain. - The caption — a one-line statement of the type: a solid of revolution defined by (Z, R) pairs, minimum two.
Behavior
- A cell commits on blur or Enter. An empty or non-finite entry is dropped rather than written, and a negative radius is clamped to zero — on the client and again on the server.
- The floor is two pairs, and both ends enforce it. The remove button is disabled at two and the controller refuses the call below two.
- Creating one seeds three pairs. The create endpoint starts a new cylindroid at (0, 20), (30, 20) and (60, 10) rather than empty.
- Four endpoints ship without a caller. The controller exposes
GetPairCount,GetPairAt,UpdatePairAtandSortByZ; the shipped SPA uses none of them, committing the whole list instead.
Tessellation Resolution Is Not a Property of the Shape
There is no longitude count, and no per-instance resolution, on a cylindroid. The STL longitude number is derived internally at generation time from a resolution the caller supplies; the type carries only a static default.
Where resolution is exposed, it belongs to the holder rather than to the shape: the Tool House cylindroid holder carries a Resolution tree node beside its Geometry one, offering a linear resolution in millimetres and an angle resolution in degrees, described in the app as the tessellation resolution used for display and collision meshing.
Source Code Path
See HiNC App Anatomy for git repository links.
HiNC-2025-webservice (Quasar CLI SPA):
wwwroot-src/src/components/geom/CylindroidEditor.vue— the editor: the header row and Add button, the Z / R table with its per-cell commit, and the per-row remove and its two-pair floor. Edits by IndexService key and emitschangedso the owner can resync.wwwroot-src/src/components/geom/geometryEditors.ts— maps theCylindroidkind to this editor.wwwroot-src/src/components/geom/GeometryEditor.vue— the kind picker that creates a Cylindroid and embeds this editor beneath itself.wwwroot-src/src/components/controlTree/itemTypes.ts— registersCylindroidagainst the sole-editor panel and lists it among the kinds a container may hold.wwwroot-src/src/components/controlTree/SoleEditorPanel.vue— the kind node's panel.wwwroot-src/src/components/controlTree/toolhouse/HolderSectionPanel.vue— the second host: it embeds this editor on the holder's cylindroid key for the Geometry node, and renders the linear and angle resolution fields for the sibling Resolution node.wwwroot-src/src/components/controlTree/toolHouseItemTypes.ts— grows those two holder children, and only for a cylindroid holder.wwwroot-src/src/api/geometry.ts—getCylindroid,updateCylindroidPairs,addCylindroidPair,removeCylindroidPairAtand the create entry.wwwroot-src/src/api/cylindroidHolder.ts— the holder side: the cylindroid key it exposes, the geometry update, and the resolution setter.wwwroot-src/src/i18n/en/geom.ts— thecylindroid.*strings, andwwwroot-src/src/i18n/en/toolhouse.ts— the Resolution node's own labels and hint.Geom/CylindroidController.cs— REST endpoints at/api/Cylindroid/*:New,Get,GetPairCount,GetPairAt,UpdatePairAt,UpdateAllPairs,AddPair,RemovePairAtandSortByZ.Mech/CylindroidHolderController.cs— the holder surface at/api/CylindroidHolder/*behind the Tool House host.Common/IndexService.cs— the keyed object store every cylindroid key resolves against.
See Also
- Geometry Editor — the switchboard that offers this kind and hosts this editor
- Cylindroid Holder Panel — the second host, and the surface that owns the tessellation resolution