Understanding Element Classification for IFC 2×3 exchange in ARCHICAD 18/19 – Part 1 – Relationships


In an earlier post we looked at the requirements of COBie for both Components and Types. This series of posts are highly technical posts and not something I would expect users to understand in depth, although I know some of our power users will try and follow them. However this kind of understanding is important if you are setting up templates for ARCHICAD users. There is a fair bit of detail to understand so the information is split into three posts. We will look at the relationship between Components and Types in this post.

I was once described as a ‘BIM Mechanic’ which is very apt when it comes to this post. Anyone who owns a car needs to know how to drive it but doesn’t need to understand in the inner workings of its engine. As a ‘BIM Mechanic’ I maintain and finesse the templates our users utilise on their projects. They feed back minor niggles which we fix and we also introduce improvements as the tool improves. All the user needs to do is follow the guidance we set out to use the templates correctly. (Since I drafted this post Nathan Hildebrandt of Skewed has also written a post about the concept of Mechanic vs Driver. See here for more on this concept).

The post itself though was inspired by Brian Spears (@arktek), a fellow ARCHICAD user, from CJMW Architecture in the USA who posted a piece entitled “ArchiCAD to IFC Export Tests” on his blog. Brian is just taking his first steps to understand IFC and it is great to see someone else really trying to explore IFC with a similar testing process to how we develop our understanding. I thought I could give Brian a little more information to help with his understanding so thought i’d write a quick post. It quickly turned into a full research piece as I delved deeper into the information. Hopefully this work will help Brian and other ‘BIM Mechanics’ to move forward with their IFC understanding and create more ARCHICAD users focussed on robust open workflows.

In many ways the work shared in this blog series is the kind of work our users don’t see from our central BIM team. This research however is important to understand how our models are exported and get the best results using IFC. Many issues related to interoperability are to do with poor implementation by the user (and that’s not a criticism of users), but for many ARCHICAD users they don’t have a ‘BIM Mechanic’ to help them keep their template up to date. Hopefully some of this shared knowledge will prove useful to others.

Element classification

Every 3-dimensional part of a model has an element classification. In ARCHICAD this is controlled with ‘Element Classification’ in Tags & Categories. An Autodesk Revit user would refer to these as Categories. Both authoring tools use a form of internal classification / categorisation.

In ARCHICAD this classification is pretty flexible and is fully aligned with the IFC standard (ISO 16739:2013). There are 52 choices (plus ARCHICAD’s default ‘ArchiCAD Type’) for a user to classify any Component/Element with. I will cover the ‘ArchiCAD Type’ classification in the next post.

Note: The Element Classification covered here is for IFC2x3 and this will be slightly different when IFC4 is introduced.

One-to-one relationships

In ARCHICAD we drive the IFC Classification for both Components/Elements and Types when we select the Element Classification in Tags & Categories.

As there is a one-to-one relationship all of these settings can be saved as Favorites and use any tool to create them. This means the user doesn’t need to worry about the settings required. The only thing a user needs to do is use a Favorite or if one is not available then they need to simply pick the appropriate classification.

ARCHICAD Element Classification

Image: The full list of Element Classification available to users in ARCHICAD 18 and 19

KEY: Black bold – ARCHICAD Element Classification in Tags & Categories; Blue – IFC2x3 IfcElement Classification; Green – IFC2x3 IfcTypeProduct Classification; Plum – How Solibri displays the Classification

