Skip to content
ParaShape

Objects

ModelJson.objects. method decides the body: createObject → steps, createBlock → objects. Neither carries a placement arg — placement (pivot/translation/rotation/scale/copies) is properties, the same as paint and identity, for every object alike (see Instance).

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";
import type { BehaviorNode } from "./BehaviorNode.js";
import type { ObjectMethod } from "./ObjectMethod.js";
import type { PropertyNode } from "./PropertyNode.js";
import type { StepNode } from "./StepNode.js";

/**
 * ONE node type per lane: `{key, method, args?}` plus `steps` (`Object` =
 * `createObject`, a data chain) or `objects` (`Block` = `createBlock`, a
 * nest, recursive) — `method` alone decides which body is legal; a node
 * naming neither, or the wrong body for its method, fails validate by name.
 */
export type ObjectNode = { 
/**
 * identity — unique in the document's one key namespace, every lane,
 * nested children included.
 */
key: string, 
/**
 * intent — editor-chrome display text, printed verbatim; absent falls
 * back to `key`.
 */
label?: string, 
/**
 * intent — `createObject` (body `steps`) or `createBlock` (body `objects`).
 */
method: ObjectMethod, 
/**
 * intent — every object's args stay empty: `createBlock` and
 * `createObject` alike take no args of their own. Placement
 * (`pivot`/`translation`/`rotation`/`scale`/`copies`) is INSTANCE and
 * lives in `properties` below, same as every other object.
 */
args?: Array<Argument>, 
/**
 * intent — placement (`pivot`/`translation`/`rotation`/`scale`/
 * `copies`) plus paint and identity (`name`/`material`/`layer`/
 * `visible`/`attributes`) on this object itself.
 */
properties?: Array<PropertyNode>, 
/**
 * intent — a verb the engine performs on this object's siblings once
 * the parent set evaluates (AGENTS.md "Behaviors"); each method at
 * most once.
 */
behaviors?: Array<BehaviorNode>, 
/**
 * intent — the data chain, legal only on `method: createObject`.
 */
steps?: Array<StepNode>, 
/**
 * intent — the nested children, legal only on `method: createBlock`.
 */
objects?: Array<ObjectNode>, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * The two structural object methods, a closed enum — `Object` admits only
 * `steps` (a data chain), `Block` admits only `objects` (a nest). A record
 * producer (`dimensionLinear`/`hatch`/`sectionPlane`/…) is no longer a
 * third object-tier shape: it is an ordinary `steps[]` producer step.
 */
export type ObjectMethod = "createObject" | "createBlock";
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";

/**
 * One step of a data-streaming chain — no key (nothing references a step;
 * a reference names an object) and no `enabled` (every arg is already an
 * expression).
 */
export type StepNode = { 
/**
 * intent — editor-chrome display text for this step, printed verbatim;
 * absent falls back to the registry's friendly name for `method`.
 */
label?: string, 
/**
 * intent — the catalog method this step invokes.
 */
method: string, 
/**
 * intent — the method's arguments.
 */
args?: Array<Argument>, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Argument } from "./Argument.js";

/**
 * One entry of a `properties` list — `{ method, args? }`, OPEN at the shape
 * tier: which methods are legal in which home is a registry check
 * (`crate::validate::registry`), never a schema enum.
 */
export type PropertyNode = { 
/**
 * intent — the registry-checked property method.
 */
method: string, 
/**
 * intent — the method's arguments.
 */
args?: Array<Argument>, };
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * One value + its domain — the shape of every arg (a parameter's value, a
 * step arg, a properties arg). `min`/`max` are numeric-only; `options`, when
 * present, is the arg's whole domain.
 */
export type Argument = { 
/**
 * identity — the arg's name, unique among its owning node's `args`.
 */
key: string, 
/**
 * geometry — an expression string; may be empty (an unselected file
 * parameter authors nothing, so this arg's min/max/options do not apply).
 */
input: string, 
/**
 * intent — expression → number, inclusive lower bound.
 */
min?: string, 
/**
 * intent — expression → number, inclusive upper bound.
 */
max?: string, 
/**
 * intent — expression → non-empty array, the arg's whole domain.
 */
options?: string, };

Catalog methods

Every engine_catalog node whose context names "objects" — the two heads only (createObject/createBlock). A createObject's own steps run under a data-kind context instead (curve/mesh/pointCloud/block), and properties/behaviors under their own context tags — both are catalog data too, grouped by nodeType on Nodes rather than duplicated here.

2 catalog method(s) whose context names "objects".

createBlock

Create Block · step · returns blockData[] · context: objects

Default key: block.

A nest of objects.

No args.

createObject

Create Object · step · returns objectData[] · context: objects

Default key: object.

An ordinary objects[] entry, its own data chain folded from empty.

No args.

📖 1 min read