Software specific classification basics
In this section, we give examples of how classification is enabled in different software, which you can also follow with provided templates presented in the download area.
Table of Content
Autodesk AutoCAD
Autodesk AutoCAD software has been used for a wide variety of drawing and modeling tasks, and it can also be used very successfully as a part of BIM/maintenance models to create information content, but because it does not support property set functionality that can be exported to an IFC file , then it will not be covered further in this chapter. However, we will come back to it through AutoCAD vertical products such as AutoCAD Architecture, AutoCAD MEP and Autodesk Civil 3D, because general 2D/3D components can be classified in these vertical products. Additionally, it is important to note that since many other software use AutoCAD software as their base platform, pay attention to how classification is enabled in these add-on products (or plugins).
AutoCAD Architecture / MEP / Autodesk Civil 3D
AutoCAD Architecture / MEP and Autodesk Civil 3D are common building component-based building information modeling platforms. They are widely used both independently and through additional software that uses them as their base platform (e.g., Architecture / MEP platform: hsbcad, MagiCAD; Autodesk Civil 3D platform: Trimble Novapoint). In addition, they also support IFC export (e.g., IFC 4.3 export is available as a beta version for Civil 3D software, which includes infrastructure components as an update).
In all three softwares mentioned above, we first use the Style Manager dialog to pre-define the classification. We move to the section: Multi-purpose Objects > Classification Definitions, where we find the CCI / CCI-EE classifiers already predefined (in case we use the previously provided template, see figure).

Since each definition must have a certain unique value (parameter name), they are presented through the CCI-EE, <RI> properties table, where you can find the most common properties, which in turn are related to some standard or other source (including ETIM, IFC properties). For example, the CCI component table code derives from section AC and has a unique attribute name: AC175 (see figure).

The name also includes a textual part, which should be as short as possible to make the property easier to read in any software/service, etc. So this property is named as AC175_cciCOcode by default, which uniquely defines the content (class code) associated with this table in any software/platform/web service. The content side comes directly from the CCI-EE, <CO> table, where in addition to the classifier (letter part) you can also find the term (short description) and definition (but also the reference/source from where this parameter comes from, on which it is based). For example, a term as a description can also be included in the information exchange, but it has its own property (in this example: AC180_cciCOterm). These Classification Definitions can be applied to various designed components/assets through the Applies To dialog pane (note that in the Architecture/MEP view this section may be shorter – fewer components – than in the Civil 3D view).

Then these classifiers can already be used through the Properties palette (see the previous section/examples from the infrastructure classification subsection), and if it is transferred (exported) to an IFC file, this main classifier is added under the IfcClassificationReference section.

IfcClassficationReference section after IFC export (Trimble Connect example).

In addition to the Classification Definitions section, CCI classifiers are also included in the drawing template through the List Definitions options (see figure below). This makes it easy to add reference attributes through Property Set Definitions, which consist of both a classifier (the letter part) and a numeric one (e.g., a type identifier, an ID value, or both).

The Style Manager dialog is also used to create different groups of properties (Property Set Definitions). The most important characteristics, related to the basic classification, are included in the drawing template as an example. The name of a Property Set Definition (which can also be viewed as a data template) begins with the letter of the section from which the selected properties come, followed by a number that represents the group of selected properties in the data template. Therefore, according to the exchange information requirements, different data templates can be prepared, which include different characteristics and therefore also a different numerical part, in order to uniquely identify these groups/data templates. For example, the characteristics related to general classification are gathered under data template A010, to which a textual part can also be added: A010_Administrative (see figure below). This textual part should be easily understood (human readable) and not confusing. While the alphanumeric part (A010) is primarily machine readable.

