Skip to main content

10 things you may not know about IFC

This is a short post, to elicit discussion. It was written in the context of IFC-bashing and people insisting that only the use of proprietary data formats gives reliable results. As I’m not the shouting kind, I like to answer in another format… by posting some things I learned about IFC. 
The more I study the data scheme, the more I see things I did not know or not understood fully. And I dare to consider myself as an IFC-expert, up to a certain level.
Here it goes. These are 10 concepts supported by IFC, but which your BIM-software may not even be capable of interpreting.

1 - Revision Control

Each object in an IFC model can evolve continuously over the lifecycle of a project. They can be marked with a Change Action, a TimeStamp and other attributes, captured within the IfcOwnerHistory property.

In many BIM-software exporters, only a single Owner History is exported, so this only indicates the model file as a whole. We are still in the age of file-based containers and have yet to fully embrace a more object-focused view on BIM. The upcoming ISO 19650 is also written in the context of container-based collaboration, mostly individual files and is based on the PAS 1192 reference standards.

2 - Work Schedules, Planning & Tasks

Within the data scheme of IFC, several classes actually allow you to describe planning information, such as IfcWorkCalendar, IfcWorkSchedule and IfcTask (which can nest other tasks). The next time you add some custom property for task-related information, you may start to look at what is already there.
See also the example at

3 - Asset Management

While we often see IFC as containing all the building elements for design and construction, the concept of the Asset, as grouping of elements acting as a single entity which has financial value or that can be operated on. This already contains information such as OriginalValue, CurrentValue, TotalReplacementCost and the idea of an Owner, a User and a Responsible person.

4 - Parametric Geometry

While Grasshopper and other parametric modelling systems are often used in a BIM context, resulting geometry is usually transferred as static Boundary Representations (although the GeometryGym approach is pushing the use of a full geometric description). Looking in the large set of IFC classes which describe geometry, there are multiple classes that can be used in a parametric description, by defining relations or by indirectly defining a curve, surface or volume/body in relation to other geometric entities.

The whole positioning of elements in an IFC model is also highly parametric, using LocalPositions to place elements relative to their logical containers and having almost no absolute coordinates embedded. You may move the whole model with a single change in a Cartesian 3D Point.

5 - Material Characteristics

A model viewer is often focused on the main spatial structure (project - site - building - storey - space - element) and the elements and their types. But when diving deeper in e.g. the materials, they are often just named. However, it is possible to have intricate material characteristics described with IFC. We simply have to use them, send them out from our BIM software and allow them to be accessed in analysis software for IFC.

There are specific property sets for materials: Combustion, Concrete, Energy, Fuel…

What do you think about the IfcIonConcentrationMeasure in the Pset_MaterialWater?
Can you set this in your BIM-software of choice? Or read it in your model viewer?

6 - Textures and Texture Coordinates

I used to be really into 3D visualisation, which led me to CAD and BIM… So I still have a weak spot for properly exchanging texture coordinates between modelling and visualisation systems. If you look around, you may even find a reminiscence of my former “render study” comparison blog or site or whatever it was called in the days.

And no... I will not post a link.

While almost every single BIM modelling system supports proper materials and textures and the texture coordinates which pin the texture maps onto the geometry, I have yet to find good BIM viewers which actually respect this information. I like Solibri for its model checking and ITO functions, but its graphical presentation resembles the functional display from CAD-modellers: basic shading, no shadows, single-color elements, simple transparency.
Now if only surface textures would be shown (although having the option of not showing them should remain)…

But rest assured that IFC has you covered. Now if only everybody would start to support this with export and import…

7 - Classification Reference

Within projects, we often apply certain coding and classification codes. They may be defined on a national level or in a certain domain, but can also be related to the WBS of a certain firm. More often than not, multiple systems may be in use: the system you adopt internally, to organise your own office, alongside others on a project-basis. E.g. Revit has an Assembly Code and Keynote available, whereas ARCHICAD introduced a separate Classification System concept (alongside its property system).

The moment you need to balance between your internal system and a compulsory system, you may end up in troubles when they both demand to be placed in the same field (e.g. the Assembly Code).

The first IFC-compatible solution is using a custom Property Set for the project. This is easily done and fairly easily managed via custom schedules or even automation techniques. However, this is only a custom property which not be at all relevant for others.

