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:

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:

Open SMC, and from the File layout, open the 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.


Color Gradients of Components through Classification

Creating an SMC Template

The following article provides some simple steps to create an SMC template.  This allows you to save only the model resources (classifications, rules, ITO definitions) along with a basic origin designator as a model.  This can be used as an alternative to creating a role, or anytime you would like to duplicate current conditions of a model without including the model geometry.

For this example, open the SMC Building.smc file that comes with SMC in the examples folder.  In a real-world situation, this would be one of your existing SMC projects that has the same resources you wish to use on a new project.

Notice this SMC file contains the listing of classifications that you would like to include in the template.

We also want to use the same loaded rulesets that currently have results based on the SMC Building model from another project.

Select File > Add, then add the origin model from the link below:

Origin Marker.ifc

An IFC file is required to be present in the Model Tree in order to save an SMC along with its contained resources.  We will delete the existing model from the old project to save space and remove old information…this origin marker will remain and will provide a visual aid to where 0,0,0 is in the model.

To remove the old model, right-click it in the model tree and select Remove from Model.

Notice the results have been removed from the Checking view.

If you created Selection sets in the Selection basket view, you can delete these by right-clicking in the window, selecting the selection set you wish to delete and click Delete in the dropdown.

Click the Communication layout and remove the existing issue slides from the old project by right-clicking them in the Presentation view and selecting remove Presentations.

Click the Information Takeoff layout.  In the Information Takeoff view, the existing data of the old project from the last time takeoff was run exists.  Click the Takeoff dropdown and select Takeoff All ITOs to remove the old information.

With the file stripped of old project information, click File > Save As and save to a new Template file.

Now, you can add whatever new IFC models you would like as the project progresses, or send this template to a colleague running SMC without having to share the original classifications, rulesets, and ITOs independently.  Saving a project template can make sharing project parameters and checking requirements for SMC much easier by keeping these resources contained in a single Template file.

Creating an SMC Template

Working with AutoCAD and SMC

Solibri Model Checker (SMC) supports the DWG format from AutoCAD; however, it is always suggested to export to the IFC file format for the best results in SMC.

There is no way to install object enablers over SMC, so if your AutoCAD-based application creates custom AEC objects, they have to be converted to solids in the exported DWG in order for the geometry to appear correctly in SMC.

The second section in the article describes a workaround for converting custom objects via the Convertto3DSolids command to bring into Revit.  The same method appears to work for custom AutoCAD MEP objects when opening the resulting DWG file in SMC.

The process is as follows:

  1. Go to a 3D view
  2. Select everything in the model (command: AI_SELALL)
  3. Type Convertto3DSolids at the command line.
  4. It may ask to erase selected objects, if so type yes, as otherwise there will be two versions of the objects, the converted and the ones that come in incorrectly.
  5. Try saving to a NEW DWG as this one is just for use in SMC, and you don’t want to overwrite the actual one you are working from.

Unfortunately, with some applications installed over AutoCAD, the ConvertTo3DSolids doesn’t recognize some objects as AEC objects, which doesn’t allow the geometry to convert to be read in SMC correctly.

If your AutoCAD application, such as AutoCAD MEP, has the IFCEXPORT command, you should be able to export to the IFC format, which is the recommended format to bring your model into SMC.

If the command is not recognized in your AutoCAD based application,  and if you have AutoCAD MEP, you can possibly install the enabler for your application over AutoCAD MEP to bring in the objects properly converted.   Then use AutoCAD MEP’s IFCEXPORT command to produce your IFC file.

Working with AutoCAD and SMC

Missing Components When Exporting Elements Only Visible in View Within Revit

The IFC Exporter in Revit allows you to export only elements that are currently visible in the view.  You can use this option to isolate only the elements you wish to export rather than the entire project.

However, some elements, even though visible in the view, may fail to export in the IFC if the Detail Level of the view is not set to “Fine.”  Below you can see the view with the Detail Level set to Medium.


The following is the resulting IFC loaded in Solibri Model Checker, which has missing pipe fittings in the model.



