IFC classes

From Wiki.OSArch

All data in IFC belongs to an IFC class. IFC classes can be divided into two categories: rooted and non-rooted classes. Rooted classes inherit attributes from an IFC class called IfcRoot, whereas non-rooted classes do not. This IfcRoot class is special because it provides the following four attributes:

Attribute Required Description
GlobalId Yes A unique identifier of the object, generated by a computer. This is usually created automatically by the BIM authoring tool.
OwnerHistory This special attribute can store names, dates, organisations, software vendor, and contact details of people who are responsible for this object. This is usually created automatically by the BIM authoring tool.
Name This can contain a short text that names the object.
Description A sentence or so to describe the object.

All rooted classes are semantically significant to end-users and created specifically for a project or library. Examples include IfcProject, IfcBuilding, and IfcWall. They are usually annotated in documentation, or named specifically in schedules. These objects are generally useful to end-users, and for this reason can be tracked with a GlobalId and given a Name.

In contrast, non-rooted classes do not have the ability to assign a GlobalId, Name, or otherwise, and are used to store non-project-specific data like XYZ coordinates, RGB colour values, vectors, and so on. One example is IfcCartesianPoint. They are needed from a technical perspective, and are usually automatically generated by the BIM authoring tool, and can usually be safely ignored by end-users. It is important, however, to know that they exist as power users may encounter them when trying to optimise OpenBIM data.

Common rooted IFC classes

Although there are many IFC classes, there are only a handful relevant to different BIM authors, and it is useful to provide a summary of them. Underneath these handful are many subclasses which go into more detail, but knowing these these broad categorisations exist help with an understanding of IFC data. These are all rooted elements.

IFC Class Description
IfcContext This special category holds the starting point of IFC data, by describing either a project or library. There are only two subclasses: IfcProject and IfcProjectLibrary. See IFC projects and contexts for more information.
IfcElement These hold physical built elements that we come across every day, like slabs, columns, beams, furniture, pipes, cables, ducts, and so on. Example subclasses of IfcElement include IfcColumn, IfcBeam, and IfcFurniture. They may have geometry associated with them.
IfcSpatialElement These describe spatial concepts, such as sites, buildings, bridges, storeys, and spaces. These IfcSpatialElement classes can contain IfcElement elements inside them, such as a slab being inside a building storey. Example subclasses of IfcSpatialElement include IfcSite, IfcBuilding, and IfcSpace.
IfcElementType These describe construction types. A construction type may be assigned to an IfcElement, just like a particular IfcWall might have a particular construction type of 2 layers of plasterboard on a metal frame. Example subclasses of IfcElementType include IfcWallType, IfcDoorType, and IfcWindowType.
IfcPropertySet, IfcQuantitySet These classes help store properties and calculated quantities (lengths, areas, volumes, weights, etc) of other classes, such as IfcElement. For instance, it may store a fire rating or length associated with an IfcWall. Some properties names and values are standardised within IFC, but end-users can also create their own properties. See IFC attributes and properties for more information.
IfcStructuralActivity, IfcStructuralItem These are useful for structural analysis. They hold data to describe an anaytical model, including members, nodes, connections, loads, and forces, as well as the results from the calculations. Example subclasses include IfcStructuralCurveMember, IfcStructuralPointConnection, and IfcStructuralPointReaction.
IfcActor, IfcControl, IfcProcess, IfcResource These are useful for scheduling information, describing responsibility, tasks, resources, and timelines for construction sequencing or project planning. Example subclasses include IfcTask, IfcConstructionMaterialResource, and IfcWorkSchedule.

List of IFC classes

There are multiple versions of IFC in use in the industry, and each version has hundreds of IFC classes. This makes it impractical to describe them in their entirety in a separate community wiki. However, there are some resources available for those who do want a list: