DIQ_Dimension
Purpose
The
It defines the structural, geometric, quantitative, and relational metadata required for the DimensionIQWidget to correctly calculate, display, persist and associate individual measurements within a project.
A
- Representation of a single measured object
- Association with a dimension group
- Association with a specific layout
- Storage of calculated measurement values (length, area, volume, etc)
- Support for elevation-aware measurements
- Tracking of BIM-linked objects
- State-based lifecycle management
- Accurate quantity and cost workflows
This type is commonly used when:
- Creating or editing measurements
- Persisting measurement data to a backend
- Synchronizing widget state with a host application
- Calculating quantities and totals
- Linking measured objects to BIM elements
- Generating reports or exports
- Tracking measurement revisions
By standardizing the structure of a dimension, DimensionIQ ensures consistent calculation, rendering, and persistent behavior across host integrations.
Why This Type Exists
Projects often contain thousands of measurements across multiple drawings, layouts, and groups. Each measurement may represent:
- A linear takeoff
- A surface area
- A vertical facade area
- A volume calculation
- A counted object
- A BIM-linked element
- A weighted material quantity
Without a strict structural contract, managing this data becomes inconsistent and error-prone. The
- Provide a consistent representation of a single measurement
- Ensure predictable calculation outputs
- Decouple measurement data from UI rendering logic
- Enable backend persistence and synchronization
- Support grouping and layout relationships
- Allow lifecycle tracking (new, updated, deleted, etc)
- Enable integration with BIM systems
Because each measurement carries both geometric and quantitative information, the widget requires a clearly defined data structure.
Properties
| Properties | Type | Required | Description |
|---|---|---|---|
key | string | Yes | Unique identifier for the dimension |
groupKey | string | Yes | References the dimension group this dimension belongs to |
layoutKey | string | Yes | References the layout where the dimension was created |
name | string | Yes | User-defined label for the dimension |
state | string | Yes | Lifecycle state of the dimension (eg, new, updated, deleted, unchanged) |
type | string | Yes | Measurement type (eg, linear, area, volume, count) |
count | number | Yes | Number of measured instances (for count-based dimensions) |
height | number | No | Height used in calculations (often for vertical or volumetric measurements) |
offset | number | No | Elevation offset applied to the dimension |
length | number | No | Calculated horizontal length |
elevatedLength | number | No | Length adjusted for elevation or slope |
area | number | No | Calculated surface area |
verticalArea | number | No | Calculated vertical area (eg, wall face) |
volume | number | No | Calculated volume |
weight | number | No | Calculated or derived weight |
bimID | string | No | Identifier linking this dimension to a BIM element |
drawingObject | string | Yes | Serialized representation of the graphical object in the drawing |
Behavioral Expectations
Identity and Association- keymust be unique and stable
- groupKeymust reference a valid dimension group
- layoutKeymust reference a valid layout within a drawing
- A dimension cannot exist without being associated to both a group and a layout
- bimID, when provided, should reference a valid BIM object in the host system
The widget is responsible for computing:
- length
- elevatedLength
- area
- verticalArea
- volume
- weight
These values:
- Must reflect the geometry defined in the drawingObject
- May depend on heightandoffset
- Must stay consistent with the measurement type
The host application should treat these as authoritative computed output unless explicitly recalculated server-side.
State ManagementThe
- new
- updated
- deleted
- unchanged
This allows the host to:
- Persist only modified dimensions
- Remove deleted dimensions
- Track revision changes
- Maintain audit integrity
- groupKeydetermines logical categorization
- layoutKeydetermines physical drawing context
- Changing a group does not alter geometric data
- Moving a dimension between layouts updates layoutKey
- Deleting a group or layout may require reassignment or removal of dimensions
- nameis the primary user-facing identifier
- typeinfluences how the measurement is rendered and calculated
- drawingObjectdefines how the dimension appears visually
- Elevation-aware measurements rely on heightandoffset
- Quantitative properties are displayed in panels, reports, or summaries
When
- The dimension is associated with a BIM model element
- Changes to the BIM object may affect measurement calculations
- Host systems may use this ID for synchronization or clash detection
If no
Summary
It ensures that:
- Measurements are consistently calculated
- Dimensions are correctly associated with groups and layouts
- Geometric and quantitative data remain synchronized
- Lifecycle changes can be tracked
- BIM integrations are supported
- Host applications can reliably persist and process measurement data
By standardizing individual measurement data, DimensionIQ provides scalable, accurate, and integration-ready quantity management across complex projects.