ParaShape

Types

The node graph's own type names (33) and the data each one is. A flat set — these are the graph's type identifiers, not TypeScript classes.
namedata typedescription
curveEntity{ id: string, geometry: NurbsCurveJSON, visible?: boolean, layer?: string, material?: string, label?: string, sourceKey?: string }1D wire — line / arc / bezier / nurbs curve. NO type tag — kind is sniffed from the geometry shape (curve geometry = NurbsCurveJSON, has controlPoints).
faceEntity{ id: string, geometry: { loops: [x,y,z][][], uvMatrix?: number[16] }, visible?: boolean, layer?: string, material?: string, label?: string, sourceKey?: string }Flat bounded region; a solid is faceEntity[]. NO type tag — kind is sniffed from the geometry shape (face geometry has loops). loops = 3D world polygons, outer loop first then holes; uvMatrix = row-major 4×4 plane→world frame for UV / 2D projection.
pointEntity{ id: string, geometry: [x,y,z], visible?: boolean, layer?: string, material?: string, label?: string, sourceKey?: string }Point marker — render-only, from the pointEntity generator. NO type tag — kind is sniffed from the geometry shape (point geometry = [x,y,z]).
groupEntity{ id: string, definition: string, transformation: number[16], material?: string, layer?: string, name?: string, visible?: boolean }ONE placement of a GroupDefinition (SketchUp component model). `definition` = id of the shared content `{ id: string, entities: EntityJSON[] }` in the model's runtime definitions map — child entities stored ONCE, the definition itself is NOT a scene entity. `transformation` = column-major 4×4 (translation at indices 12,13,14). A node's value is groupEntity[]: N placements, 1 shared definition. Kind = has `definition` (no `geometry`).
entity(curveEntity|faceEntity|pointEntity|groupEntity)[]Generic ops over any scene entity (move/rotate/array/mirror…). An entity has NO type tag — kind is discriminated by its geometry shape (a groupEntity by its `definition` field).
materialMaterialJSONMaterial definition
layerLayerJSONLayer definition
numbernumberUnitless number
lengthnumber (mm)Distance (mm)
anglenumber (deg)Degrees
binary0 | 10 or 1 — multiply with a dimension to collapse it
stringstringText (single-quoted literal)
color#rrggbb#rrggbb hex string
vector[x,y,z]Direction [x, y, z] or [x, y] (z defaults to 0)
point[x,y,z]Position [x, y, z] or [x, y] (z defaults to 0)
plane{point:[x,y,z],normal:[nx,ny,nz]}Infinite plane: a point on the plane + unit normal. Build via Plane.fromPointNormal.
axis{origin:[x,y,z],direction:[dx,dy,dz]}Directed half-line: origin + unit direction (magnitude dropped). Build via Axis.fromPointDirection / Axis.fromTwoPoints.
curveNurbsCurveJSON { degree, knots, controlPoints, weights }Curve geometry value (NURBS) — the geometry of a curveEntity. Use with Curve.* functions; a curveEntity arg unwraps to this.
face{ loops: [x,y,z][][], uvMatrix?: number[16] }Face geometry value — the geometry of a faceEntity. Use with Face.* functions; a faceEntity arg unwraps to this.
surfaceNurbsSurfaceJSON { degreeU, degreeV, knotsU, knotsV, controlPoints, weights }NURBS surface value (computation only — not a scene entity). Use with Surface.* functions; a curved generator tessellates one to faceEntity[].
function(args) => valueLambda expression
modelstring (model ref)Model reference
objectobjectParameter group
groupobjectVisual group
areanumberArea unit
volumenumberVolume unit
massnumberMass unit
currencynumberCurrency
fontFontDataOpentype-parsed font object (fetch + parse happens async in Phase 1 via store.loadFonts). Returned by loadFont parameter; consumed synchronously by text generator's font arg.
imagestringImage reference — URL or data URI, returned by loadImage parameter, consumed by material texture args.
urlstring (uri)Asset URI — bare-id, https://, or data: URI. Used as the input field value for loadModel / loadFont / loadImage parameters.
fnFunctionCallback function: (entity, index) => value. Accepted alongside a static value for per-entity variation.
keyValue{key:string,value:unknown}Key-value override pair. Used by a node's dynamic args (DynamicArgDef) to target one specific parameter inside a referenced value by name — e.g. loadModel's replace* args drive a promoted parameter of the loaded sub-model.