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 http://www.buildingsmart-tech.org/ifc/IFC4/final/html/link/construction-scheduling-task.htm

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.