Other property groups can be generated using the CCI-EE, <RI> table as a basis.
Returning now to the example of the A010 data template, or to the classification topic more broadly, in addition to the general CCI class, we often also use an additional identifier, such as a type number, ID or some other designation. Such a designation, where the type number or ID is added to the basic classifier (in the CCI key – lettered part) – is called as a reference designation and no longer a classifier. Classifier, type identifier, ID – they are combined with each other based on CCI’s general guidelines, according to exchange information requirements or by agreement with the owner. Examples can be found in the previous sections. At this point, however, it is worth noting that some properties can also be automated in the Property Set Definitions dialog, e.g., adding properties together.

Property sets (Property Set Definitions) can be created uniformly across all objects, or differently based on the Applies To options, but in this case, the properties group names should also be distinct, so that they can be used more easily or applied automatically. In other words, the names of the group of properties must be carefully considered and the same names must be used in other software that supports the same logic, so that when it is imported what-so-ever IT system, their uniformity and comprehensibility are preserved. Property groups can also be classified by project stage, although one and the same property group can also be used as a universal one, we just don’t fill in information fields that are not yet known for particular project stage.
By following the previously stated principles, we can classify, identify, and add a type identifier to components, technical systems, etc. All of this would replace any previously used naming rules, because there is no point in using the double system. It is true that in certain situations it may be necessary to assign some other ID value to the asset, which is based on the architecture of the used IT system and the asset register, but this can then be noted as an additional property that helps to transfer information from one system to another. And of course, some projects may also use different classification systems in parallel (e.g. parallel use of CCI-EE and Uniclass), but their parallel need must be clearly defined/communicated so that the user does not get confused.
Autodesk Revit
Autodesk Revit is primarily a software package for modeling buildings, constructions and internal engineering solutions, but partially also used in outdoor area modeling (site plan, bridges, noise barrier walls, etc.). The classification system can be introduced here through the Project Parameters functionality, where we first define the properties through which we want to introduce the classifier or any other related parameter. There are several ways to do this. These properties can be defined in the project template (included in the Software templates area as *.rte), but they can be imported into an existing project from another project or from the project template (Manage > Transfer Project Standards, even using the same downloadable *.rte file). If desired, these properties can also be introduced through the Shared Parameters file (included in download area). In this case, we can more easily play around in which section we want to display these parameters (including indication whether it is a type or a unique parameter). Shared Parameters is also important if we want to share these features with other project partners (who also use Autodesk Revit or GUID-based software – while, for example, Autodesk Architecture / MEP / Civil 3D use their own unique ID system, which is Handle).
At the same time, the GUID or Globally Unique Identifier is no longer important in the context of CCI, because our unique identifier will be precisely the name of the property of the CCI itself (2 letters + 3 numbers, see the introductory part above). In general, it is recommended that we first have these properties in the project and set them up in a way that determines where these properties are displayed.
Note. Please note that you can use the template structure as Instance– or Type based. Using the InstanceBased template (all properties suffixed with Inst), all properties related to CCI-EE classification are filled in from the Properties palette. While using the TypeBased template, you fill in the properties specific to the type in the Type Properties dialog (depending on the Autodesk Revit category, property content, the properties are defined either in the Type or Instance setting and with the corresponding suffix Inst or Type). If you use the Shared Parameters file, you must set these settings yourself.
Below is an example where the property AC125_cciCScode (represents the CCI code of the built space) is only associated with the Autodesk Revit categories related to the spaces. Additionally, note that this property is included in the Identity Data section and marked as an Instance property, which means that it can be changed independently for all spatial objects (regardless of whether they are of the same type or not).

In fact, all CCI-related properties are included under the Identity Data section and marked as Instance type (for ease of entry, so that the related parameters are in front of you at once). Below is an example of a window.


