CCI stands for Construction Classification International (CCI) and represents the construction classification system for the whole building lifecycle. The CCI classification framework is based on EN ISO 12006-2 and tables are divided into two key groups: (
- CCI core tables (Built space, Construction complex, Construction entity, Construction element: Functional system, Technical system, Construction component, see figure 1)
- localized tables (all other tables, see figure 1 – yellow/red cells)
Therefore CCI-EE represents CCI core tables + localized tables from the sections of construction process and construction resource. CCI core tables are based on EN IEC/ISO 81346 standards (except Construction entity, Construction complex – which are under discussions to be added in later revisions). Other CCI-EE tables are based on other standards/guidelines which partly have been used before the CCI-EE applications. CCI core tables can be accessed from https://cci-collaboration.org/ and CCI-EE tables (bilingual – Estonian/English) from https://ehituskeskus.ee/kasulikku/cci/.
In this post we take a look how CCI/CCI-EE can be applied through various software applications which are commonly used in construction lifecycle tasks, covering both, buildings as well as infrastructure. The core idea is to ensure that regardless of the software/application/service, we use the same classification system structure, so that the information we need (level of information need), flows smoothly (incl open data formats) into different other applications and can be human- as well as machine-readable.
Note: Before you start practicing with CCI / CCI-EE in what-ever platform/service, it suggested that you make yourself familiar with core principles of CCI. For example, checking the Estonian Construction Centre website, downloading CCI / CCI-EE tables, reading through the general introduction (available in English as well) or watching seminar videos (mainly in Estonian).
The current list of software platforms:
- Software templates (sample versions)
- Classification examples
- Autodesk AutoCAD
- Autodesk AutoCAD Architecture / MEP
- Autodesk Civil 3D
- Autodesk Revit
Software templates (samples)
- Autodesk AutoCAD Architecture/MEP and Civil 3D (drawing template): CCI-template-ENG-ACAD_CCI-EE-2022.06.0.1.dwt
- Autodesk Revit (BIM Interoperability Tools template): CCI-template-ENG-Revit-BIT_CCI-EE-2022.06.0.1.xlsx
- Autodesk Revit (shared parameters, standardized data): SP_StandardizedData.txt
- Autodesk Revit (simple project template): CCI-template-EST-Revit_CCI-EE-2022.06.0.1.rte
- Estonian versions are now available in another blog post.
Note: Sample templates for AutoCAD Architecture, AutoCAD MEP, Autodesk Civil 3D are based on default templates into where CCI (CCI-EE) sections are added: Property Set Definitions, List Definitions, Classification Definitions.
Note: You have various options when using Autodesk Revit, you can start from Autodesk Revit template (shared as *.rte), using Shared Parameters file (shared as *.txt) or using template for BIM Interoperability Tools (Standardized Data). In addition (depending on Revit & BIM Interoperability Tools version) you may need to copy SP_StandardizedData.txt shared parameter file into: C:\Program Files (x86)\Autodesk\BIT\<Revit version number>\Resources\ (this is known bug in Revit 2023 as well and hopefully it will be fixed soon and updated also in this post). You can also predefine those properties through Revit template. It is simply important that parameters are there (in a project) to which BIM Interoperability Tools want to write to (same names as in a Excel template).
Note: In previous versions of BIM Interoperability Tools this TXT file was named as SP_ClassificationManager.txt, because the classification plugin changed the name, the TXT file was also renamed to SP_StandardizedData.txt (default content stays the same).
Note: File names include the reference to CCI / CCI-EE table version. For example, template “CCI-template-ENG-C3D_CCI-EE-2022.06.0.1.dwt” is updated according to CCI-EE Excel file version: CCI-EE-2022.06.0.1.xls.
In this section sample products are tested according to provided templates. Feel free to test in your own machine.
Autodesk AutoCAD fits into various modelling tasks and it can be used to generate various data for BIM/FM models but as it does not support the addition of property sets and/or classification system that can be exported into IFC, it is skipped in here, but we come back to that later, because general 2D/3D components can be classified through AutoCAD vertical applications like AutoCAD Architecture, AutoCAD MEP, Autodesk Civil 3D. It is also important to mention that as there are many platforms that use AutoCAD as its base platform, please take an extra care to understand how classification system has been enabled in those additional products/plugins.
AutoCAD Architecture / MEP
AutoCAD Architecture / MEP is well-known, construction-component-based, modelling platform before the Autodesk Revit came along (from Autodesk side). And to some extent it is still commonly used, as there are plenty of other software applications that use it as a base product (ex. hsbcad, MagiCAD). It also supports IFC export.
General for AutoCAD Architecture / MEP / Autodesk Civil 3D: The key in here is to use Style Manager. Under the node Multi-purpose Objects > Classification Definitions, you define those classification definitions based on CCI (CCI-EE) tables (figure 2).
As each definition should have some unique value, this is given through properties table (see: CCI-EE, RI table), from where we can find commonly used properties. For example, CCI Component table code is coming from the section AC, and has a unique code of AC175 (figure 3).
The name also includes some text which is as short as possible, but the key is to make it understandable/readable from different packages/software/viewers etc. Therefore, Classification Definition AC175_cciCOcode is so called parameter name which uniquely identifies its content and will be used across other platforms as well. Content of the definition is directly coming from CCI-EE, CO table and includes class code + term which helps to apply it onto objects at later stage. For example, the component term can be used through a unique parameter AC180. Those Classification Definitions can be applied to various design object types through a tab Applies To (pay attention to, that in Architecture / MEP the Applies To list may be shown shorter, as there are less components available than in Civil 3D, figure 4).
Those classification values can be then applied through Properties palette (figure 5) and once exported into IFC, it will be added into IfcClassificationReference section.
IfcClassficationReference after export as seen in Trimble Connect (figure 6).
General for AutoCAD Architecture / MEP / Autodesk Civil 3D: In addition to Classification Definitions, List Definitions are also added into the template (figure 7). This simplifies to generate level codes (reference designation system) in Property Set Definitions.
General for AutoCAD Architecture / MEP / Autodesk Civil 3D: In addition, Style Manager is used to generate various sample Property Set Definitions (available in Templates). Property Set Definition name will start with the section name (data template) from CCI-EE, RI table and will include a number to make that set unique which defines the unique set of properties. Therefore, various (according to level of information need) data templates can be generated, that include different list of properties and because of that a different number part (to stay unique, so that those can be identified). For example, general and classification related properties are combined into data template A010 which can be described through a textual description as A010_Administrative (figure 8). Textual part should be easily recognizable (human-readable) and not confusing. While alpha-numeric part (A010) is mainly for machine-readable tasks.
Some other property sets are generated according to CCI-EE, RI table
Coming back to the data template A010 example or to classification system in more general, in addition to CCI general class code we usually include some additional ID, for example to refer to some type, to some ID value or tag. Such definition in where general class code (in CCI it is that level code part) gets a number or ID value – is called as reference designation and not a classification code itself. Classification code, type number and ID – those are combined according to CCI / CCI-EE general guidelines, exchange information requirements or by agreement with the client.
For example, to identify a component in where its ID and type designation are also included, we can use the following ruleset: QQA01%QQA03 (QQA is a main classification code coming from CCI / CCI-EE and refers to a window; 01 refers to an ID value; 03 refers to type number). Therefore, from the sample template you can find the following properties like AR200_ReferenceDesignation, which combines three different sub-definitions/parameters (AC### properties according to classified object, AJ125_IDNumber, AT800_TypeNumber). Pay attention to that in CCI-EE there are certain rules how to refer to the component, other construction elements, entities, spaces, complexes do have only type reference number. It can be extended by introducing the second numbering part. For example, to refer to a certain university building in where we note its subtype (03) as well as unique ID (01): DD0103 (double digits are added one another, pay attention to that both numbers are double digits). Property Set Definition dialog enables to generate those calculated properties in where various properties are combined (including punctuation marks). See an example for a component in Figure 9.
Those Property Set Definitions can be generated for all objects, or you create separate RDS Property Set Definition for different object types. But you should use different name. Therefore, the names for data templates should be carefully defined and those same names should be used in other platforms as well (note, not all platforms are using data templates – in some platforms, there are just list of properties). As such smooth information flow is ensured in between various platforms, IT-systems etc. Data templates or property groups can be defined based on project stage as well, but single property groups can be used as well (meaning that information is filled in based on project stage, when that particular information becomes available/known).
Below you can see an example: CLASSIFICATION section is used to assign a component’s classification code (figure 10). This will be automatically used in data template A010_Administrative through a property of AC175_cciCOcode and this will be used by AR200_ReferenceDesignationComponent (calculated property) which combines ID and type value as well.
Reference designation code (level code) follows some agreed template. In here it is currently in state that includes CCI, as well as CCI-EE local tables.
In addition to reference designation that identifies some unique component/element, reference designation set (see figure 11) can be used which present the higher levels of reference designations (for example in terms of a component, its technical system, functional system but also an entity or space).
By following previously described principles – components, technical systems etc can be fully classified, identified, by including type/ID number. This would replace any previously used and default designation system (naming, tagging etc.) as there is no actual need to use double classification systems. However, in some projects you may need to use various classification systems (or ID values as separate properties). In those cases, the user should be well-informed why it is a requirement and extra care should be taken not to confuse the information manager (who actually should fill in those values).
Autodesk Civil 3D
Formerly also called as AutoCAD Civil 3D which clearly indicates that it uses AutoCAD as a base product but as it is meant for civil engineering tasks (domain) it clearly differentiates itself from other AutoCAD based products. And again, Autodesk Civil 3D can be a core product for various other vendors (Trimble Novapoint) whose products are built on top of it (may also use AutoCAD, AutoCAD Map 3D – but as stated before, those are with limited support in terms of IFC export support).
The key in here is also to use Style Manager. Note that in Civil 3D there are many more object types (available in Applies To section). Please also check other parts which were explained in section AutoCAD Architecture / MEP (incl List Definitions, Property Set Definitions – which are also available in Civil 3D template as examples).
Therefore, if we want to classify a road that is in a planned stage (no actual road, only a road line is defined) we can use an alignment to draw it and add a classification through Entities table (CE table, figure 12).
We can now move forward and fill in those properties that are known by that time. However it is important to note that as project develops and the alignment gets a more detailed road interpretation, the classification code is still the same. Simply, the detail level has changed, not the classification part. This is also a key principle while a classification system is taken into use. Figure below shows a more detailed version of that same road by defined the corridor model. Key class is still the same (figure 13).
In addition to properties, which change or added as project evolves, we can divide the entity into sub-elements. For example, a road corridor can be divided into construction components (curb, construction layers as surfaces etc.). In that case we can include component (technical system, functional system) code as well. The paving component code for a road top construction layer can be seen in Figure 14.
In addition to entities, CCI-EE enables to classify project stage, construction agents or construction aids. Of course, this information layer can be added through other information layers as well when the design has been exported into some other IT-system (CDE – common data environment) in where component specific additional information/requirements are integrated automatically (for example, what are the key activities that are needed to build a certain object, place a material etc.). Those additional properties are also defined in CCI-EE RI table, unique code can be used through the lifecycle of such information (figure 15).
In a complete reference designation code, those parts define the first part. However, you do not have to use that long code alone. The idea behind the level codes is that you can break the long code into several parts as needed (figure 16).
If we come back to the road, which is in planned stage we can add the following coding:
AC245_cciPAcode: <PA>EAG (pre-design process, project administration, sketching)
AC205_cciRAcode: <RA>ABA (developers, designers, planner)
AC265_cciPPcode: <PP>### (not yet defined)
Note: There are multiple ways how reference designation codes are formed. For example, in addition to a fixed property name, you may want to include a table name into the code itself: Instead of writing just EAG from PA table, you may want to include the table identifier in front of the code: <PA>EAG (in that case it is clearly indicated from which table this comes). Also, automatic code building is then different (will you include the fixed table code + code from the input field, or you type it in with both values). Down below you see an example of that same road alignment as described above.
Autodesk Revit is a key modelling package from Autodesk for buildings, structures, engineering systems (indoor) as well as for structures which belong into infrastructure domain (ex. bridges, noise walls etc.).
The key in here is using BIM Interoperability Tools which includes Classification Manager. But as it simplifies the classification task, additional workflows through parameter definitions/rules can be used to shape the information export as needed.
How to start?
Prequisities: Autodesk Revit basic knowledge, understanding of Project Parameters / Shared parameters and a previous experience to use those.
BIM Interoperability Tools / Standardized Data
Let’s check how some additional plugins may enable to start using some classification system more easily. Download the template (see above, as MS Excel file), open Autodesk Revit, ensure that you have installed BIM Interoperability Tools, click: Standardized Data > Assign Classification (or Assign Picklist)
First use may not show the button called Picklist (top left corner).
Click the first icon (Options) and assign additional path from where downloaded or additional templates can be found (MS Excel files).
In section Picklists, point to the location in your PC / network drive, from where those MS Excel files can be found. Down below just an example.
You may need to fire up Autodesk Revit once more, and the Picklist button should appear. There is an alternative way as well, in where you define a *.ini file (check Autodesk guidance), which should be copied to the location C:\Program Files (x86)\Autodesk\BIT\[Revit version] and include the following content:
[Defaults] ShowPublicDbs=true LocalDbFolder=C:\01-taltech\30_Projects\CCI-EE\templates\standardized-data
Once you click Picklist button, select Select one now.
In section My Library you should see your own (or downloaded) MS Excel files. Select the one you want to use in this time. I will select the one which can be downloaded from the beginning of this blog post.
Once you have pointed to the file, click OK. Then click Click here to load, so that the database will be loaded into Revit.
You can start with the classification workflow. By using the plugin, you can see three different views of classifications (Facility, Element, Space). Let’s start with the Facility tab selected. In here we talk about Construction Entity and Construction Complex. Those values are usually shown in Project Information dialog. But it depends how you assign your properties (Type or Instance). Therefore it may become more easier to load properties first (through Revit project template), check the assignment to certain elements/objects and then start using BIM Interoperability Tools.
Once you select from Facility list CCI table CC or CCI table CE, you can start to classify according to construction complex or construction entity. For example, let’s select A – Residential complex as Construction Complex. You need to click Assign button. After that you can select CCI table CE and assign AA – Single-dwelling house. Again, you do need to click Assign button. This information becomes now available in Project Information dialog.
Close Project Information dialog. Open Standardized Data tool again by clicking Assign Classification. Please note that in some cases you need to overwrite previous codes. In that case, please deselect Options > Blanks only option. Otherwise, no change happens.
Once you move back to Picklist section, and select some element from any view, for example, let’s select a window, the tab Element is activated and from there you can find a separate picklist which enables to add various classification codes one-by-one.
Let’s select the table CCI table CO. We can use a search string window and we can find the correct classification code more easily. Select QQA – Window and click Assign.
Close Standardized Data dialog. Select a window and check its properties. You should see that currently CCI related properties are under Type Properties.
At some point you may need to further classify/identify your component/element. In that case some properties could be instance and some type related. It makes sense to update your current Revit project template or transfer those, additional project parameters from external source (from another *.rte file for example, one is also provided in this post). In an example template there are additional parameters like TypeNumber (type related) and IDNumber (instance related). You can transfer those properties from another project/template by using Manage > Settings > Transfer Project Standards (open both projects first, then fire up this tool from the project into where you want to transfer). You can see the result from the below image in where some CCI-EE related properties are instance properties.
IFC export with classification codes
Before we move forward and check how those class codes are presented in IFC, we need to understand the classification property in terms of IFC. As before, we can include the classification code through the IfcClassificationReference or through a parameter/property. It is best practice that general classification code is available under IfcClassificationReference and other, classification related properties are under property/data sections.
To be able to bring in the IfcClassificationReference connection, there is an additional parameter included with sample Revit template (also in Shared Parameter file) called AJ300_IfcClassificationReference. Let’s bring this parameter into our current project (placing under IFC Parameters). This parameter will be later connected to an IFC related IfcClassificationReference section.
Once added, property is shown depending on its type (instance or type). As we have selected Type this time, it can be seen once we open Type Properties dialog. We give a value as Code: Term. For a window it will be: QQA: Window (both should work, space after a colon or ‘no space’).
Before we export the IFC, we need to point to the parameter which takes over the IfcClassificationReference part. Select Export > IFC. Let’s modify the <In-Session Setup> but you can create a separate one. Click Modify Setup > Property Sets > Classification Settings…
You can now fill in additional classification related properties (incl table version, reference to the classification system etc.). Classification field name = AJ300_IfcClassificationReference, this is the key part for IfcClassificationReference section.
Note: Classification Settings are assigned as follows (note that IFC 2×3 and IFC 4.3 does introduce some changes):
- 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:
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’,’Aken’,#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);