IFC projects and contexts

From Wiki.OSArch

IFC data is structured in a hierarchy. This hierarchy must have a starting point. In IFC4, there are two special IFC classes which can contain the rest of the IFC data:

  • IfcProject - this is the most common "container" of IFC data, used to store information specific to a particular project
  • IfcProjectLibrary - this can store BIM data that is project agnostic, to be reused between multiple projects

Both of these classes inherit from the IfcContext IFC class. For this reason, they can also be known as the context of the IFC data. All the rest of the IFC data, such as IfcBuilding, or IfcWall, and so on, relate back to this starting context.

Both IfcProject and IfcProjectLibrary have a series of attributes which can be stored with it.

Attribute Required Description
GlobalId Yes A unique identifier of the project, 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 have started the project. This is usually the client. This is usually created automatically by the BIM authoring tool.
Name Recommended This will be the project code name. Many projects have a short code, such as "42FOO", as well as a longer name, such as "42 Foo Street, Residential Tower B". This Name attribute should store the short code, "42FOO".
Description Recommended This allows you to write a sentence or so to describe your project or library.
ObjectType Recommended This can contain some text that categorises your project or library. For example, it might say "Residential" or "Commercial" for projects. It might say "Furniture" or "Mechanical" for a library. There is no standard of what categories are valid or invalid. It is up to you.
LongName Recommended This will be the full name of the project or library. Many projects have a short code, such as "42FOO", as well as a longer name, such as "42 Foo Street, Residential Tower B". This LongName attribute should store the full name, "42 Foo Street, Residential Tower B".
Phase Some text denoting the current project phase, or life-cycle phase of this project like "A" for phase A / stage 1. Does not necessarily apply to a library. There is no standard of what is considered a valid phase name.
RepresentationContexts One or more This contains a list of possible graphical or geometric representations of the project. For more information see below. This is usually created automatically by the BIM authoring tool.
UnitsInContext This contains a list of unit definitions that are related to the project. Commonly, a project may define a series of metric units or imperial units, and specify what is the default unit for length, area, volume, weight, time, and currency measurements. It is also possible to define custom units. This is usually created automatically by the BIM authoring tool.