However, those properties that are not directly related to classification / identification are included under the Data section (even if the property itself would rather fit under another category that Autodesk Revit offers). In this case, it is easier to find them, because they are all in one place. It is worth noting that in the downloadable Autodesk Revit project template, not all properties are filtered in detail in terms of element categories, so you may find a property in the window part that is not filled anyway. But in newer versions of the template, this is definitely done so that excessive features are not displayed. This can also be done by anyone by editing the list of categories for a specific parameter (previously shown in the CCI code example of a built space).
One CCI-related parameter (from the project template) also sits in the IFC Parameters section. This is the AJ300_IfcClassificationReference parameter, which is filled in the form: CCI code: CCI concept (as they are written in the CCI-EE table, without the type/ID value, it is a main level classification, which moves to the correct section when IFC is exported, see later example). Since this property is type-based, it can be found directly from the Properties palette in the Instance template, and under Type Properties in the Type template. These features are integrated in the specifications (Schedules).
We’ve already covered CCI-centric property input before. At this point, it is also worth noting that since these are Instance properties, it essentially means that we should fill in the corresponding cell for each selectable component, even if it is the same type. But in order to make these entries easier (e.g., to attach the CCI main classifier QQA (Window) to the windows – i.e., as common properties, you can also use various Autodesk Revit functionalities for this, including Select All Instances (selection with a right click and then filling in the common properties on the Properties palette) or instead, do it through the specifications (Schedules tables). There are several possibilities. However, since the classification involves a lot of information that is written in advance and we have to choose the right value from the given list, and not type it in again every time (risk of typos), you can use additional plugins, one example we’ll look at below is the BIM Interoperability Tools.
Although a classification system can also be implemented here simply by defining properties and filling them in, here we look at a separate plugin that allows you to more easily include the content of an existing classification system. For this purpose, the Standardized Data plugin is part of the BIM Interoperability Tools.
Using BIM Interoperability Tools / Standardized Data
Let’s first see how the Standardized Data included in the BIM Interoperability Tools helps to make the classification system easier to use. Download the template (found in the download area, MS Excel file), open Autodesk Revit, make sure you have installed BIM Interoperability Tools, click: Standardized Data > Assign Classification (or Assign Picklist)

The Picklist button (top left) may not be visible at first launch.

Click on the first button Options and add an additional track where you can find downloaded or created additional templates (MS Excel files).

In the Picklists section, add addresses from your computer or network drive where MS Excel files can be found. Just an example below.

You may need to restart Autodesk Revit software for the Picklist button to appear. Alternatively, you can use directory marking through the *.ini file (see also the Autodesk manual), which must be located at C:\Program Files (x86)\Autodesk\BIT[Revit version] and contain the following content:
[Defaults]
ShowPublicDbs=true
LocalDbFolder=C:\01-taltech\30_Projects\CCI-EE\templates\standardized-data
After the Picklist button appears, click on it and then Select one now.

The My Library section displays the MS Excel files found in the previously marked path. Choose the option you want to use. At the moment, I choose the InstanceBased template, which can also be downloaded from the Software templates area.

After making a selection with the mouse, click OK. Then also click Click here to load to load the database.
Next, you can proceed to classification. In other words, the CCI-EE tables are loaded through the plugin and displayed according to the nature of the selected element. It is important to note here that the selected tables help us to fill in precisely the main CCI classifiers (not the associated type/subtype). At the same time, BIM Interoperability Tools can be used “in parallel” with many different templates. In other words, through one template we fill in some specific information known at the project stage (e.g., some part of the information is known in a more general form already in the early stages of the project, “window is window”, “post is post”). Then another template may exist through which we can simplify filling the types. In addition, there may be a separate template through which property values resulting from content requirements can be filled (as options from lists). These properties, which in our example are in the Data section. It should be noted that the template must be defined in such a way that each worksheet contains a project parameter reference, only then it can be filled in. It doesn’t really matter if the project parameter is Type or Instance. This tool simply looks for the specified property in the template and fills it with a selected value. Below is an example where the component’s CCI classifier is defined by two properties (see template worksheet CCI table CO, and upper lines NUMBER PARAMETER, DESCRIPTION PARAMETER).

You can essentially classify using this tool in three different main views (Facility, Element, Space). First, the Facility view. If no components are selected, then we are talking about the Construction complex or Construction entity level classification, and they generally move to the Project Information dialog.

Now, if you first select either CCI table CC or CCI table CE from the Facility pop-up, we classify your building according to the complex/building code. For example, let’s choose A – Residential complex as a complex. Then, at the bottom of the dialog, click Assign. Similarly, we can also make a selection in CCI table CE section, where we select AA – Single-dwelling house, for example. Again we click on the Assign button. This information is then displayed in the Project Information dialog.

Close the Project Information dialog. Run the reclassification tool from the Assign Classification button. Please note that if at some point it is necessary to reclassify components with already existing codes, you must remove the Options > Blanks only check box. Otherwise, the change is not executed.

Now, if you move on to the Picklist section and select an element from 3D view, let’s say it’s a window, the Element pane is activated, and below it, in turn, there is a pop-up with various sub-tables of the classification system. You can now select/fill them one by one for the window.

Let’s choose CCI table CO for example. We can use the search word window, and then we can get to the desired section/code faster. We select it and click Assign.

Close the Standardized Data dialog. Select a window and check its properties. Note that the corresponding properties are filled in the Identity Data section.

With this, we have briefly familiarized ourselves with the nature of the BIM Interoperability Tools plugin Standardized Data. As a side note, you don’t have to close the corresponding dialog if you want to continue with the classification. Simply select the next element or a group of elements (Select All Instances > Visible in View), select the code you want to add and then Assign. Select a new group of elements and continue. You can view the CCI-EE tables on an ongoing basis to add other codes. At the same time, pay attention to the logic of the classification, which was able to add codes/descriptions to one or another component (this was discussed in the previous section, for example, we do not fill in the code of the technical system for a window, but we show it through the reference designation to which this window belongs). Other methods can be used to enter the properties more easily, including through the Dynamo interface. However, it is important to note that the content is still filled in the Autodesk Revit file and not in the exported file. Therefore, Autodesk Revit and, for example, other formats derived from it (IFC, MS Excel export) must contain filled in properties in exactly the same way. Otherwise, we enable a different interpretation of the data based on the selected file/data type.
Note. If you use a project template in the TypeBased setting, all components of the same type will be filled in at the same time. Therefore, the use of the Type template in the BIM Interoperability Tools key can definitely be recommended.
IFC export with the classification codes
Before going to a specific example, we need to understand how classification codes are displayed in IFC. At IFC, we can add the main level classifier to the IfcClassificationReference section (these are CCI codes, concepts that come from the CCI-EE table, without a type or ID value). It also creates a universal CCI-based classification in the IFC structure that helps filter geometry, transfer data, or otherwise view general-level information. While the rest of the properties (including those related to type, ID and reference identifiers, as well as post-CCI properties presented by the content) are displayed in other sections.
In order to include the IfcClassificationReference relationship, a property called AJ300_IfcClassificationReference has been added to the project template. We include this property under IFC Parameters in the active project.
Note. The name of the inclusion depends on whether we use the Instance or Type template. It is important to note here that it is recommended to use the Instance type property, as it can be associated with all main Autodesk Revit categories. If you use the Type setting (given property), for example, rooms would be excluded, as they are only supported by the Instance property. If you have also used the same property in the Type setting, the values there should be copied to the Instance parameter.

We can also prepare a Standardized Data template to fill it in, but in this case we just fill it in manually. The entry of the parameter is based on the logic that CODE: Term. So, for example, to describe a window, we fill in the corresponding field as: QQA: Window (both variants should work, whether a space is placed after the colon or not).

Before IFC export, we still need to specify where the IfcClassificationReference part is read from. To do this, select File > Export > IFC. We will edit the setting <In-Session Stup>, but of course you can also create a new group of settings for this. Click Modify Setup > Property Sets > Classification Settings…

You can then enter various information regarding the classification system in use (including the version of the table, the web address where it comes from, etc.). Also note the box: Classification field name = AJ300_IfcClassificationReference, it plays an important role in filling the IFC structure IfcClassificationReference.

Note. Classification Settings are assigned as follows (based on the IFC version):
IFC 2×3
- Name – IfcClassification.Name
- Source (Publisher) – IfcClassification.Source
- Edition – IfcClassification.Edition
- Edition date – IfcClassification.EditionDate (not exported in current version, IFC 2×3)
- Documentation location – IfcClassificationReference.Location
- Classification field name – parameter name from where class code and term are extracted (code:term)
As found from the exported IFC when opened in text editor:
- #38584=IFCCLASSIFICATION(‘Ehituskeskus’,’2022.06.0.1′,$,’CCI-EE’);
- #38585=IFCCLASSIFICATIONREFERENCE(‘www.ehituskeskus.ee’,’QQA’,’Window’,#38584);
IFC 4.x (IFC 4.3 does introduce some changes)
- #27889=IFCCLASSIFICATION(‘Ehituskeskus’,’2022.06.0.1′,$,’CCI-EE’,$,$,$); (differences in terms of IFC 4.3, check webpage)
- #27890=IFCCLASSIFICATIONREFERENCE(‘www.ehituskeskus.ee’,’QQA’,’Window’,#27889,$,$); (differences in terms of IFC 4.3, check webpage)
Export the IFC file (ensure that you have selected valid property sets) and check the IFC in a viewer. We keep the same IFC viewer as before: Trimble Connect.

Please note that IFC viewer may show those parameter names differently:
- Location – www.ehituskeskus.ee – IfcClassificationReference.Location
- ItemReference – QQA – IfcClassificationReference.ItemReference
- Name – Window – IfcClassificationReference.Name
- RelatingClassification.Source – Ehituskeskus – IfcClassification.Source
- RelatingClassification.Edition – 2022.06.0.1 – IfcClassification.Edition
- RelatingClassification.Name – CCI-EE – IfcClassification.Name
Note different sections: Data and IfcClassificationReference
Usually, we do not need to present the same data twice. And it will be connected as much as possible (as shown before in where parameter value from IfcClassificationReference was read by a parameter in properties section). So, in this case it may be seen an unnecessary to include the window classification code under Data as well as under IfcClassificationReference. Hereby we want to point out the different ways to do it.
Pay attention to that different IFC viewer may present the same data in different sections. For example, BIMcollab does not have a section called IfcClassificationReference, instead it will reflect that part under the first tab, Summary.

Solibri Anywhere shows this data under Classification tab.

BIMvision shows this data under Classification tab as well.

In terms of entity, this information is not shown directly but can be acquired from the IFC file as:
#543727=IFCPROPERTYSINGLEVALUE('AC145_cciCEcode',$,IFCTEXT('AA'),$);
#543728=IFCPROPERTYSINGLEVALUE('AC150_cciCEterm',$,IFCTEXT('Single-dwelling house'),$);
Which is connected into IFCBUILDING:
#98=IFCPROJECT('3ZGD7y6S5209$mGLi_sPlj',#20,'001-00',$,$,'Sample House','Project Status',(#93),#90);
#99=IFCPOSTALADDRESS($,$,$,$,('Enter address here'),$,'','Boston','','MA');
#100=IFCBUILDING('3ZGD7y6S5209$mGLi_sPli',#20,'Samuel Macalister sample house design',$,$,#16,$,'Samuel Macalister sample house design',.ELEMENT.,$,$,#99);
With this, we have familiarized ourselves with the technical side of classification using Autodesk Revit as an example. By following the previously stated principles, we can classify, identify, and add a type identifier to components, technical systems, etc. All of this would replace any previously used naming rules, because there is no point in using the double system. It is true that in certain situations it may be necessary to assign some other ID value to the asset, which is based on the architecture of the used IT system and the asset register, but this can then be noted as an additional property that helps to exchange information from one system to another. And of course, some projects may also use different classification systems in parallel (e.g., parallel use of CCI-EE and Uniclass), but their need must be clearly defined/communicated so that the user does not get confused.