Skip to content

Validate an IFC model against one or more IDS using IfcTester

Feature Group: Check | IfcOpenShell / IfcTester

The Information Delivery Specification (IDS) is a buildingSMART standard for defining information requirements in a computer interpretable form. It allows for automatic compliance checking of IFC models, that increases quality control and fidelity of data. IDS also aids the efficient delivery of the data, by setting the expectations and providing clear guidelines of what needs to be exchanged. A user of IDS can specify how objects, classifications, materials, properties, and even values should be delivered in an IFC model. Source buildingSmart.

IDS can be used for defining requirements for

  • Life Cycle Assessement (LCA)
  • Buildings as Material Banks (BAMB), also knwon as Recycle, Reuse, Repurpose
  • Energy Performance Certficate (EPC), and generally speaking for Energy Performance of Building (EBP)
  • Digital Building Cadastre (DBL)
  • 3D Cadastre (3DC)
  • Real-Estate Management (REM)
  • Public Revenue Management (PRA)
  • Digital Building LogBook (DBL)

Seee also From Requirements to Validated Data for Spatial Units

Submit the processing request

The validation is started by sending a POST with a Json Body as defined in pydantic

#
# Validate the IFC model against the Information Delivery Specification (IDS)
#

class ValidateIfcAgainstIds_Instruction(BaseModel):
    sourceFileURL: str | None = "http://localhost:8002/IDS/IDS_wooden-windows_IFC.ifc"
    idsFilesURLs: list[str] | None = ["http://localhost:8002/IDS/IDS_wooden-windows.ids"]
    resultType: Literal['json','html','bcfzip'] | None = 'html'

class ValidateIfcAgainstIds_Result(BaseModel):
    result: list[ValidateIfcAgainstIds_ResultItem]
    runtime: float | None = 0.0 # in seconds
class ValidateIfcAgainstIds_ResultItem(BaseModel):
    isSuccess: bool
    percentChecksPass: float
    percentRequirementsPass: float
    percentSpecificationsPass: float
    resultPath: str # relative path of the result file (json, html or bfczip)
  • The sourceFileURL is that of the IFC file
  • The idsFilesURLs gives the list of the IDS's files; there may be more that one
  • The resultType is either json, html or bcfzip; bcfzip is the format of the BIM Collaboration Format (BFC).

The default files are from the GitHub of the buildingSmart IDS repository.

They are illustative and the validation gives both pass and fail results.

FastAPI provides by default at /docs a swagger utility that simplifies the execution of tests.

The request provides: default values that must be adjusted to your specific case

Swagger for import on /docs

Service the request

This is done in the Service Layer where a chain of task is composed and sent for execution by a Celery Worker via a message in the Message Broker(Redis)

Get IFC from a remote location

Currently all IFC files are store locally and served with Nodejs http-server.

Validate against a list of one or more IDS file(s)

The validation is entirely based on the IfcTester module of IfcOpenShell.

Client Interaction with the d4SU platform

The screen captures hereunder illustrate the interaction between a client (such as the Integration Platform) and the d4su-server.

The browser acts as a mockup of the client.

1. Open a WebSocket

The client opens a ws-socket connection with the server at /wsinit

Open a WebSocket

2. Post a request

The client sends a post request with the request data (the browser uses the swagger available at /docs).

Post a Request

The server provides a response with a token to allow the client to pair the request and the asynchronous result that will be provided when the processing completes.

Server Response

3. Processing

The processing is done by a Celery worker and the result is available in Redis.

Server Response

The last task notifies the server of the result. The server use a queue to forward the result to the WebSocket Server

4. The result is sent via the WebSocket

The WebSocket Server sends the response to the client (with the token and the result).

Server Response

In the current dev setup there is a single interactive client using the browser, so there is no need add a client id in the request and to route the response to the corresponding websocket client. This would however be needed for a production deployment.

The IDS file and the Validation result

The IDS_wooden-windows.ifc with BIM Collab

Wooden Window IDS Test File

The 3D geometry and all its details is informative, but need not be processed for the domains LCA, BAMB, EPC, DBP, ...

What matters is that the necessary Psets properties are present. Such as the ThermalTransmittance (part of the Pset_PlateCommon) (which is in the IDS hereunder) or the surface area (which is not included in the example IDS) but would be required in a real case.

The Information Delivery Specification (IDS) file

The Validation Result in HTML