Color Gradients of Components through Classification

Classification in Solibri Model Checker (SMC) allows you to colorize components based on their classification names.  In the previous article, Creating Classifications in SMC, we provided you a detailed guide to create your own classification that included a small section on colorization of classifications.  In the article Using Advanced Classification in ITO, we further developed a workflow where classifications were used in Information Takeoff.

In this article, we will guide you through the steps to create a classification that colorizes components using a green-to-red gradient based on the lowest-to-highest value of a property.  This provides aid for further understanding property information visually in the 3D view and in your Information Takeoff definitions.

We will work with a plumbing model from the Arboleda Open BIM Project created through Vectorworks, which is publicly available on the Vectorworks website:

http://www.vectorworks.net/bim/projects/135

The color coding is based on the Nominal Size of pipes within the model. You can download the files used in this article from the following ink:

Pipe_Color_by_Nominal_Diameter.zip

Open SMC, and from the File layout, open the Arboleda_Bldg-Plumb_optimized.zip IFC file in SMC.

Select a pipe in the model. In the Info view, under Pset_PipeSegmentTypeCommon, you’ll find a NominalDiameter property.  This length value is what will be used to colorize components in the view using a classification.

Click the Information Takeoff layout and in the Information Takeoff view, click the  New Information Takeoff button to create a new Information Takeoff definition.

Enter a name for the ITO, add Pipe and Pipe Fittings to the component list, and click OK.

In the ITO that is created, add a new column.  Select Pset_PipeSegmentTypeCommon for the Property Set Name. Select NominalDiameter as the property.  Set the Format to Length and mark the Grouping checkbox to group components by this value.  Click OK.

Click Takeoff All.  You’ll see the different NominalDiameter length values for all the pipes in the model. Notice the range is between 20mm and 100mm.

Open the Classification view by clicking the  Add View button in the top-right of SMC and selecting  Classification.  In the Classification view, click the  Add Classification button.  Browse to the Gradient.classification included in the link at the top of this article.

Notice that there are 10 classification names listed that are ordered 01-10 in the Default Classification Names table. Each has a color transitioning from green to red respective to its number. This provides a gradient to colorize components based on a property value.

Enter a new name for the classification:

Add Pipe and Pipe Fitting to the component list:

Since pipe fittings do not have a Nominal Diameter, we won’t be able to color code them using that value.  However, we still wish to show these in the view to understand the runs of pipes without missing segments.  For this reason, we add Pipe Fittings to the list.

To set the color of the fittings double-click the cell in the color common and select a color.  In this case, we use grey as it won’t distract from the pipe colors.

Click the Classification Rules tab and notice the Property for Gradient column. This will be the column that we set to the property we wish to base our gradient on.

Double click the column header to edit it.  Select Pset_PipeSegmentTypeCommon as the property set name.  Select Nominal Diameter as the property name, and select Length for the format of this property.

Recall that our Nominal Value range is from 20mm to 100mm. You should use this range to figure out the increments in numeric constraints so the components with the lower values are colored green (01), transitioning to yellow (05) at the median values, and the highest values are red (10). For simplicity, we will use increments of 10mm for each color starting at 0. However, since the range is 20-80, you could have more precise coloring by starting at 20mm and using increments of 8mm to reach 100mm in 10 increments.

Click the  Add Row button. In the new row created, double-click in the Pset_PipSegmentTypeCommon cell to edit the Numeric Constraints.  For the lower constraint set the operator to greater than > and enter 0 mm for the value.  For the higher constraint, set the operator to less than < and set the value to 10mm.

Click the  Add Row button again.  The row will be duplicated below.  This time edit the numeric constraints by setting operator to greater than or equal ≥ and set the value to 10mm. For the lower constraint, set the operator to less than < and set the value to 20mm.

Repeat this process 7 more times setting the Numeric Constraints in increments of 10mm until you get to the 10th row. For this row, set the lower constraint to greater than or equal ≥ and to 90 mm. For the higher numeric constraint, remove the operator and value and click OK.

Set the classification names from 01 to 10 corresponding with the increment rows.

Lastly, we still need to classify pipe fittings. Click the  Add Row button and set the Component to Pipe Fittings. Double-click in the Pset_PipeSegmentTypeCommon.NominalDiameter cell and click the Remove button to remove the constraint. Click OK in the Edit Numeric Constraints window.

