FragmentsModel
The main class for managing a 3D model loaded from a fragments file. Handles geometry, materials, visibility, highlighting, sections, and more. This class orchestrates multiple specialized managers to handle different aspects of the model like mesh management, item data, raycasting, etc. It maintains the overall state and provides the main interface for interacting with the model. The model data is loaded and processed asynchronously across multiple threads.
Constructors
new FragmentsModel()
new FragmentsModel(
modelId,meshManager,threads,editor):FragmentsModel
The constructor of the fragments model. Don't use this directly. Use the FragmentsModels.load instead.
Parameters
| Parameter | Type |
|---|---|
modelId | string |
meshManager | MeshManager |
threads | FragmentsConnection |
editor | Editor |
Returns
Properties
attrsChanges
readonlyattrsChanges:Map<number,AttrsChange>
A map of attribute changes that have occurred in the model. The key is the local ID of the item, and the value is the change.
graphicsQuality
graphicsQuality:
number=0
The graphics quality of the model. It ranges from 0 (lowest) to 1 (highest).
object
object:
Object3D<Object3DEventMap>
The object that represents the model in the Three.js scene.
relsChanges
readonlyrelsChanges:Map<number,RelsModifyChange>
A map of relation changes that have occurred in the model. The key is the local ID of the item, and the value is the change.
threads
readonlythreads:FragmentsConnection
The connection to the threads that handle the model data.
tiles
readonlytiles:DataMap<string|number,BIMMesh>
A map of tiles that have been loaded for the model. The key is the tile ID, and the value is the tile.
Accessors
box
getbox():Box3
The bounding box of the whole model.
Returns
Box3
frozen
getfrozen():boolean
Whether the model should stop updating..
setfrozen(value):void
Whether the model should stop updating..
Parameters
| Parameter | Type |
|---|---|
value | boolean |
Returns
boolean
getClippingPlanesEvent
getgetClippingPlanesEvent(): () =>Plane[]
The event that is triggered when the clipping planes are needed in the thread. Set this method to pass your Three.js clipping planes to the model.
setgetClippingPlanesEvent(value):void
The event that is triggered when the clipping planes are needed in the thread. Set this method to pass your Three.js clipping planes to the model.
Parameters
| Parameter | Type |
|---|---|
value | () => Plane[] |
Returns
Function
Returns
Plane[]
isBusy
getisBusy():boolean
Whether the model is busy loading data.
Returns
boolean
modelId
getmodelId():string
The ID of the model.
Returns
string
Methods
_edit()
_edit(
requests):Promise<object>
Internal method to edit the model. Don't use this directly.
Parameters
| Parameter | Type | Description |
|---|---|---|
requests | EditRequest[] | The requests to edit the model. |
Returns
Promise<object>
deltaModelBuffer
deltaModelBuffer:
Uint8Array
ids
ids:
number[]
_finishProcessing()
_finishProcessing():
void
Internal method to finish processing. Don't use this directly.
Returns
void
_getRequests()
_getRequests():
Promise<object>
Internal method to get the requests of the model. Don't use this directly.
Returns
Promise<object>
requests
requests:
EditRequest[]
undoneRequests
undoneRequests:
EditRequest[]
_refreshView()
_refreshView():
Promise<void>
Internal method to refresh the view of the model. You shouldn't call this directly. Instead, use FragmentsModels.update.
Returns
Promise<void>
_reset()
_reset():
Promise<void>
Internal method to reset the model. Don't use this directly.
Returns
Promise<void>
_save()
_save():
Promise<Uint8Array>
Internal method to save the model. Don't use this directly.
Returns
Promise<Uint8Array>
_selectRequest()
_selectRequest(
index):Promise<void>
Internal method to select a request of the model. Don't use this directly.
Parameters
| Parameter | Type | Description |
|---|---|---|
index | number | The index of the request to select. |
Returns
Promise<void>
_setRequests()
_setRequests(
data):Promise<void>
Internal method to set the requests of the model. Don't use this directly.
Parameters
| Parameter | Type | Description |
|---|---|---|
data | object | The data to set the requests of the model. |
data.requests? | EditRequest[] | - |
data.undoneRequests? | EditRequest[] | - |
Returns
Promise<void>
_setup()
_setup(
data,raw?,config?):Promise<void>
Internal method to set up the model. Don't use this directly.
Parameters
| Parameter | Type |
|---|---|
data | Uint8Array | ArrayBuffer |
raw? | boolean |
config? | VirtualModelConfig |
Returns
Promise<void>
dispose()
dispose():
Promise<void>
Dispose the model. Use this when you're done with the model. If you use the FragmentsModels.dispose method, this will be called automatically for all models.
Returns
Promise<void>
getAlignmentStyles()
getAlignmentStyles():
Promise<object>
Get the civil alignment styles of the model (if any).
Returns
Promise<object>
exterior
exterior:
PointsMaterial
interior
interior:
PointsMaterial
getAlignments()
getAlignments():
Promise<Group<Object3DEventMap>>
Get the absolute alignments of the model (if any).
Returns
Promise<Group<Object3DEventMap>>
getAttributeNames()
getAttributeNames():
Promise<string[]>
Retrieves the names of all attributes associated with the model.
Returns
Promise<string[]>
A promise that resolves to an array of strings, where each string is the name of an attribute.
getAttributeTypes()
getAttributeTypes():
Promise<string[]>
Retrieves the attribute types associated with the model.
Returns
Promise<string[]>
A promise that resolves to an array of attribute types.
getAttributeValues()
getAttributeValues():
Promise<any[]>
Retrieves the attribute values associated with the model.
Returns
Promise<any[]>
A promise that resolves to an array of attribute values.
getBoxes()
getBoxes(
localIds?):Promise<Box3[]>
Get the individual bounding boxes of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | number[] | The local IDs of the items to look up. |
Returns
Promise<Box3[]>
getBuffer()
getBuffer(
raw):Promise<ArrayBuffer>
Get the buffer of the model.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
raw | boolean | false | Whether to get the raw buffer. If false, it will be compressed. |
Returns
Promise<ArrayBuffer>
getCategories()
getCategories():
Promise<string[]>
Get all the categories of the model.
Returns
Promise<string[]>
getCoordinates()
getCoordinates():
Promise<number[]>
Gets coordinates of the model.
Returns
Promise<number[]>
getCoordinationMatrix()
getCoordinationMatrix():
Promise<Matrix4>
Retrieves the coordination matrix for the current model.
This method utilizes the _coordinatesManager to compute and return a
THREE.Matrix4 object based on the original model coordinates.
Returns
Promise<Matrix4>
getEditedElements()
getEditedElements():
Promise<number[]>
Gets the edited elements of the model.
Returns
Promise<number[]>
getGlobalTranformsIdsOfItems()
getGlobalTranformsIdsOfItems(
ids):Promise<number[]>
Gets the global transforms IDs of the items of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
ids | number[] | The local IDs of the items to get the global transforms IDs of. |
Returns
Promise<number[]>
getGlobalTransforms()
getGlobalTransforms(
localIds?):Promise<Map<number,RawGlobalTransformData>>
Gets the global transforms of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | Iterable<number> | The local IDs of the global transforms to get. If undefined, it will return all global transforms. |
Returns
Promise<Map<number, RawGlobalTransformData>>
getGlobalTransformsIds()
getGlobalTransformsIds():
Promise<number[]>
Gets all the global transforms IDs of the model.
Returns
Promise<number[]>
getGrids()
getGrids():
Promise<Group<Object3DEventMap>>
Get the grids of the model (if any).
Returns
Promise<Group<Object3DEventMap>>
getGuidsByLocalIds()
getGuidsByLocalIds(
localIds):Promise<(null|string)[]>
Get the GUIDs corresponding to the specified local IDs.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds | number[] | Array of local IDs to look up. |
Returns
Promise<(null | string)[]>
getHighlight()
getHighlight(
localIds?):Promise<MaterialDefinition[]>
Gets the highlight of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | number[] | The local IDs of the items to get the highlight of. If undefined, it will return the highlight of all items. |
Returns
Promise <MaterialDefinition[]>
getHighlightItemIds()
getHighlightItemIds():
Promise<number[]>
Gets the item IDs of the items that are highlighted.
Returns
Promise<number[]>
getHorizontalAlignments()
getHorizontalAlignments():
Promise<Group<Object3DEventMap>>
Get the horizontal alignments of the model (if any).
Returns
Promise<Group<Object3DEventMap>>
getItem()
getItem(
id):Item
Get an item by its ID.
Parameters
| Parameter | Type | Description |
|---|---|---|
id | Identifier | The ID of the item to look up. |
Returns
Item
getItems()
getItems(
localIds?):Promise<Map<number,RawItemData>>
Gets the items of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | Iterable<number> | The local IDs of the items to get. If undefined, it will return all items. |
Returns
Promise<Map<number, RawItemData>>
getItemsByQuery()
getItemsByQuery(
params,config?):Promise<number[]>
Retrieves items based on the specified query parameters.
Parameters
| Parameter | Type | Description |
|---|---|---|
params | ItemsQueryParams | The query parameters used to filter and retrieve items. |
config? | ItemsQueryConfig | Optional query configuration. |
Returns
Promise<number[]>
A promise that resolves to the items matching the query.
getItemsByVisibility()
getItemsByVisibility(
visible):Promise<number[]>
Gets the items by visibility.
Parameters
| Parameter | Type | Description |
|---|---|---|
visible | boolean | Whether the items should be visible. |
Returns
Promise<number[]>
getItemsChildren()
getItemsChildren(
ids):Promise<number[]>
Get the spatial structure children of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
ids | Identifier[] | The IDs of the items to look up. |
Returns
Promise<number[]>
getItemsData()
getItemsData(
ids,config?):Promise<ItemData[]>
Get all the data of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
ids | Identifier[] | The IDs of the items to look up. |
config? | Partial <ItemsDataConfig> | The configuration of the items data. |
Returns
Promise <ItemData[]>
getItemsGeometry()
getItemsGeometry(
localIds,lod):Promise<MeshData[][]>
Retrieves the geometry data for the specified local IDs.
The returned data is structured as an array of arrays of MeshData,
which contains the necessary information to reconstruct a THREE.BufferGeometry.
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
localIds | number[] | undefined | An array of local IDs for which the geometry data is requested. |
lod | CurrentLod | CurrentLod.GEOMETRY | The level of detail for the geometry (optional). |
Returns
Promise <MeshData[][]>
getItemsIds()
getItemsIds():
Promise<number[]>
Gets all the items IDs of the model.
Returns
Promise<number[]>
getItemsIdsWithGeometry()
getItemsIdsWithGeometry():
Promise<number[]>
Get all the items ids of the model that have geometry.
Returns
Promise<number[]>
getItemsOfCategories()
getItemsOfCategories(
categories):Promise<object>
Get all the items of the model that belong to the specified category.
Parameters
| Parameter | Type |
|---|---|
categories | RegExp[] |
Returns
Promise<object>
getItemsVolume()
getItemsVolume(
localIds):Promise<number>
Retrieves the total volume of items based on their local IDs.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds | number[] | An array of local IDs representing the items. |
Returns
Promise<number>
A promise that resolves to the total volume of the specified items.
getItemsWithGeometry()
getItemsWithGeometry():
Promise<Item[]>
Get all the items of the model that have geometry.
Returns
Promise<Item[]>
getLocalIds()
getLocalIds():
Promise<number[]>
Get all the local IDs of the model.
Returns
Promise<number[]>
getLocalIdsByGuids()
getLocalIdsByGuids(
guids):Promise<(null|number)[]>
Get the local IDs corresponding to the specified GUIDs.
Parameters
| Parameter | Type | Description |
|---|---|---|
guids | string[] | Array of GUIDs to look up. |
Returns
Promise<(null | number)[]>
getLocalTransforms()
getLocalTransforms(
localIds?):Promise<Map<number,RawTransformData>>
Gets the local transforms of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | Iterable<number> | The local IDs of the local transforms to get. If undefined, it will return all local transforms. |
Returns
Promise<Map<number, RawTransformData>>
getLocalTransformsIds()
getLocalTransformsIds():
Promise<number[]>
Gets all the local transforms IDs of the model.
Returns
Promise<number[]>
getMaterials()
getMaterials(
localIds?):Promise<Map<number,RawMaterial>>
Gets the materials of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | Iterable<number> | The local IDs of the materials to get. If undefined, it will return all materials. |
Returns
Promise<Map<number, RawMaterial>>
getMaterialsIds()
getMaterialsIds():
Promise<number[]>
Gets all the materials IDs of the model.
Returns
Promise<number[]>
getMaxLocalId()
getMaxLocalId():
Promise<number>
Get the maximum local ID of the model.
Returns
Promise<number>
getMergedBox()
getMergedBox(
localIds):Promise<Box3>
Get the merged bounding box of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds | number[] | The local IDs of the items to look up. |
Returns
Promise<Box3>
getMetadata()
getMetadata<
T>():Promise<T>
Get the metadata of the model.
Type parameters
| Type parameter | Value |
|---|---|
T extends Record<string, any> | Record<string, any> |
Returns
Promise<T>
getPositions()
getPositions(
localIds?):Promise<Vector3[]>
Get the absolute positions of the specified items.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | number[] | The local IDs of the items to look up. |
Returns
Promise<Vector3[]>
getRelationNames()
getRelationNames():
Promise<string[]>
Retrieves the names of all relations associated with this model.
Returns
Promise<string[]>
A promise that resolves to an array of strings, where each string is the name of a relation.
getRelations()
getRelations(
localIds?):Promise<Map<number,RawRelationData>>
Gets the relations of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | number[] | The local IDs of the relations to get. If undefined, it will return all relations. |
Returns
Promise<Map<number, RawRelationData>>
getRepresentations()
getRepresentations(
localIds?):Promise<Map<number,RawRepresentation>>
Gets the representations of the model.
Parameters
| Parameter | Type | Description |
|---|---|---|
localIds? | Iterable<number> | The local IDs of the representations to get. If undefined, it will return all representations. |