ARCHICAD Element Classification

  • Beam > IfcBeam > IfcBeamType (Beam)
  • Building Element Proxy > IfcBuildingElementProxy > IfcBuildingElementProxyType (Object)
  • Cable Carrier Fitting > IfcFlowFitting > IfcCableCarrierFittingtType (Cable Carrier Fitting)
  • Cable Carrier Segment > IfcFlowSegment > IfcCableCarrierSegmentType (Cable Carrier)
  • Ceiling > IfcCovering [with predefined type of CEILING] > IfcCoveringType (Suspended Ceiling)
  • Column > IfcColumn > IfcColumnType (Column)
  • Covering > IfcCovering [1] > IfcCoveringType (Covering)
  • Curtain Wall > IfcCurtainWall > IfcCurtainWallType (Curtain Wall)
  • Distribution Chamber Element > IfcDistributionChamberElement > IfcDistributionChamberElementType (Distribution Chamber Element)
  • Distribution Element > IfcDistributionElement > IfcDistributionElementType [3] (Distribution Element)
  • Door > IfcDoor > IfcDoorStyle (Door)
  • Duct Fitting > IfcFlowFitting > IfcDuctFittingType (Duct Fitting)
  • Duct Flow Terminal > IfcFlowTerminal > IfcAirTerminalType [3] (Air Terminal)
  • Duct Segment > IfcFlowSegment > IfcDuctSegmentType (Duct)
  • Fastener > IfcFastener > IfcFastenerType (Fastener)
  • Footing > IfcFooting > no Type applicable (Footing)
  • Flow Segment > IfcFlowSegment > IfcFlowSegmentType [2] (Flow Segment)
  • Lamp > IfcFlowTerminal > IfcLampType [3] (Lamp)
  • Light Fixture > IfcFlowTerminal > IfcLightFixtureType [3] (Light Fixture)
  • Mechanical Fastener > IfcMechanicalFastener > IfcMechanicalFastenerType (Fastener) [5] 
  • Member > IfcMember > IfcMemberType (Member)
  • Pile IfcPile no Type applicable (Pile)
  • Pipe Fitting > IfcFlowFitting > IfcPipeFittingType (Pipe Fitting)
  • Pipe Flow Terminal > IfcFlowTerminal > IfcSanitaryTerminalType [3] (Sanitary Terminal)
  • Pipe Segment > IfcFlowSegment > IfcPipeSegmentType (Pipe)
  • Plate > IfcPlate > IfcPlateType (Plate)
  • Railing > IfcRailing > IfcRailingType (Railing)
  • Ramp > IfcRamp no Type applicable (Ramp)
  • Ramp Flight > IfcRampFlight > IfcRampFlightType (Ramp)
  • Reinforcing Bar > IfcReinforcingBar no Type applicable (Reinforcing Bar)
  • Reinforcing Mesh > IfcReinforcingMesh > no Type applicable (Reinforcing Mesh)
  • Roof > IfcSlab [with predefined type of ROOF] > IfcRoofType (Roof)
  • Site Geometry > no Element applicable > no Type applicable [4] (Site)
  • Slab > IfcSlab > IfcSlabType (Slab)
  • Stair > IfcStair no Type applicable (Stair)
  • Stair Flight > IfcStairFlight > IfcStairFlightType (Stair)
  • Tendon > IfcTendon > no Type applicable (Tendon)
  • Tendon Anchor > IfcTendonAnchor no Type applicable (Tendon Anchor)
  • Transport Element > IfcTransportElement > IfcTransportElementType (Transport Element)
  • Wall > IfcWall or IfcWallStandardCase > IfcWallType (Wall)
  • Window > IfcWindow > IfcWindowStyle (Window)


[1] Covering’s have predefined types which can be selected. 

[2] This does break down further but these are covered by ARCHICAD’s other categories.

[3] Can be manually edited although Types are covered elsewhere – see next section.

[4] Site Geometry has no IFC data and so is not covered in the IFC Scheme.

One-to-many relationships

So far so good as the relationship between ARCHICAD’s Element Classification and how they are classified in IFC2x3 at both Component/Element level and Type level will be correct. However, things get a little more complicated with the remaining Element Classifications.

The following Element Classification drive the IFC2x3 Classification but at the Type level they default to a set Type. So those in green are the ones that would be chosen if only the Element Classification in Tags & Categories are used. The red ones need to manually be amended in the IFC Manager by the user. See below this list for a description of how this can be done.