Set the Classification Name for this Pipe Fittings row to Pipe Fittings and click OK.

Select the classification you created in the Classification view and the 3D view will be updated to display pipes color-coded using a gradient of green-to-red based on their sizes.  You can see below it is much easier to determine the differences in their sizes visually.

This classification can also be used in the ITO definition we previously created.  Select the Information Takeoff layout and in the Information Takeoff View, add a column to the existing takeoff. Set the column type to Classification and set the classification to the classification you created. Click OK.

In the Information Takeoff view, double-click the right-most column header labeled Color. Set the Value by Column to the classification column you just added. This will colorize components based on the same colorization of the classification names. Click OK.

Click Takeoff All. You’ll see the pipes colorized from green-to-red based on their NominalDiameter property along with the values in the Information Takeoff view.

In the Information Takeoff view, double-click the Pipe Color by Nominal Diameter column header to edit the column.  Set the Editable checkbox and click OK.

You can now edit the values in the Information Takeoff view for this column to override the classification of components, which will then change the coloring of components in the 3D view. Below, we’ve changed the classification of 20mm pipe to 01. This makes it easier to differentiate the 20mm pipe from the 25mm pipe in the 3D view.

There are many other possible applications for creating gradient colors of components. Other applications could be to show variations in beam and column weights or to show the differences in airflow along ductworks as it branches off along the path from the air handling unit to the terminals.

 

Advertisements
Color Gradients of Components through Classification

Space Groups and Areas in Revit

In a Building Information Model (BIM), it is common to model spaces defined as gross areas, apartment areas, departments, etc. that group other spaces. This is accomplished in Revit through area plans, and the IFC exporter in Revit provides area information in the “Other” property set.

Below is a gross area space named Circulation that contains circulation rooms (as defined in Revit) such as Lobby 102, Stair 132, and Corridor 107, listed in the Space Grouping view:

issue_2017_01_tt_20_01

Notice in the Info view, the “Other” property set contains the Area Scheme ID and Category properties.  The Area Scheme ID provides the name of the area scheme, such as Gross Area, Apartment, etc., and the Category property states whether the space is a room, space, or area.  Also, notice in the Space Grouping view, the Space Group Type column lists Gross Building, which is the same value as the Area Scheme ID.  This value is the classification name from the Space Grouping classification.

If the Corridor 107 room is selected, the Area Scheme ID property is not defined because the category of the space is a room and not an area.

issue_2017_01_tt_20_02

These properties in the Other property set make it simple to classify space groups in SMC using classification rules in the Space Grouping classification.  Below, we’ve added a row to the classification rules that matches any spaces that have the value “Areas” in the Other.Category property. Those area spaces will have their classification name set to whatever the value is of the Other.Area Scheme ID.

issue_2017_01_tt_20_03

You can download this modified space group classification from the link below to try with your own Revit models that contain area plans:

Space Grouping.classification

With your space group classification properly setup, you can use the Space Group Containment rule to check that your space groups contain the required number of space types.

Space Groups and Areas in Revit

Understanding the Power and Utility of Wildcard Characters in Classification Rules

In an earlier article, Creating Classifications in SMC, we briefly touched on using wildcards characters in classification rules. This article will provide more details on their use and provide tips to avoid misclassifications.

There are two wildcard matching characters that can be used in classification rules: * and ?

* Matches 0 or more characters
? – Matches exactly 1 character

The best way to learn their use is by looking over some of the existing, complex classifications that come with SMC.  One is the latest, updated “Building Elements” classification that classifies components based on their properties to a Uniformat II classification.

Open the SMC Building.smc example project that comes with SMC, and check the classification settings of the Building Elements classification.

tt02-01

Notice many of the cells in the table contain only a single asterisk (*).  This means to ignore the cell and whatever the value is of that property isn’t required to match anything specific to classify the component.  As an example, notice the first 3 rows for column, pile, and footing components. It doesn’t indicate what the value is of the type, layer, and name properties.  These components will always be classified as “A2010 Basement Excavation”.  In fact, the Name column contains asterisks for all rows and could simply be removed from the table without affecting the classification. However, it was left in, as your building authoring tool and its libraries may have component names that more easily and effectively can be used to classify objects to UniFormat II, and you may wish to add your own rows to classify, based on Name.

