# Interface ModelProduct

Read-only view of an IFC product (element) in a building model.

This is the shared interface between the browser (`@twinfinity/core`) and server/Node.js (`@twinfinity/t8-client-model`) contexts, allowing business logic to be written once and consumed from both.

interface ModelProduct {
aggregates: readonly ModelProduct[];
children: Iterable<ModelProduct>;
class: ModelProductClass;
className: string;
computedPropertySets: Record<string, T8PropertySet<T8Unit>>;
contains: readonly ModelProduct[];
data: Record<string, boolean | number | string>;
description?: string;
facility?: ModelProduct;
facilityPart?: ModelProduct;
globalId: string;
hasGeometry: boolean;
hasStructuredRelationships: boolean;
localId: number;
meshes: readonly ModelMesh[];
name?: string;
parent?: ModelProduct;
propertySets: Record<string, T8PropertySet<T8Unit>>;
quantitySets: Record<string, T8QuantitySet<T8Unit>>;
site?: ModelProduct;
type?: ModelEntityType;
}

#### Implemented by

- BimIfcObject
- T8ProductWithGeometry

##### Index

### Properties

aggregates
children
class
className
computedPropertySets
contains
data
description?
facility?
facilityPart?
globalId
hasGeometry
hasStructuredRelationships
localId
meshes
name?
parent?
propertySets
quantitySets
site?
type?

## Properties

### `Readonly` aggregates

aggregates: readonly ModelProduct[]

Products related via `IfcRelAggregates` (decomposition). Empty when hasStructuredRelationships is false.

### `Readonly` children

children: Iterable<ModelProduct>

All child products regardless of relationship type.

### `Readonly` class

class: ModelProductClass

Parsed class with category information. Reference equality can be used for comparison.

### `Readonly` className

className: string

Full IFC class name including prefix (e.g. `'IfcWall'`, `'IfcDoor'`).

### `Readonly` computedPropertySets

computedPropertySets: Record<string, T8PropertySet<T8Unit>>

Computed property sets added by Twinfinity processing.

### `Readonly` contains

contains: readonly ModelProduct[]

Products related via `IfcRelContainedInSpatialStructure` (spatial containment). Empty when hasStructuredRelationships is false.

### `Readonly` data

data: Record<string, boolean | number | string>

Product-level scalar data values (e.g. operationType, objectPlacement).

### `Optional` `Readonly` description

description?: string

### `Optional` `Readonly` facility

facility?: ModelProduct

The `IfcBuilding` (or `IfcFacility`) ancestor of this product.

### `Optional` `Readonly` facilityPart

facilityPart?: ModelProduct

The `IfcBuildingStorey` (or `IfcFacilityPart`) ancestor of this product.

### `Readonly` globalId

globalId: string

IFC GlobalId (GUID), unique across all models.

### `Readonly` hasGeometry

hasGeometry: boolean

True if this product has at least one mesh with geometry data.

### `Readonly` hasStructuredRelationships

hasStructuredRelationships: boolean

True when aggregates and contains carry structured IFC relationship data (`IfcRelAggregates` / `IfcRelContainedInSpatialStructure`). When false, only children is populated.

### `Readonly` localId

localId: number

Numerical identifier, unique within a single model.

### `Readonly` meshes

meshes: readonly ModelMesh[]

Geometry meshes belonging to this product.

### `Optional` `Readonly` name

name?: string

### `Optional` `Readonly` parent

parent?: ModelProduct

Closest parent in the spatial/aggregation hierarchy.

### `Readonly` propertySets

propertySets: Record<string, T8PropertySet<T8Unit>>

IFC property sets (e.g. `Pset_WallCommon`).

### `Readonly` quantitySets

quantitySets: Record<string, T8QuantitySet<T8Unit>>

IFC quantity sets (e.g. `Qto_WallBaseQuantities`).

### `Optional` `Readonly` site

site?: ModelProduct

The `IfcSite` ancestor of this product.

### `Optional` `Readonly` type

type?: ModelEntityType

The entity type definition this product is an instance of (e.g. an `IfcWallType`).