To work around the issue, ensure that when exporting only elements in the view, you have the Detail Level set to “Fine” as seen below.


The resulting file should no longer have missing elements as seen below where the pipe fittings are present.


Missing Components When Exporting Elements Only Visible in View Within Revit

Missing Revit Properties

Occasionally, users find that their Revit properties (Identity Data, Constraints, Other, etc) are missing in their exported IFCs when opened in SMC.   The reason most often is that the IFC2X3 Coordination View 2.0 export setup was used in the IFC Export. By default, the IFC2x3 Coordination View 2.0 setup does not export internal Revit property sets.  Therefore, if you want these properties in your IFC, you’ll need to modify the setup and mark the Export Revit Property Sets check box in the Export Property Sets tab of the IFC Export dialog.

Also, IFC2X3 Coordination View 2.0 does not export Space boundaries.

In SMC, components such as walls, doors, floors, etc. that bind a room normally have a Referencing relation to a space.  This can be useful for instance in a check that every room has at least one door to enter/exit from.  In the IFC Export dialog in Revit, with the Space boundaries drop down set to none, these referencing relations are not included in the resulting IFC. Therefore, if you want these relations, you’ll need to modify the IFC2X3 Coordination View 2.0 setup and set the Space boundaries drop-down box to either 1st Level or 2nd Level in the General tab of the IFC Export dialog.

Alternatively, you can use the IFC2x3 Coordination View* setup, which exports Revit property sets and has Space Boundaries set to Level 1 as its default setting.

More information on exporting to IFC from Revit can be found in the article Exporting an IFC File from Revit to SMC

Missing Revit Properties

Transferring your License to Another Machine

Solibri Model Checker makes it easy to transfer a license between your computers.  All that is required is to provide your Solibri Solution Center (SSC) username and password on the other machine when you start SMC. The SSC will register that new machine and unregister the old one.

Welcome to Solibri Model Checker Dialog

However, you are only able to register/run SMC on one computer at a time using your SSC username.  So if you close SMC on your office computer, you should be able to open SMC on your home computer and vice versa. If SMC is already open on another machine, or if you have borrowed a license, you will receive the following error when attempting to open SMC on another computer until SMC is closed or the borrowed license is returned respectively:

Information on borrowing and returning licenses can be found article Borrowing Licenses.

If you wish to run SMC on two machines concurrently, you will need to create two usernames in the SSC, assign licenses to both usernames and register those user names on each computer.  It is important to note that this will reduce your companies available floating licenses by two while both machines have SMC open.  Information on creating users and assigning licenses can be found in the article How to Easily and Efficiently Manage Your SMC Users and Licenses

Transferring your License to Another Machine

Model Structure – SOL/176

Solibri Model Checker (SMC) has an extremely powerful QA/QC checking rule template named Model Structure (SOL/176).  This rule template is unique, as the parameters consist of simple check boxes for specific checks against the model.  This makes it one of the easier templates to setup; however, to get the best use of the template, it is important to understand the purpose of each of the various checks toggled on/off by these check boxes. You could simply mark all checkboxes, but for a complex model, the results view may contain many disparate results or ones that aren’t important for your use case.   Alternatively, you may wish to group certain checks together, for instance, checks regarding floors or checks regarding doors.  Furthermore, you may wish to use the template marking only a single checkbox to limit the check to that particular condition.

The purpose of this article is to familiarize you with each of the parameters of the rule template through examples so you can tailor a ruleset that uses this template to your liking based on what is important for you.  You can experiment with this template using the ruleset in the link below. This example ruleset has individual rule checks corresponding to each of the individual parameter check boxes.

Below are the rule parameters of the Model Structure rule template.

Model Structure - Parameters

Each section below will explain each of the parameters from top to bottom.


Like many of the rule templates in SMC, you are able to select the disciplines of models you want to check against or select ‘Any’ for all disciplines available in the aggregate model. Only the components in the specified disciplines are checked. The following article explains disciplines in further detail:

Disciplines in SMC

Check Containment Hierarchy

When this parameter is checked, the rule template checks that the model reflects the following hierarchy: model has building, building has floors and floors have components. In the image below, you can see the correct hierarchal structure of an IFC file.