It is important to note that asterisks must be used rather than leaving a cell blank to ignore the value.  If the cell is left blank, that row would only match if the value of the property was an actual empty string or missing value.  As such, you would only use a blank cell to classify a component based on a missing property value.

Notice also that wall components are classified as B2010 Exterior walls in the 5th row of the table.

tt02-02

However, if you look at how the walls are classified in the model, some are classified as B2011 Exterior wall construction, B2015 Balcony walls and Handrails, and C1010 Partitions.  This is because the best match radio button is selected in the bottom of the classification rules.  If you switch the settings to First Match, you’ll see that all walls are then classified as B2010 Exterior Walls.

When Best Match is used, whatever classification row has the most characters matching is the one used to classify.

Notice the rows that classify walls as C1010 Partitions.  Any walls with a type value that starts with “Basic Wall:” and thereafter contains the word “Interior” is classified as C1010 Partition.  This is due to the cell containing “Basic Wall: *Interior*“. The same holds true for walls with a type value that starts with “IW” using the matching cell “IW*.

Notice the rows for walls with type values that start with “EW”.  The rows that contain dashes and a number are more precise wall classifications, such as EW-3 which is classified as B2015 Balcony walls and Handrails.

However, if the number is anything other than 2, 3, or 4, but the type value still starts with EW, the wall is classified as B2011 Exterior Wall Construction.

 

Understanding the Power and Utility of Wildcard Characters in Classification Rules

Creating Your Own Custom Disciplines Through Classification

In the previous article Disciplines in SMC, we explained how the discipline of a file opened in Solibri Model Checker (SMC) is useful in the color mapping of components and use in rule filters. Currently, these disciplines are hard coded and limited to those in the list below:

uc-01-01

The discussion of disciplines arises during coordination when checking for intersections between systems. Namely, what discipline to set files to as they are added to the federated model and what disciplines to check against each other using the general intersection rule in SMC.  Classification within SMC makes it simple to automatically map your files using your own naming convention to any custom discipline you would like to create.

For example, you may have a different naming convention of disciplines and use the term “Mechanical” rather than “HVAC”.  Also, you may have a “Communications” model that is differentiated from the “Electrical” model(s), for which a discipline doesn’t exist within SMC.

For more information on classification see:

Creating Classifications in SMC

Using Advanced Classification in ITO

You can follow along as we create a “Discipline by File Name” classification for use in interference checking using the example model linked here:

disciplines_advanced_sample_project.smc

This example model was created by exporting the Architectural, MEP, and Structural versions of the advanced sample project that comes with Revit 2016.  For the MEP sample project, we also isolated components during each IFC export based on the discipline of Mechanical, Electrical, and Plumbing to further divide the entire federated model into 5 IFC files based on each discipline.

When you first open all 5 IFC files, the Ensure Model Disciplines window will open to allow you to set the short name and discipline from a set list in SMC.

Short names are always manually entered or left to their A-Z defaults. However, the discipline can be automatically mapped based on the application that created the file, or the file name.  The file was exported from Revit 2016, which is a building authoring tool that can contain components from any discipline, unlike other applications that specialize in a specific discipline, such as Tekla Structures, Revit Architecture, Revit Structure, etc.  As such, it simply defaults to the Architectural discipline. The out-of-the-box File Name mapping is left as *.* and to ignore the file name, as it is up to the user to define their own mappings based on their own file naming convention.

uc-01-03

We’ll manually set the short name to the first letter of the discipline and set the discipline to one of the hard coded disciplines in SMC. For instance, we map the Mechanical file to HVAC and the Fire Protection model to Sprinkler. This will allow you to use the out of the out-of-the-box interference detection rules that come with SMC to check discipline against discipline.

uc-01-04

For example, one such rule checks all Building Services components that intersect with beams and columns from Structural models.  Below, we see in the results view there are 207 intersections with beams and 30 with columns.  In the Checked Components view, these intersections occur in the electrical, mechanical, plumbing, and structural models.

uc-01-05

Opening the rule parameters of this rule, in the component filter table for Component 1, only beams and columns from disciplines related to Structural components (Prefab Concrete, Steel Structure, Structural) are checked.  For Component 2, any component excluding Covering, Space, Cable from disciplines related to Building Services (Air Conditioning, Building Services, Cooling, Electrical, etc.) are checked.