The proper way in IFC is via the IfcClassificationReference. Each element can have multiple of these references and so you may adhere to CI/SfB, Uniclass and Cuneco at the same time, if this would be necessary in a specific project, even when you may have adopted another system in your own company. As long as you don’t force all of them into the same field.

8 - Multiple Languages

If you come from a mono-lingual region, you may not be aware, but many people work in countries with multiple official languages. Not everybody is using English or French… And some projects may even require multiple languages. Luckily, IFC provides means for us to express this, as part of the many External References that are supported (alongside the Classification Reference we discussed already).

Others are URI, Confidentiality Status, Library Select and Resource Object Select.

9 - Unit Systems

In the same line as the previous remark, we may not all use meters or feet or Celsius units. Yet we want to be clear about our intentions regarding dimensions and other characteristics. So IFC ensures that any ‘dimension’ (length, volume, temperature, pressure) has an unambiguous unit assigned. They are defined and linked to the project, well, in fact they are linked to the Representation Context.

So can you have different units for each Context? What do you think?

10 - Something unexpected?

What do you think about the following constructs in the data scheme?
  • Approval > to be assigned to all objects derived from Root (which includes property definitions as well)
  • Annotation > IFC is not only about 3D geometry and properties
  • Quantities for Building, Storey, Opening Element, Site and Space > IFC is not only about regular building elements and their quantities.
  • Property Dependency Relationship > did you know that properties are not only single values, but that they can have lists, enumerations, tables and even dependencies on other properties?
  • Crew Resources > in the Construction Management Resource Domain, many aspects to express the organisation of a construction site are defined.


Go and look inside the IFC4 documentation and mention a class in your comment which you didn’t expect to be included in the IFC Data Scheme and you believe is really valuable if only your current BIM-software could use it.

And as a teaser... a little something I'm working on. Don't ask what exactly or when. But it is helping me to learn a lot about IFC. Going hands-on is often the best approach... but maybe not as the very first step, where some guidance is required.


Popular posts from this blog

Improve usage of BIM during early design phases

When I was collecting ideas for a book chapter on BIM (that seemed to never have emerged after that), I collected 10 ideas, which I believe still reflect good recommendations to improve the usage of BIM during the early design phases. These ideas are related to BIM software, but you can apply them in any flavor, as long as you can model with Building Elements, Spaces and have control over representation. Introduction This article gives an overview of several recommendations and tips, to better apply BIM applications and BIM methodologies, in the context of the early design phases. Many of these tips are applicable in any BIM application and they are based on experience gathered from teaching, researching and using BIM software. Sometimes they could help software developers to improve the workflow of their particular BIM implementation. Tip 1 : Gradually increase the amount of information In the early design phases, the architect makes assumptions and lays out the main design in

Getting BIM data into Unity (Part 9 - using IfcConvert)

This is part 9 of a series of posts about getting BIM data into Unity. In this post, we’ll discuss the IfcConvert utility from the IfcOpenShell Open Source IFC Library to preprocess an IFC model for integration with Unity. This is (finally?) again a coding post, with some scripts which are shared to build upon. Conversion of IFC into Unity-friendly formats The strategy with this approach is that you preprocess the IFC-file into more manageable formats for Unity integration. Most Web-platforms do some sort of pre-processing anyway, so what you see in your browsers is almost never an IFC-file, but an optimised Mesh-based geometric representation. However, it wouldn’t be BIM-related if we’d limit ourselves to the geometry, so we will parse the model information as well, albeit using another, pre-processed file. IFC to Wavefront OBJ I used a test IFC-model and used the IfcConvert-utility converted it into OBJ en XML formats. The default way to use it is very simple:

Getting BIM data into Unity (Part 8 - Strategies to tackle IFC)

This is part 8 of a series of posts about getting BIM data into Unity. In this post, we’ll discuss IFC as a transfer format towards Unity. As with the previous post, this is not a coding post, although hints and examples are provided. Open BIM and IFC Everybody who ever met me or heard me present on a conference or BIM-lecture will not be surprised to hear that I’m a strong believer in the Industry Foundation Classes (IFC), an open standard, with already two versions published as an ISO standard, being IFC2x2 and IFC4 (but surprisingly not IFC2x3 which is widely used). In the ideal world, this would be the format to use to transfer BIM data into another environment, such as Unity. So what are our options? Looking in the Unity Asset Store Assimp is a library which supports multiple formats, including IFC.   I did a few attempts, but alas without any success. It is possib