KEY: Black bold – ARCHICAD Element Classification in Tags & Categories; Blue – IFC2x3 IfcElement Classification; Green – IFC2x3 IfcTypeProduct Classification; Red – Alternative IfcTypeProduct Classification if changed manually by the user; Plum – How Solibri displays the Classification

  • Discrete Accessory > IfcDiscreteAccessory > IfcDiscreteAccessoryType (Discrete Accessory) or IfcVibrationIsolatorType (Discrete Accessory)
  • Distribution Control Element > IfcDistributionControlElement > IfcControllerType (Distribution Elementor IfcActuator (Distribution Element), IfcAlarmType (Distribution Element), IfcFlowInstrumentType (Distribution Element), IfcSensorType (Distribution Element)
  • Distribution Flow Element > IfcDistributionFlowElement > IfcValveType (Valveor IfcAirTerminalBoxType (Air Terminal Box), IfcDamperType (Damper), IfcElectricTimeControl (Electric Time Control), IfcFlowMeterType (Flow Meter), IfcProtectiveDeviceType (Protective Device), IfcSwitchingDeviceType (Switching Device)
  • Energy Conversion Device > IfcEnergyConversionDevice > IfcTransformerType (Transformeror IfcAirToAirHeatRecoveryType (Air To Air Heat Recovery), IfcBoilerType (Boiler), IfcChillerType (Chiller), IfcCoilType (Coil), IfcCondenserType (Condenser), IfcCooledBeamType (Cooled Beam), IfcCoolingTowerType (Cooling Tower), IfcElectricGeneratorType (Electric Generator), IfcElectricMotorType (Electric Motor), IfcEvaporativeCoolerType (Evaporative Cooler), IfcEvaporatorType (Evaporator), IfcHeatExchangeType (Heat Exchanger), IfcHumidifierType (Humidifier), IfcMotorConnectionType (Motor Connection), IfcSpaceHeaterType (Space Heater), IfcTubeBundleType (Tube Bundle), IfcUnitaryEquipmentType (Unitary Equipment)
  • Flow Controller > IfcFlowControllerIfcValveType (Valveor IfcAirTerminalBoxType (Air Terminal Box), IfcDamperType (Damp), IfcElectricTimeControl (Electric Time Control), IfcFlowMeterType (Flow Meter), IfcProtectiveDeviceType (Protective Device), IfcSwitchingDeviceType (Switching Device)
  • Flow Fitting > IfcFlowFitting > IfcPipeFittingType (Pipe Fittingor IfcJunctionBoxType (Junction Box) [5]
  • Flow Moving Device > IfcFlowMovingDevice > IfcPumpType (Pump) or IfcCompressorType (Compressor), IfcFanType (Fan)
  • Flow Storage Device > IfcFlowStorageDevice > IfcTankType (Tankor IfcElectricFlowStorageDeviceType (Electric Flow Storage Device)
  • Flow Terminal > IfcFlowTerminal > IfcFlowTerminalType (Flow Terminalor IfcElectricApplianceType (Electric Appliance), IfcElectricHeaterType (Electric Heater), IfcFireSuppressionTerminalType (Fire Suppression Terminal), IfcGasTerminalType (Gas Terminal), IfcOutletType (Outlet), IfcStackTerminalType (Stack Terminal), IfcWasteTerminalType (Waste Terminal)
  • Flow Treatment Device > IfcFlowTreatmentDevice > IfcFilterType (Filteror IfcDuctSilencerType (Duct Silencer)
  • Furniture > IfcFurnishingElement > IfcFurnishingElementType (Furnitureor IfcFurnitureType (Furniture), IfcSystemFurnitureElementType (Furniture)

Now in reality when you look at the list the items in red at Type level are almost all mechanical and electrical items. So as Architects there is very little requirement to carry out a manual override. So for Architects using ARCHICAD the Element Classification should not present any issues. It would only really be an issue if you were a Building Services Engineer using ARCHICAD but this can be solved in other ways – see part 2 of this blog.

How to control the one-to-many relationships

Its a pretty simple process to edit the Type Classification.

1. Go to the IFC Manager and navigate to the Type you wish to alter.

2. Edit the Type by selecting it and choosing the small pen symbol in the bottom left.

3. Then select the Type and use the icon directly to the left of the ‘New Property / Classification…’ at the bottom of the IFC Manager dialogue to select the correct Type.

Screen Shot 2015-07-22 at 15.38.50

Image: IFC Manager enables Classification to be altered for some Element Classifications


I do believe that the Element Classification would be easier to understand with the full list of classification available to a user at the Element/Component level and remove the need for manual overriding. For example it would be easier for Architects to understand what a Sanitary Terminal is rather than Pipe Flow Terminal and Air Terminal rather than Duct Flow Terminal. It looks like IFC4 may well simplify this process anyway going forward and the implementation of IFC4 may be an opportunity for Graphisoft to revisit this process.

That said for our users its simple case of ensuring they use the right Element Classification which is driven from our Favorites. As a ‘BIM Mechanic’ I have setup our template so that the user doesn’t have to worry about it.

In part 2 we will look more in detail about how library objects work with Element Classification.

Rob Jackson, Associate Director, Bond Bryan Architects


Terms and conditions

All content provided on this BIM Blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. Bond Bryan Architects will not be liable for any errors or omissions in this information nor for the availability of this information. Bond Bryan Architects will not be liable for any losses, injuries, or damages from the display or use of this information. 

We are happy for others to share our blog pieces through all social media platforms. You may include links to the original blog pieces and use part of the blog to then provide a link to the original content. However we would appreciate it if the content is not reproduced in full on other sites or publications without written consent being granted by Bond Bryan Architects.

This policy is subject to change at any time.

2 thoughts on “Understanding Element Classification for IFC 2×3 exchange in ARCHICAD 18/19 – Part 1 – Relationships

  1. Thanks, Rob! Really looking forward to this series (and I’m guessing you’re going to cover some of the IFC Translator Settings in one of them…).

    It looked like you maybe overlooked Discrete Accessory in the section on ArchiCAD Element Classification. Probably just a minor oversight, and I know you’ve mentioned elsewhere that this is one of the areas that will change in IFC4.

    I’ve said it before, and I’m sure I’ll need to say it again: thank you for taking the time to share some of the findings from your own investigation with those of us who are beginning the journey. The content in your posts is great, and the writing – the manner in which you present the information – is done clearly and professionally.



    • Hi Brian,

      Discrete Accessory is in the second list as at Type level it can be either an IfcDiscreteAccessoryType or IfcVibrationIsolatorType.

      I’m not covering IFC Translator settings in this series but i’m sure i’ll cover that at some point in the future.

      Thanks for taking the time to comment and glad you enjoy them.


Leave a Reply to Brian Spears Cancel reply

Your email address will not be published. Required fields are marked *

5 × 1 =