uc-01-05a

Listing all the various disciplines that fall under the category of Structural vs Building Services models leaves flexibility for users for what they select as their disciplines when they first load their models.

You are able to isolate the results by discipline though selecting the file(s) of that discipline in the Checked Components view, setting the file(s) to the selection basket, and selecting Filter with Selection Basket (some) in the Results view.  Below, we see there are 169 intersections with beams and 16 intersections with columns between the HVAC model and the Structural model.

uc-01-06

The intersections between just the electrical model and structural model can be viewed using this same method as seen below:

uc-01-07

Depending on the number of files, disciplines, and naming conventions, you may find that you wish to fine tune your interference detection checks to individual disciplines and/or even disciplines, such as “Communications,” that are not included in the hard coded ones.  This can be achieved through the use of classification.

Open the Classification view by clicking Add View ADD_VIEW > Classification SMC Classification Icon.  You’ll find a “Discipline by File Name” classification is loaded.  If you expand the classification, you’ll find that components in the model are classified by their discipline:

uc-01-08

Open the settings of the Classification by selecting the classification and clicking the Settings Settings button. In the Components filter parameters table, you see that all components are to be classified.  In the Default Classification Names, you see a listing of various disciplines.  You can add to or remove these depending on your own requirements.  Show Unclassified is marked to make it easy to see if any components in the model haven’t been classified to a discipline.

uc-01-08a

Click the Classification Rules tab to view how the file name is used to map to a specific discipline.  Every component has a Model parameter in the Identification property group, which is the short name and file name of the model that component resides in. For example, if “ELEC” appears anywhere in the file name, the components in the model are mapped to Electrical. This is achieved using “*ELEC*” to match the value of the Model parameter. If you specify the discipline in the file naming using a single character separated by underscores (_) or dashes (-), such as in the name “01_A_RME_Advanced_Sample_Project,” those components are classified as Architectural using “*_A_*” to match the value of the Model parameter. Lastly, you can specify the discipline in the file name using a single character at the beginning of the file name preceding a dash or underscore. However, since the short name of a file precedes the file name in the Model parameter, “(*) P-*” is used to match the value “(P) P-rme_advanced_sample_project” to Plumbing.

Depending on your own naming convention and disciplines, you can modify the values in the Model column to match your file names accordingly.

uc-01-09

In the Checking view, if you select the rule STRUCT vs MECH, the same results are listed for Beams and Columns in the Results view as the out-of-the-box rule “Building Services and Beams and Column” when filtering by selection basket after selecting the HVAC model, seen in the prior screenshot.

uc-01-10

Likewise, if you select the rule STRUCT VS ELEC, you’ll see the same results as previously seen in the “Building Services and Beams and Column” after selecting the Electrical model and filtering by the selection basket.

uc-01-11

If you open the rule parameters of the STRUCT VS MECH rule, you’ll see that rather than using the Discipline parameter, the “Discipline by File Name” classification is used to filter what components to include.

uc-01-12

Creating your own discipline classifications can make it easier when setting up your coordination rules based on disciplines if you have disciplines outside the ones available out of the box in SMC.  Using classification rules, you can automatically map your files based on their filename to those disciplines.

 

 

Creating Your Own Custom Disciplines Through Classification

SMC v9.6 introduces date-based checks

The recently released Solibri Model Checker (SMC) version 9.6 introduces support for “Date” properties.  Rather than plain text, these properties include Month, Day, Year and Time of Day information from IfcDate properties.  This allows components to be classified and visualized based on schedule information, as well as checks to be run against workflow schedules via rulesets. The following article provides details on how to set up the visual display of date properties in the settings of SMC, create date-based schedule classification, and generate Information Takeoffs that group components based on a construction schedule.

Date Unit Settings

SMC allows you to customize the date and time formatting, based on your own localization by clicking File > Settings > Units. For example, in the United States, dates are often formatted as MM/DD/YYYY as seen in the settings below:

File > Settings > Units with Date format set to MM/DD/YYYY
File > Settings > Units with Date format set to MM/DD/YYYY

This results in all date information in SMC being displayed in this format, as seen in the Info View below:

Dates Displayed as MM/DD/YYYY
Dates Displayed as MM/DD/YYYY

