15 Jan 2020

Basic Clash View by Model Coordination API in Node.js

Follow @Xiaodong Liang

Model Coordination provides a coordination space to upload, review, and detect clashes between the latest set of project models. In BIM 360 UI, the clashes are presented in matrix view which is about all the clashes that have not yet been reviewed, or group view (with Forge Viewer) which is about clashes that specific object in a document with the objects in other documents. 

ui

 

By model coordination API, we can get the raw data of clash. Each clash contains ids of two documents, ids of two clashed objects distance and status etc.  The object ids are exactly dbId we will use in Forge Viewer. The tutorial tells in detail. Actually, the features of BIM 360 UI are also based on what API provides. We can check the same clash data like UI does, yet in the format that is suitable to the application. 

The first integration demo with model coordination API could be viewing the raw clash. This demo gets all documents info of a model set and aggregates them in one viewer. By the data from model coordination API, the demo highlights the two objects of one clash. This might be not be a use case in reality, while it could be a skeleton for comprehensive application.   

https://github.com/Autodesk-Forge/forge-bim360-clashview

From technology perspective, since API provides files of all clashes, The demo downloads the model data and clash data of the selected model set firstly, next analyzes the relationship of the data, Based on the relationship, the code analyzes the data to build the mapping among the clash document, version URN and viewable guid etc.

r

Since the clash data might be large, the code decompresses and streams the results on the fly, sends the stream to client, and unzips on client. To make a simple demo, this sample does not use database to manage the clash data. While in a comprehensive application, a database will be useful for the client to search on-demand or integrate with other data sources.

In addition, on client (browser) side, it may be more efficient to manage the data by IndexDB if the app requires to perform various analysis in different browser sessions.
 

Related Article