Module Contents

class ifcopenshell.api.classification.add_classification.Usecase
ifcopenshell.api.classification.add_classification.add_classification(file: ifcopenshell.file, classification: str | ifcopenshell.entity_instance) ifcopenshell.entity_instance

Adds a new classification system to the project

External classification systems such as Uniclass or Omniclass are ways of categorising elements in the AEC industry, typically standardised or nominated by governments or companies. A system typically contains a series of hierarchical reference codes and labels like Pr_12_23_34.

Classifications may be applied to many things, not just physical elements, such as doors and windows, spatial elements, tasks, cost items, or even resources.

Prior to assigning classificaion references, you need to add the name and metadata of the classification system that you will use in your project. Classification systems may be revised over time, so this metadata includes the edition date.

Common classification systems are provided as an IFC library which may be downloaded from https://github.com/Moult/IfcClassification for your convenience. It is advised to use these to ensure that the classification metadata is standardised.

Adding a classification system will not add the entire hierarchy of references available in the classification. References need to be added separately. Typically, you’d only add the references that you use in your project, see ifcopenshell.api.classification.add_reference for more information.


classification (str,ifcopenshell.entity_instance) – If a string is provided, it is assumed to be the name of your classification system. This is necessary if you are creating your own custom classification system. Alternatively, you may provide an entity_instance of an IfcClassification from an IFC classification library. The latter approach is preferred if you are using a commonly known system such as Uniclass, as this will ensure all metadata is added correctly.


The added IfcClassification element

Return type:



# Option 1: adding a custom clasification from scratch
ifcopenshell.api.run("classification.add_classification", model,

# Option 2: adding a popular classification from a library
library = ifcopenshell.open("/path/to/Uniclass.ifc")
classification = library.by_type("IfcClassification")[0]
ifcopenshell.api.run("classification.add_classification", model,