In many other countries, dates are formatted as DD/MM/YYYY, which is one of 18 settings that can be chosen from the File > Settings > Units > Date Format dropdown:

File > Settings > Units with Date format set to DD/MM/YYYY
File > Settings > Units with Date format set to DD/MM/YYYY

Through this date format setting, all dates are displayed as DD/MM/YYYY as seen below:

Dates Displayed as DD/MM/YYYY
Dates Displayed as DD/MM/YYYY

Classifications Using Date Information

The Classification View has been enhanced to support Date information in SMC. For more information on Classification in Solibri Model Checker, please follow the link below:

https://solibri.wordpress.com/2015/06/30/creating-classifications-in-smc/

In the Classification Settings, a Use Dates as Classification Names checkbox has been added. When selected, only dates can be used as classification names, and a date picker is provided to ensure a valid date is entered in the Classification View screens.

Date Information in Classification Settings
Date Information in Classification Settings

When creating any classification, SMC will look at a property of a component and based on the value (in this case, the date) generate distinct date classifications for use in SMC.

To begin using date information in a Classification, first ensure the date information is present in the model. In this example, the date information is coming from the WORKFLOW information tab.  Each component in the model should contain this schedule information.

WorkFlow tab displaying Schedule Start and End
WorkFlow tab displaying Schedule Start and End

Switch to the Information Takeoff view to display the Classification window.  From here, we can generate new Classifications using the date information.

Select Classification Settings.  In this example, the Classification is using the property PLANNED_START_E to define the classifications, and the Classification Name will be the same as the value of the property (in this case, the date).

Classification Rules tab showing the PLANNED_START_E property usage
Classification Rules tab showing the PLANNED_START_E property usage
Schedule Classification sorted by PLANNED_START_E date
Schedule Classification sorted by PLANNED_START_E date

If the PLANNED_START_E date changes with new updates of the model, the Schedule Classification will also change to reflect the new dates.

In Classification Settings you can create a date constraint to limit the dates that are classified by double clicking on the PLANNED_START_E column. Below, the constraint has been set to only create a Classification for dates between March 31, 2015, and April 30, 2015.

Date Constraints limit classified components to a specified range of start dates
Date Constraints limit classified components to a specified range of start dates

As a result, the only displayed Classifications listed under Schedule are dates within the specified date range.

Displayed dates are all between March 31, 2015 and April 30, 2015
Displayed dates are all between March 31, 2015 and April 30, 2015

In addition to being a useful tool for managing the model and checking schedule compliance, Schedule Classifications can also be used in an Information Takeoff.  The construction of components can be visualized by selecting rows sorted by construction start date. Other quantity information such as counts of doors or windows, or lengths of beams can be added as columns as well, to provide schedule-based quantity takeoffs.

Example of Information Takeoff results sorted by schedule date
Example of Information Takeoff results sorted by schedule date
SMC v9.6 introduces date-based checks

New in V9.6: Generating Slides Directly from Information Takeoffs

The newly released version (9.6) of Solibri Model Checker (SMC) includes an option to create presentation slides directly from information takeoff definitions. The Information Takeoff view in SMC is a perspective that allows a user to visualize and aggregate model components based on their property information.  After generating an Information Takeoff, you might wish to generate a set of slides or views showing each row, or selective rows of the Information Takeoff results.   These slides can remain in the model for later use in review sessions, or they can be exported in a formatted report.

The following article demonstrates this capability through a scheduling Information Takeoff that groups components based on their start dates of construction.  In addition to automatic slide creation through Information Takeoff, version (9.6) introduced the entirely new ‘Date’ unit type.  These separate new capabilities complement each other well in version (9.6). A more detailed explanation on date information in SMC can be found here:

SMC v9.6 introduces date-based checks

To begin, run an Information Takeoff (ITO) and generate the results you would like to visualize (for help using ITO, select the video icon in the upper right corner of the Information Takeoff view to watch a short video explanation).

When done, the model should be color-coded based on the properties defined in the takeoff.  In the example below, a takeoff has been run separating all model components by start date:

Information Takeoff of Scheduled Start Dates of Construction
Information Takeoff of Scheduled Start Dates of Construction

Select individual rows of the Takeoff to display the components built on each date, separately.

Components Isolated in the 3D View Based on Start Date
Components Isolated in the 3D View Based on Start Date

