Expand description
Map kernel feature schemas to the shared FormField representation.
Feature definitions come from brep_kernel::feature_schema_catalogue.
Parameters map to scalar, text, vector, choice, boolean, and reference fields;
a boolean operation expands into operation, tool-selection, and merge fields.
Transform start references are not surfaced here.
Functions§
- feature_
catalogue - The kernel-owned feature-schema catalogue (
{ version, features: [...] }). A clone of the process-wide cache: callers that only READ it (the palette, the workbench toolbar, the context bar) pay one clone per call instead of the whole construction. - feature_
default_ params - A feature type’s DEFAULT
inputParams, built from its schema: one entry perinputParamsSchemaparam seeded with that param’sdefault_value(missing →null). The caller assigns the uniqueidafterwards (the schema’siddefault isnull). Additive, engine-owned, and reusable by any “add feature” path so a new feature’s params always track the kernel schema. Unknown types yield an empty object. - feature_
form_ fields - Map a feature type’s
inputParamsSchemainto the general form fields, in schema (insertion) order — the kernel builds schemas with serde_json’spreserve_order, so grouped fields stay contiguous for the group headers. - feature_
hidden_ params - The param keys this feature’s dialog should HIDE for the given CURRENT
values— the kernel’s field-visibility hook (brep_kernel::feature_hidden_params), returned as a set so the form engine can skip a field in O(1). Empty when the feature declares no hook, so every field stays visible. The form engine recomputes this each frame from the live params, which is what makes fields appear and disappear as their governing field changes. - feature_
icon - The icon character for a feature type, if one exists. Every kernel
feature type has a FreeCAD-inspired monoline glyph in the font’s Private-Use
block U+E030-E059 (edited as
BREP_app/assets/glyphs/*.svg, which are also the source of the inline SVG icon catalog — seeBREP_app/src/icons.rs;every_feature_type_has_catalogued_artworkthere checks each of these codepoints actually HAS a glyph, which this module’s own test cannot). The font is installed as family"brep_icons"at the HEAD of egui’s fallback chain (crate-sidefonts.rs), so a bare returnedcharrenders as the icon. - feature_
long_ name - Human display name for a feature type: the schema
longName(else the type itself), with the feature’s icon character PREPENDED. Every consumer that shows a feature name (add-feature palette, history tree, context-bar offers, dialogs) reads it through here, so the icon appears everywhere with no per-caller wiring — seefeature_icon. - feature_
plain_ name - The same display name WITHOUT the leading glyph — the schema
longName, else the type itself. - feature_
schema - One feature’s full schema entry, by its
type/shortName(e.g."P.CU","B").Noneif the type is not in the catalogue. - feature_
short_ name - A feature type’s SHORT name (
shortName, e.g.P.CU,S,E), else the type code itself. This is the BASE for a new feature’s id: the engine appends the part history’s persistent global counter to it (P.CU→P.CU7,S→S8) incrate::history::History::next_feature_id. - form_
fields_ from_ schema - Map ANY schema entry carrying an
inputParamsSchemaobject into form fields — the shared engine behindfeature_form_fieldsAND the assembly constraint dialogs (whose schemas come from the kernel’sconstraint_schema_catalogue, same shape, different catalogue). One mapping, two catalogues (the schema-driven-dialog principle).