Files
Introduction
In this article, we will explore how to update an existing IFC file with new information contained in an Excel spreadsheet using the new IFC reader and writer released in FME 2025.
Step-by-Step Instructions
This procedure can be split roughly into two parts, the first will be to create an Excel file with properties to update from the source IFC file, and edit it in Excel by updating the existing attributes or adding a new property set. The second portion will be to update the property sets within FME Workbench with the updates found in the Excel file.
Part 1: Generate Excel File with Updates
We will be updating three feature types in this example: Covering, PipeSegment, and Roof.
1. Start FME Workbench and Add CSV Data
Start FME Workbench, and click on New to open a blank workspace.
First, we need to add a source dataset. Click on the Add Data Source button. In the Add Reader dialog, enter the following:
- Format: Industry Foundation Classes (IFC)
-
Dataset: ./ARK_NordicLCA_Housing_Timber_As-built_Archicad.ifc
- Click on the ellipsis and browse to the downloaded dataset
Next in the Select Feature Types to Import dialog, select:
PipeSegment
Roof
Click OK.
2. Use AttributeKeepers to Select Properties to Update
Add two AttributeKeeper transformers to the canvas and connect one to the PipeSegment, and one to Roof reader feature types, respectively.
PipeSegment AttributeKeeper:
-
Attributes to Keep:
- ifc_global_id
- Pset_ManufacturerTypeInformation.Manufacturer
- Pset_ManufacturerTypeInformation.ProductionYear
Roof AttributeKeeper
-
Attribute to Keep:
- ifc_global_id
- ifc_name
If we wanted to update other property sets, this is the moment to select them. It is important to preserve ifc_global_id, as this is what we will use to merge the updated attributes back into the IFC file when writing.
3. Add Excel Writer
Add a writer to the workspace.
- Format: Microsoft Excel
- Dataset: <browse to folder>/update_properties.xlsx
In the Feature Type dialog, set:
- Sheet Name: PipeSegment
Duplicate the PipeSegment writer feature type by right-clicking on it and selecting Duplicate.
Open the duplicated Pipesegment writer feature type parameters and set:
- Sheet Name: Roof
Connect the AttributeKeepers to their respective writer feature types.
Run the workspace. The resulting Excel file will have two sheets with columns named after the attributes that we decided on earlier.
4. Update Properties
Open the resulting file in Microsoft Excel. The first operation we will do is update the information contained in existing property sets(PipeSegment).
Steps 4 and 5 are shown as demonstration purposes. The completed properties dataset (update_properties_final.xlsx) can be downloaded and used in Part 2.
The sample dataset update_properties_final.xlsx contains some sample data that we manually input, but this can be changed at any time. In this example, some manufacturers and the year of production has been added to PipeSegment.
5. Adding Properties
The next operation we will do is to add a Property Set in Excel. In the new IFC writer, properties take the form of <PropertySet>.<Property>(the delimiter may change, by default it is <.>).
The same sample dataset referenced above we will add Properties.RoofingCompany to our Roof data in the original IFC and has some rows filled out as well.
Once we are satisfied with the results, we will save the Excel file and move on to the next phase, where the updates made are applied to the IFC file. Save the workspace.
Part 2: Update IFC File from Excel
This second portion of the article will deal with updating the source IFC file with the new attributes.
1. Add Excel Reader
Create a new workspace.
First, we need to add a source dataset. Click on the Add Data Source button. In the Add Reader dialog, enter the following:
- Format: Microsoft Excel
-
Dataset: ./update_properties_final.xlsx
- Click on the ellipsis and browse to the downloaded dataset
Click OK. Ensure both Feature Types (Sheets) are enabled, and click OK.
2. Add an IFC Reader
Add another reader, enter the following:
- Format: Industry Foundation Classes (IFC)
- Dataset: ./ARK_NordicLCA_Housing_Timber_As-built_Archicad.ifc
- Workflow Options: Single Merged Feature Type
3. Merge Features with Updated Properties
Add a FeatureMerger transformer to the workspace. Connect both the PipeSegment and Roof reader feature types to the Supplier input port and the <All> reader feature type to the Requestor Port. In the parameters:
-
Join On:
- Requestor: ifc_global_id
- Supplier: ifc_global_id
-
Attribute Accumulation:
- Conflict Resolution: Use Supplier
Use Supplier means that when merging, the transformer will prefer the updated attributes from the Excel sheets rather than the existing ones from the source IFC File.
4. Add an IFC Writer and Run Translation
Add a writer to the workspace
- Format: Industry Foundation Classes (IFC)
- Dataset: <browse to folder>\Nordic_office_enriched_final.ifc I
Close the Feature Type dialog, then connect the Merged and UnmergedRequestor ports from the FeatureMerger to the IFC writer feature type.
Reopen the writer Feature Type parameters:
-
IFC Element Type Name: ifc_element_type
- Click on the drop-down arrow next to IFC Element Type Name and expand Attribute Value > select ifc_element_type.
This will perform a Feature Type Fanout, writing the features back into their original place according to the element type they had in the source IFC file, preserving the file structure of the source IFC file. Click OK.
Click the run button.
5. Inspect Results
One of the upgraded PipeSegments viewed in FME Data Inspector. The existing Property Set has been updated with manufacturer information:
The roof, this time viewed in Solibri Anywhere, showing the new Property Set that we created:
Data Attribution
The IFC files in this tutorial are provided under the Nordic Sustainable Construction Programme. It is found in the Architectural models zip file: Download here. You can unzip the file and find it in the IFC folder as: ARK_NordicLCA_Housing_Timber_As-built_Archicad.ifc. It is made available under the Creative Commons license (CC BY-SA 4.0).