These individual row displays can be auto-generated as slides/views from the Communication Tab.

From the Communication Tab, select “Create Presentation.”

You will see the options to generate a slide “From Information Takeoff Results.”

New Presentation Option: From Information Takeoff Results
New Presentation Option: From Information Takeoff Results

The Presentation from Schedule Visualization Window dialog will open.

Presentation from Schedule visualization dialog
Presentation from Schedule visualization dialog

The following is a listing of the various options of the Presentation from Schedule visualization dialog:

  • Create Issues From Rows:
    • Create Issues from Rows: If you would like to see the views as they are displayed when selecting a single row in Information Takeoff, choose the option to view “Each Individual Row.”
    • Include Previous Rows: Select this option if you would like the views to be cumulative, so the previous rows are added to the new view. For example, if you want the first slide to display the footing built on 2015-04-29 and the second slide to include both the footings and the columns that are built on 2015-04-29, choose the option to “Include Previous Rows.”
  • Define Issue Details By Template Columns: These options allows the user to decide which Column from the Information Takeoff View will be used as the Title and Description for the slides/views.
  • Components and Visualization
    • Link Components to Issue: Components in the slide will be linked to the view for later use in the Detailed Report (XLS) option.
    • Autozoom to Components: Positions the view as close-in as possible to fill the 3D window with the relevant components.

Under Create Issues From Rows, select Include Previous Rows, and then click Create.

Individual Slides Automatically Created from Individual Information Takeoff Rows
Individual Slides Automatically Created from Individual Information Takeoff Rows

The slides displayed now reflect the individual rows from the Information Takeoff.  These slides will remain with the .SMC model for future use, and can also be exported via the “Report” button.

From Report, Select the XLS button and select Ok (For this example, we will generate an XLS report, but note that other options, such as PDF and BCF are available as well).

Excel will automatically open and display the new XLS report, reflecting the slideshow that has been generated in SMC using Information Takeoff.

A Coordination Report Generated from Information Takeoff Slides
A Coordination Report Generated from Information Takeoff Slides
New in V9.6: Generating Slides Directly from Information Takeoffs

UniFormat Check Ruleset

The following article will demonstrate how you can visualize and check components based on their UniFormat categories within Solibri Model Checker (SMC).  As an example, if you are using UniFormat II categories for cost estimation, you’ll need to ensure that the UniFormat codes in the model match the version used in your estimating sheets.  If UniFormat II is being used and you import a window library that used UniFormat 2010 to classify itself, its C1020 Interior Windows UniFormat 2010 category may cause those components to be classified as C1020 Interior Doors in UniFormat II, thereby incorrectly raising the cost of doors, while lowering window cost.  In SMC, you are not only able to check that the UniFormat description matches, but that the components classified as C1020 Interior Doors are in fact of the door component type and not windows.

Furthermore, through classification, different versions of UniFormat can be mapped to one another. Therefore, if you are using Revit, you can automatically map its specific UniFormat II codes to UniFormat 2010.

The resources and sample model used in this article are available here: UniFormat Check

Please read the ReadMe.txt file in the zip folder for information on copying resources to their proper locations.

The model used in the example is an IFC export of the rac basic sample project.rvt. The sample project from Revit is also available here: Autodesk Revit 2014 Sample Project Files

UniFormat

UniFormat is a standard used to classify components, based on their function, into hierarchical categories. It is used in specifications, such as those for Level of Development (LOD), as well as cost estimation/analysis. Since these are standardized categories common to most buildings, it provides consistency in project management, analysis, and reporting.

At the highest Level 1, general major group categories exist:

  • A SUBSTRUCTURE
  • B SHELL
  • C INTERIORS
  • D SERVICES
  • E EQUIPMENT AND FURNISHINGS
  • F SPECIAL CONSTRUCTION AND DEMOLITION
  • G BUILDING SITEWORK

These categories are divided further into different individual groups at Level 2. For example, A SUBSTRUCTURE is divided into A10 Foundations and A20 Basement. Level 3 divides them further, dividing A10 Foundations into A1010 Standard Foundations, A1020 Special Foundations, and A1030 Slab on Grade. These are further divided into Level 4 or greater categories that often differ based on the version of UniFormat used.

