Model
Guide
What it is: the RUNTIME parametric kernel - load ModelJSON, build a node graph, evaluate(), emit scene vocabulary for hosts.
Headless and deterministic. Depends on geometry and io.
Pipeline
ModelJSON → Model.fromJSON({ registry }) → model.evaluate(params?)
→ EvaluateResult { geometry, materials, params, … }
→ scene Entity / Material (hosts + @huukhanhnguyen/io)Document shapes
type ModelJSON = {
title: string
parameters?: (Operation | Container)[] // header value bindings
objects?: Container[] // scene body folds (Entities steps); key required at the root
materials?: (Operation | Container)[]
layers?: (Operation | Container)[]
views?: …; lights?: …; cameras?: …; …
}
// No nodeType field - discriminate by method vs operations[]
// Entity chains (objects[], component bodies/openings, sheets) use Entities;
// the config lanes use Operation, which adds children? + animation?.
type Entities = { method: string; args?: { key: string; input: string }[]; key?: string; … }
type Operation = Entities & { children?: (Operation | Container)[]; animation?: … }
type Container = { operations: (Entities | Container)[]; key?: string; … }Args are expression strings evaluated at runtime. Producers concat into the stream; transforms map/reduce; containers nest folds.
Entry points
| Specifier | Role |
|---|---|
@huukhanhnguyen/model | Full runtime |
@huukhanhnguyen/model/compute | Compute-only import graph |
@huukhanhnguyen/model/nodes | Default method registry |
import { Model } from '@huukhanhnguyen/model'
import { nodeRegistry } from '@huukhanhnguyen/model/nodes'
const model = Model.fromJSON(json, { registry: nodeRegistry })
const result = model.evaluate()Method tables (AUTOGEN): REFERENCE.md, ENTITIES.md.
Nodes
Every authorable method, with its args, types, defaults and meanings. Generated from the live NODE_REGISTRY.
- AngularDimension
- Curve
- Entity
- Face
- Image
- Leader
- LinearDimension
- Mesh
- RadialDimension
- Section
- Text
- Transforms
- Parameters
- Animations
- AnnotationStyles
- Cameras
- Layers
- Materials
- Skeletons
- Styles
- Tables
- TextStyles
- Textures
- Views
Expression
Every function callable inside an expression, generated from the live FUNCTION_REGISTRY.
- Axis
- Bounds
- Color
- Face
- Format
- Material
- Noise
- NurbsCurve
- Plane
- Point
- PointCloud
- Quaternion
- Random
- Scene
- Solid
- Stat
- Surface
- Table
- Transformation
- Vector
API reference
One page per source module, grouped by source directory. Each page's intro names the entry points it is reachable from (., ./compute, ./nodes); the registry surface is on Nodes.
src/
- Other - 101 symbols
src/commandRegistry/
- Lane edit - 15 symbols
src/conventions/
- Conventions - 1 symbols
- Drawing - 1 symbols
- Lighting - 2 symbols
- Material - 1 symbols
- Standard - 2 symbols
- Texture - 1 symbols
src/core/
- BaseCollection - 4 symbols
- BaseObject - 1 symbols
- Edit history - 5 symbols
- Evaluate - 3 symbols
- Evaluation snapshot - 5 symbols
- Graph snapshot - 9 symbols
- Identity - 2 symbols
- Inspect - 5 symbols
- Lane fields - 5 symbols
- ModelScope - 2 symbols
- Model serialize - 1 symbols
- Model update - 1 symbols
- Notifier - 1 symbols
- Ref - 5 symbols
- Render diff - 7 symbols
- Root fold - 12 symbols
- Seed - 1 symbols
- Share - 7 symbols
- Type registry - 2 symbols
- Unit - 2 symbols
- UnitSymbols - 1 symbols
src/document/
- Entities - 22 symbols
- Environment - 1 symbols
- Light - 1 symbols
src/export/
src/functionRegistry/
src/graph/
- Spaces - 6 symbols
src/import/
src/lanes/
- Animation - 6 symbols
- Annotation styles - 4 symbols
- Components - 8 symbols
- CSV - 1 symbols
- Formula - 1 symbols
- Layers - 11 symbols
- Materials - 9 symbols
- Noise - 3 symbols
- Ops - 1 symbols
- Params - 1 symbols
- Raster - 1 symbols
- Sheets - 19 symbols
- Styles - 10 symbols
- Tables - 11 symbols
- Text styles - 4 symbols
- Texture resolve - 3 symbols
- View chain - 27 symbols
- Views - 19 symbols
src/nodeMethods/
- Annotation - 16 symbols
- Block - 2 symbols
- Bounds value - 3 symbols
- Brep face - 23 symbols
- Curve - 2 symbols
- Displace - 1 symbols
- Entity - 28 symbols
- Face value - 4 symbols
- Format value - 5 symbols
- Generate - 2 symbols
- Import faces - 1 symbols
- Modify - 13 symbols
- Parameter - 15 symbols
- Planarize - 1 symbols
- Point - 1 symbols
- Point cloud value - 8 symbols
- Random value - 4 symbols
- Render - 1 symbols
- Section - 5 symbols
- Skeleton - 6 symbols
- Solid value - 3 symbols
- Straight skeleton - 1 symbols
- Subdivide - 2 symbols
- Surface - 7 symbols
- Surface divide - 1 symbols
- Surface value - 3 symbols
- Table namespace - 1 symbols
- To curve - 10 symbols
- To shell - 2 symbols
- Unfold - 1 symbols
- Utils - 2 symbols
src/nodes/
- ArgumentNode - 1 symbols
- BaseNode - 4 symbols
- ContainerNode - 2 symbols
- EntitiesNode - 1 symbols
- ExpressionNode - 1 symbols
- KeyedNode - 4 symbols
- NodeCollection - 1 symbols
- ObjectNode - 2 symbols
- OptionNode - 1 symbols
- ParameterNode - 2 symbols
src/registry/
src/schema/
- Analyze - 7 symbols
- Builtin params - 9 symbols
- Cameras - 9 symbols
- Command registry - 1 symbols
- Constants - 14 symbols
- Core - 2 symbols
- Deform - 6 symbols
- Export - 1 symbols
- Expression - 21 symbols
- Face - 21 symbols
- Font - 2 symbols
- Function registry - 2 symbols
- Graph extras - 2 symbols
- Hatch - 1 symbols
- Import - 2 symbols
- Kernel - 1 symbols
- Lane methods - 4 symbols
- Lanes - 12 symbols
- Mesh - 14 symbols
- Model - 45 symbols
- Model runtime - 5 symbols
- Nesting - 1 symbols
- Node args - 4 symbols
- Nodes - 14 symbols
- Nodes registry - 3 symbols
- Preview - 2 symbols
- References - 5 symbols
- Registry - 17 symbols
- Render views - 2 symbols
- Store - 2 symbols
- Textures - 4 symbols
- Types - 6 symbols
- Validate - 5 symbols
- Voronoi - 1 symbols
src/utils/
- Unit convert - 4 symbols
src/validate/
- Assets - 9 symbols
- Diagnose - 2 symbols
- Expressions - 2 symbols
- Parse - 4 symbols
- Skin - 1 symbols