Correct Model Tree Structure

Below is the model tree showing the hierarchy of an IFC with an incorrect structure loaded in SMC.  Notice that the building does not contain levels (building stories) that contain the components within the model.

 Incorrect Model Tree - No Floors

After running a check of the containment hierarchy, the results view reports the issue that no floors exist in the model.

Results - No Floors

Direct Relation to Floor

When this parameter is checked, the rule checks that all components in the model have a “Contains” relation directly to a building floor.  For example, furniture related only to a space (which is related to a building floor) will fail the check. In the image below, you can see two sanitary terminals are related to a restroom space, rather than directly related to First floor.

 Direct Relations to Floors - Model Tree

In the image below you can see the issue result displayed in the Results view.

Direct Relation to Floor - Results

NOTE: Your design software will more than likely relate components to space in which they are contained rather than directly to the floor.  You will likely wish to leave this checkbox unmarked, which is its default setting.

Check Empty Floors

When this parameter is checked, the rule checks that all floors contain at least one component. In the image below, the floor named “TOF Footing” is empty in the Model Tree view.

Empty Floor - Model

Below is an image of the Results view reporting the issue that TOF Footing doesn’t have components.

Empty Floor - Result

Check Floor Elevations

When this parameter is checked, the rule checks for multiple building floors located in the same elevation.  In the image below, the floor “Level 1” is selected and 0 is reported as its Global Bottom Elevation.

Floor Elevations

In the image below, a different floor named “Level 1a” is selected and its Global Bottom Elevation is also 0.

Floor Elevations

This issue is reported in the results view, which lists the elevation along with the names of the floors that reside at that elevation.

Floors have same elevation - Checking

Check Floor Names

When this parameter is checked, the rule checks if the model has multiple building floors with the same name. In the image below, there are two floors with the same name “First Floor” listed in the Model Tree view.

Floor Names are the Same

After running the check, the issue is reported in the Results view which lists the name of the floor.

Floor Names are the Same - Results

Verify Material Layers Thicknesses

When this parameter is checked, the rule checks all walls, slabs, and roofs in the model to ensure the sum of material layer thicknesses is the same as the thickness of the component itself.  Below is a wall that has a thickness of 4 7/8″, as listed in the Quanties tab of the Info view.

Wall Thickness

The Material tab lists the materials of the wall’s structure.  These tree materials add up to a total thickness of 4 1/2.”

Material Thickness

Since these two thicknesses differ, an issue result is returned for the wall stating the differences of thicknesses.

Material Thickness - Results

Doors/Windows in Same Floor AS Wall

When this parameter is checked, the rule checks to ensure the wall (or a roof/slab) and its doors/windows are included in the same building floor.  The model in the image below has a wall that is on the floor “Level 1” that has a height of 20 feet, which extends upward past Level 2, which resides at 10 feet.

 Wall on Level 1

There is a window on Level 2 attached to the wall as seen below in its Floor property in the Info view.

Window on Level 2

Also, there is a window that appears to be on the same floor as the wall selected in the image below.  However, this window was originally placed on Level 2, and was later moved below using a negative number in the Sill Height parameter.

Window on Level 2 with negative sill height

In the image below, the Sill Height property lists a negative value of -7′ 6″ in the constraints in the Info view after selecting the window.

Negative sill height

Since both of these windows reside on the Level 2 and the wall, which wasn’t split at level 2 is a single wall that resides on Level 1, an issue is reported in the Results view listing these two windows after running the check.

Window same floor as walls - Results

NOTE: You are able to automatically split walls and columns by floor by marking the “Split walls and columns by story” checkbox in the exporter of Revit.  For more information on this, please see Exporting an IFC File from Revit to SMC

Check Maximum Polygon Number

When this parameter is checked, the rule checks the geometry of all components in the model to ensure those components do not consist of more polygons than the specified Maximum Polygon Number parameter.  Below is an example of a sphere that has a 50′ diameter.   This component fails the check, and the Results view lists this component along with the polygon count of 4446.

 Maximum Number of Polygons