For example, the level 4 category for Trenches has the code A103003 in NAVFAC UNIFORMAT II, A103004 in ASTM UNIFORMAT II, an undefined number in the code A1030._ in CSI/CSC UniFormat 1998 edition, A1030400 Trenches in the UniFormat version used in Revit, and A4030, a very different code altogether, in CSI/CSC UniFormat 2010 edition.

SMC Classifications

Hierarchical classification systems that use numerical codes such as UniFormat, MasterFormat, OmmiClass, UniClass, etc. lend themselves well to Solibri Classifications through the use of classification rules that include the asterisk (*) wildcard matching character, which matches zero or more characters.   For example, A1030* matches A103003 Trenches, A103004 Trenches, A1030._ Trenches, A1030400 Trenches from the various UniFormat versions for the Trench UniFormat II category to A1030 Slab on Grade. Likewise, through the use of mapping classifications, you can map to properties in multiple locations such as Identity Data.Assembly Code or some other location where you are storing UniFormat information in your components.

The following classifications are used both to visualize and check components based on their UniFormat category:

Component Types
Classifies components based on their component type (e.g. Door, Suspended Ceiling, etc.).  This classification is used to determine whether the component type fits the UniFormat code.  For example, the check for UniFormat II checks components classified as C1020 Interior Doors to ensure they are doors and not windows, as UniFormat 2010 has the classification C1020 Interior Windows.
UniFormat – II vs 2010
Classifies components based on their UniFormat code and description. The classifications are one of the following:

  • UniFormat 2010: Either the code only exists in UniFormat 2010 (e.g. A40 SLABS-ON-GRADE) or else the code exists in both UniFormat II and 2010, but the description is taken from UniFormat 2010 (e.g. C1020 Interior Windows);
  • UniFormat II: Either the code only exists in UniFormat II (e.g. C20 Stairs) or else the code exists in both UniFormat II and 2010 and the description is taken from UniFormat II (e.g. C1020 Interior Doors).
  • UniFormat II and 2010: The code is the same in UniFormat II and UniFormat 2010. The descriptions are either the same (e.g. B1010 Floor Construction) or they differ but describe the same component (e.g. B30 Roofing vs B30 Exterior Horizontal Enclosure).
  • UniFormat II or 2010: The code has changed in UniFormat 2010 and the code from UniFormat II now exists in 2010 as a different classification (e.g. C1020 Interior Doors vs C1020 Interior Windows).  The description doesn’t match that from either UniFormat II or 2010, or simply doesn’t exist.
UniFormat 2010
Classifies components based on their UniFormat Code mapping classification to a UniFormat 2010 classification, if it exists.
UniFormat 2010 – Multiple Classification Names
Classifies components based on its UniFormat 2010 classification to all of its higher-level classifications.  For example C1020 Interior Windows is classified as C1020 Interior Windows, C10 Interior Construction, and C Interiors.
UniFormat 2010 from Revit UniFormat Codes
If using Revit, classifies components based on the out-of-the-box UniFormat II codes from the Identity Data.Assembly Code property to UniFormat 2010. For example, D5090900 Misc. Other Electrical Systems maps to D5080.90 Miscellaneous Electrical Supplementary Components.
UniFormat 2010 from UniFormat II
Classifies components to a UniFormat 2010 classification based on the UniFormat II classification of the component.  For example, C1020 Interior Doors is classified as C1030 Interior Doors.
UniFormat Code
Directly classifies a component using the value mapped to a UniFormat code property. This is a mapping classification that maps to the property set Identity Data.Assembly Code by default.
UniFormat Description
Directly classifies a component using the value mapped to a UniFormat description property.  This is a mapping classification that maps to the property set Identity Data.Assembly Description by default.
UniFormat II
Classifies components based on their UniFormat Code mapping classification to a UniFormat II classification if it exists.
UniFormat II Classification
UniFormat II Classification
UniFormat II – Multiple Classification Names
Classifies components based on its UniFormat II classification to all of its higher-level classifications.  For example D5020 Lighting and Branch Wiring, is classified as D5020 Lighting and Branch Wiring, D50 Electrical, and D Services.
UniFormat II - Multiple Classification Names Classification
UniFormat II – Multiple Classification Names Classification

UniFormat Checking Ruleset

The UniFormat Check ruleset checks components in the model to ensure that UniFormat codes are defined and are correct based on UniFormat II or UniFormat 2010.

