@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.