ParaShape

ParaShape Docs

Three ways to use ParaShape — pick yours:

1 · Build a model in the browser

Open the app, pick a model from the catalog, drag the parameter sliders — the 3D view updates live. Save gives it a shareable URL; Share gives you an iframe embed.

Getting started · Embed

2 · Write a model as JSON

A model is one JSON document. This is a complete parametric box — paste it into the builder (or hand it to AI with llms.txt as the grammar):

{
  "title": "Box",
  "parameters": [
    { "key": "width", "method": "length", "args": [{ "key": "length", "input": "200" }] }
  ],
  "operations": [
    { "key": "profile", "operations": [
      { "method": "rectangle", "args": [{ "key": "point1", "input": "[0,0,0]" }, { "key": "point2", "input": "[width,150,0]" }] }
    ] },
    { "key": "box", "operations": [
      { "method": "extrude", "args": [{ "key": "profile", "input": "profile" }, { "key": "thickness", "input": "100" }] }
    ] }
  ]
}

Args are expressions: "width" references the parameter, "width / 2 - 9" computes, Curve.length(profile) calls a function. Every top-level node is a container ({ key, operations: [...] }) holding one creation step plus any following transforms — that's the node unit you see as one card in the builder panel.

Nodes (every operation + args) · Expression · Schema

3 · Build your own product on the engine

The engine is a library — ParaShape is just one product on it. Evaluate the same JSON in your own app:

import { createRegistry, Model } from "@parashape/parametric"
import { nodeRegistry } from "@parashape/parametric/nodes"

const registry = createRegistry(nodeRegistry)   // or your own node registry
const model = Model.fromJSON(json, { registry })
const scene = model.toScene()                  // → render with Three.js / SketchUp / anything

Swap nodeRegistry for your own to ship a different node set entirely (a teaching app, a furniture configurator…). Standalone geometry functions are importable without any of this: import { curve } from "@parashape/parametric/compute".

→ Full developer docs: /devNode registry (create your own nodes — full types) · Architecture (the layers) · Compute (all standalone functions) · Store · Scene

Reference map

You needDocs
Every node + its argsNodes
Expression language + functionsExpression · Math · Functions
The JSON format + typesSchema · Types · Entities
Engine runtime APIStore · Scene · engine classes (/dev sidebar)
Standalone geometry functionsCompute
AI grammar (for LLMs)llms.txt