Since the codes and descriptions vary depending on the version, you are initially prompted to set the ‘UniFormat Version’ user input in the To-Do dialog.

Setting the UniFormat Version
Setting the UniFormat Version

In addition, you should ensure that the UniFormat Code and UniFormat Description classifications are mapping to the correct location where the UniFormat information is stored for components.  By default, it is set to Identity Data.Assembly Code and Identity Data.Assembly Description respectively, from Revit 2013 or later.  However, older Revit models could store the information under the property set Pset_Revit_Type_Identity Data or if you are using ArchiCAD, the UniFormat information is likely in the form of an IFC Classification IFC Classification Icon.

Once the UniFormat Version is set, the ruleset should look similar to this:

UniFormat Check - UniFormat II
UniFormat Check – UniFormat II

The rule Components must have a UniFormat code checks the UniFormat Code classification of components to ensure that a UniFormat code has been defined, regardless of what it is. Looking at the results we see that 149 components fail this check, and do not have a value for a UniFormat Code:

Components without a UniFormat code
Components without a UniFormat code

By selecting Show Passed in the Checked Components View, we see the 108 components isolated in the model that passed the check and do have a UniFormat code:

Components with a UniFormat code
Components with a UniFormat code

The rule Sub-Components must have a UniFormat code checks the UniFormat Code classification of components that decompose other components such as the railings of a stair component or the doors, plates, and members of a curtain wall, to ensure that a UniFormat code has been defined, regardless of what it is. Looking at the results we see that none of the 201 sub-components pass this check, as these do not have a value for a UniFormat code:

Sub-components without a UniFormat code
Sub-components without a UniFormat code

The UniFormat II ruleset further checks the actual values of the UniFormat codes and descriptions of components that have a UniFormat code defined to ensure they are valid from UniFormat II.

The rule UniFormat code must match UniFormat II checks the code against the UniFormat II classification to ensure that it matches a code from UniFormat II as well as checks the code and description against the UniFormat II vs 2010 classification to ensure that they either exist only in UniFormat II or in both UniFormat II and 2010. By setting the UniformatClassifications.txt file in Revit to one with UniFormat 2010 codes, and exporting to a different model, we see that it is able to detect that a door has an incorrect UniFormat II description:

Incorrect UniFormat description From UniFormat 2010
Incorrect UniFormat description From UniFormat 2010

The UniFormat codes exist in UniFormat II and UniFormat 2010 ruleset, checks the codes and descriptions of only those codes that exist in both versions of UniFormat II and UniFormat for components that had their code and/or their description changed.  If also possible, it checks the component type using the Component Type classification of the components.

For example, the rule C1020 Interior Doors – UniFormat Description checks components that have the UniFormat code C1020 to also have the UniFormat description ‘Interior Doors’ from UniFormat II. The rule C1020 Interior Doors – Component Types checks components that have the UniFormat II code ‘C1020 – Interior Doors’ are not of the component type ‘Window’ or ‘Plate’. These window and plate components could potentially have had the UniFormat 2010 code ‘C1020 – Interior Windows‘ set.  In UniFormat II, interior windows typically are under the UniFormat code ‘C1010 – Partitions‘.

In the example above, the doors that have the UniFormat code C1020, fail the description check, as they have the incorrect description ‘Interior Windows‘, but pass the Component Type check, as they are still doors, and not plates or windows.

The rules under the UniFormat codes exist in UniFormat II and UniFormat 2010 ruleset are self-configurable gatekeeper rules, and are only present in the checking window if those components exist.  The following shows the rules that check UniFormat categories that have had their code and/or descriptions changed from UniFormat II in UniFormat 2010.

UniFormat codes exist in both UniFormat II and UniFormat 2010
UniFormat codes exist in both UniFormat II and UniFormat 2010

Mapping UniFormat II to 2010

The Assembly Code property used in Revit are versions of a UniFormat II code. Through classification rules, these codes can be mapped to their respective UniFormat 2010 categories.  The following shows an ITO that reports the original UniFormat code and description from the assembly code and description along with the mapped UniFormat 2010 category using the UniFormat 2010 from Revit UniFormat Codes classification.

UniFormat 2010 categories from Revit UniFormat II codes
UniFormat 2010 categories from Revit UniFormat II codes
UniFormat Check Ruleset