Skip to content
Shapemetry

@huukhanhnguyen/model / conventions/drawing

conventions/drawing

DrawingStandard

DrawingStandard = { frame: { bindingMargin: number; margin: number; zoneCols: number; zoneRows: number; zones: boolean; }; lineWeights: { border: number; center: number; dimension: number; hidden: number; titleBlock: number; visible: number; }; minContentFill: number; textSizes: { dimension: number; field: number; title: number; viewLabel: number; }; titleBlock: { fields: TitleBlockField[]; height: number; width: number; }; }

frame

frame: { bindingMargin: number; margin: number; zoneCols: number; zoneRows: number; zones: boolean; }

Frame + optional zone grid (ISO 5457). Binding edge (left) is wider.

bindingMargin

bindingMargin: number

margin

margin: number

zoneCols

zoneCols: number

zoneRows

zoneRows: number

zones

zones: boolean

lineWeights

lineWeights: { border: number; center: number; dimension: number; hidden: number; titleBlock: number; visible: number; }

Line weights in mm (ISO 128).

border

border: number

center

center: number

dimension

dimension: number

hidden

hidden: number

titleBlock

titleBlock: number

visible

visible: number

minContentFill

minContentFill: number

The composed content (views + tables) should occupy at LEAST this fraction of the usable area — the check that catches "a tiny table in a corner of a blank A3". Enforced by the snapshot judge +, once composition consumes this data, a facts check.

textSizes

textSizes: { dimension: number; field: number; title: number; viewLabel: number; }

Text heights in mm (ISO 3098).

dimension

dimension: number

field

field: number

title

title: number

viewLabel

viewLabel: number

titleBlock

titleBlock: { fields: TitleBlockField[]; height: number; width: number; }

Title block, bottom-right. ISO 7200 is ~180mm wide — an order of magnitude more than the current 60mm, with real labelled fields.

fields

fields: TitleBlockField[]

height

height: number

width

width: number


TitleBlockField

TitleBlockField = { key: string; label: string; source: "title" | "number" | "scale" | "date" | "author" | "checker" | "revision" | "sheetOf" | "size" | "units" | "owner"; width: number; }

One title-block cell. width is a fraction of the block width; source says where the value comes from so the composer + the AI grammar agree on it.

key

key: string

label

label: string

source

source: "title" | "number" | "scale" | "date" | "author" | "checker" | "revision" | "sheetOf" | "size" | "units" | "owner"

How the value is filled: a sheet/model field, or author-entered.

width

width: number

Fraction of the title-block width this field's cell spans (rows pack to 1).


drawingConvention

const drawingConvention: Convention<DrawingStandard>


ISO_DRAWING_STANDARD

Re-exports ISO_DRAWING_STANDARD

Last updated: 📖 3 min readEdit on GitHub