Viewing the component in wireframe mode within another application, you can see the 4446 polygons that make up the geometry of the sphere.

If you find that your model is sluggish while navigating or other performance issues, this rule can check if there is a specific component with complex geometry causing the issue.  To help in performance issues, that component could be hidden in SMC, or edited in the original design software to make it less complex.  For information on performance issues can be found in the article Optimizing Performance in Solibri Model Checker

Check Space Boundaries

When this parameter is checked, the rule checks all spaces to ensure they have correct space boundaries.  A space (room) in a model is bound by components such as walls, windows, doors, etc.  Spaces can also reside next to each other without a wall that separates them using room separators.  In the IFC, a space boundary element exists for these boundaries.

In the image below, a result is listed stating that there are missing space boundaries for the Radiographic Room.  There is a wall inside the space, which can be seen as it cuts out the geometry of the space.  However, no space boundaries exist for this wall.  The boundaries that do exist are listed in the result and are colored blue in the 3D view.

 No Space Boundaries

In the image below, you can see space boundaries highlighted in red that only bind a single space and no components or other spaces. The Results view lists these three space boundaries.

Space Boundaries only bind one space

After selecting one of the space boundary elements in the result view, you can see in the Relations tab of the Info view that the space boundary only binds the corridor space, but no other space or construction component such as a wall.

Only binds corridor

Check Orphan Doors and Windows

When this parameter is checked the rule checks if the model has doors or windows without relation to a wall. In most design software, when a door is placed on a wall, it generates an opening component that cuts out the geometry of the wall for the door to fit.  In the image below, an opening component is selected.  The Relations tab of Info view lists the backward filling relation to the door, since it fills the door and the forward void relation to the wall which it cuts out.


The opening to the right doesn’t have a filling relation to the door as an opening was cut out of the wall, and a door was placed in the location without actually attaching it to the wall in the design software.

When the rule is run, this door on the right is returned as a result stating that it isnt related to a wall.

Check Door Opening Direction

When this parameter is checked the rule checks that all doors in the model have the opening direction defined. The opening direction, or door operation, is needed for the Accessible Door rule.  More information on this rule can be found in the article Enhanced in v9.6 Accessible Door-Rule SOL 208

You can view the door operation in the Identification tab of the Info view as in the image below. Also, notice you can see the swing in the footprint in the 3D view.


In the image below, the door on the right doesn’t have a door operation. Selecting the door and viewing its Operation property shows it listed as Undefined. Also, the swing is missing in the footprint n the 3D View.

After running the check, the door with the undefined door operation is returned as a result.

Allow Only One Site

When this parameter is checked the rule checks to ensure the model has only one site.  In the image below, there are two sites listed in the Model Tree: Site Name and Site Name 2.

After running a check, a result is returned of the issue which lists the multiple site names.

Check Whether Site has Geometry or Not

When this parameter is checked the rule checks to ensure the site in the model contains geometry.  In the image below, the site is selected in the Model Tree which highlights it green in the 3D View.

In the image below, the geometry of the site was removed.  It is selected in the Model Tree, but there is no existing geometry in the 3D view to select.

When this check is run, a result is returned that lists the site that doesn’t have geometry.

Require Unique IFC GUIDs

This parameter is used to check if the Global Unique Identifier of components is unique in your model. The drop down that can be set to Unique in One Model, and the GUIDs of components are only compared within that single model.  When the drop down is set to Unique in All Models, GUID of a component is compared against the GUIDs of all components in ALL the loaded models.

In the image below, the beam on the left has a GUID value of 06pcgjPDbES92yHX6IVtf_.  This beam resides in the architectural model.

In the image below, the beam on the right also has a GUID value of 06pcgjPDbES92yHX6IVtf_.  This beam resides in the structural model.

After running a check for “Unique GUIDs in All Models” a result is returned for these two beams with duplicate GUIDs as seen selected in the image below.

The information provided in this article should provide you a better understanding of the Model Structure rule and allow you to custom tailor a ruleset using the this rule template to suit your needs QA-QC requirements.


Model Structure – SOL/176