Skip to content
Shapemetry

@huukhanhnguyen/types / evaluate/sheets

evaluate/sheets

Page

Page = { height: number; objects: SceneObject[]; title: string; width: number; }

One composed sheet: content inside the page that BOUNDS it.

A sheet is an OBJECT whose space is finite, so this is an object's content plus the bound, and nothing else.

Model.evaluateSheet returns it inside the shared envelope — Resolved<Page> (frame.ts).

The bound is a SIZE, not a box, and that is the one place a sheet differs from a view: a view's crop floats in the view plane (both corners carry information, so it is a BoundingBox2d), while the paper's corner IS the origin — every composed document lands in [0,width] × [0,height]. Storing minX/minY for paper would be storing two constant zeros.

height

height: number

objects

objects: SceneObject[]

Paper objects — the same SceneObject union the scene uses. A viewObject placement is a ViewObject; template furniture and ad-hoc drawing are the geometry kinds. No second envelope.

title

title: string

The evaluated title-block name, e.g. "GROUND FLOOR PLAN" — CONTENT printed on the paper (title-vs-label law), which is why it rides the VALUE and not the envelope's editor-chrome label. Sheet.title is an expression (titleValue law); this is what it evaluated to. "" when the sheet declares none.

width

width: number

The bound — paper millimetres.

Last updated: 📖 1 min readEdit on GitHub