Improve clash detection

Automatic clash detection produces way too much clashes. Even when running test per level or area, I always end up with thousands of useless clash points.

Tired of painfully grouping and sorting these clashes into something usable, I put aside the whole clash detection subject for a while.

I was drove back to Navisworks while working on specific coordination problems. Instead of clashing entire models one against the other (say, HAVC against Structural), I select only a subset of these models to solve a particular problem. Focusing only on the elements involved in these problems, I was finally getting something out of automatic clash detection.

Solving one problem at a time is of course the solution for an efficient clash detection.

Checking required headroom is a good example of a useful clash detection. The idea here is to highlight every room where a structural framing end up below the vertical clearance set up by the architect. This example suppose than the “Limit Offset” property of the room is set to the required value by the architect.


The entire process is based on running a clash test between selections sets created in Navisworks.

My fist selection contains some of the room of the architectural model. The first condition retrieve every room, and the second remove technical area from our selection.


The second selection set retrieve structural framing from the structural model.

Once these two selections are saved as Search Sets in Navisworks, we use them to run a clash test. Since we are focusing on headroom, the Tolerance value is really useful here. We can set it up to 2 cm without regret, knowing than any clash below this value is not an issue in this phase.

This clash test yields 78 results for the entire project. I use the Clash Grouper to group them by room (Selection A), and end up with 55 groups. The best part here is that every one of these groups is a real issue, and do not need any further sorting.

The last part is to export these issues in something practical for the Revit user.

I export the report in HTML (Tabular) to be able to import it in Excel afterward. I use the Get Data From web, and open the report in a nicely formatted Excel spreadsheet.

With some PivotTables, I get the Revit ID of every problematic room, and paste them in the Select By ID function of Revit. I can add a specific value on these rooms and highlight them with a Color Scheme in Revit.


From thousands of meaningless clash point to a nice plan highlighting problematic area for a specific problem, I finally find some improvement over my traditional clash detection process. I’m still working on it, and hope to share my progress, as long as there is any to share.

Grouping clash results

In any given building model, there is a number of issues to be addressed. A large part of these issues are what we call “hard clashes”, when a building component physically penetrate the space occupied by another building component. In these case, two or more building elements compete for the same volume.

Finding these clashes is now quite simple thanks to clash detection software that detect geometrical interferences between elements of a building model.

But after having a hard time finding these issues through coordination sections hand-drawn from plans, we now face the inverse problem and end up with too many clashes in our models. Running a simple clash detection can quickly yield thousands of clashes, making the entire process nearly useless.

Furthermore, a clash only represent a geometrical intersection between two elements, and is more a part of an issue than the issue itself. We have to group these clashes to be able to extract meaningful issues from the meaningless clashes.

Grouping these clashes is generally a manual task, and the user have to run through thousands of clashes to sort them in relevant groups.

While trying to automate this tedious task, I run across the examples provided as part of the Autodesk Navisworks Software Development Kit. These examples include a nice Clash Grouper plugin for Navisworks, enabling various method for grouping clash results.


As an example, I run a clash detection between the blue Selection A and the green Selection B, and get seven clashes, shown here as red dot:


With the Clash Grouper, I can group these clashes by grid intersection:


I can also group them by cluster analysis, where we search for the optimum grouping solution given the expected number of groups:


I also add my own method for grouping clash against a specific set. I use this to group all clash belonging to a single element in one of the two selection sets.


Here, I group by element from the Selection A (blue)


Here, I group by elements from the selection B (green)


If elements from one set are more relevant for the end user, the final clash report is clearer for this user when clashes are grouped against this set.

This plug-in enables a lot of possibilities for sorting clash detection results in a meaningful report, and will become a full-time member of my coordination toolbox.

To install this plug-in, you can copy-paste the ClashDetective.ADSK.dll file available here in a new ClashDetective.ADSK folder in C:\Program Files\Autodesk\Navisworks Manage 2016\Plugins. You can also see my edited version of the example code here.

Automatic Modeling

Most questions I encounter these days turn around using building information modeling for producing construction drawings, schedules or clash detection reports. These features are important, of course, but they remain centered around using a more or less complete building model. But a largely overlooked use of building information model is the ability to automatically model building elements. In fact, object-oriented modeling should allow us to simply describe our solutions and let the computer implement them in our building model, and even warn us when something doesn’t fit.

Lead by this thought, and a problem raised by one of my colleague, I started looking again toward slab insulations. Before BIM, slab insulation was simply annotated on the drawing, and taken into account when creating a building section. Now, for coordination purpose, we have to spend large amount of time modeling everywhere a fairly simple element like insulation, without real added value.

There is nothing new with this problem, and I was already trying to find a solution for modeling insulation layers on the upper face of a series of spaces with my latest version of RoomFinishes, without finding a decent solution.

But while looking for something totally different, I came across this article in AUGI about room and spaces in Revit. So after five years working with Revit, I realized than by checking this small checkbox in the “Area and Volume Computations”, the room continues up until it fit a room bounding element, a ceiling or a floor.


Energized by this nice discovery, I created a small application for automatically modeling insulation. This application retrieves every faces of a given room, and uses the higher ones as references for modeling floors and walls as insulations.


The only problem here is framing. They are not room bounding elements, and the upper face of the room does not fit the shape of the beam. I solved temporary this problem by creating a small floor under the beam.


While doing this, I realized there is a lot of tricky cases, where insulation have to be modeled as wall or slab regarding of the configuration.

The entire code for this application can be found here. It is quite messy, but I hope it can help you anyway.

This small example illustrates one of the possibilities of working with building information models, where information can actually help us focus more on the actual design of the building and less on the representation of this design in the model.

BCF Reader Update

This post is long overdue, but I finally take the time to update my BCF Reader.


First of all, I have tested it on a larger set of BCF files, and I hope these will make it more robust, especially if something is wrong within the BCF file. My experiences include files coming from Tekla BIMSight, Matteo Cominetti’s BCFier and Kubus BIM Collab.

I have to remove the support for Word 97-2003 Documents (*.doc), since the library I use does not support them. I will see how I can integrate them back in a future release.

Among the change, I add a small progress bar to allow you to pour yourself a coffee when dealing with huge quantities of notes.

I also add Status and Verbal Status to the report, just after the date. A more subtle change, the default path to save your report is now the same than the BCF file itself.

I improve the Readme file to include a small explanation on how to use the BCF Reader.

I spotted some problems with styles in the Word template. To be sure to have all of them available in the BCF Reader, you must write a few lines in your Word template, apply your styles to them, then delete them. This will ensure that you have created these styles in your Word template before using it.

Finally, I want to thank Julien Benoit and François Lahouste for their comments and their files.

As usual, you can download the BCF Reader here, and check the code here.

Rooms to BCF

I am a huge fan of Tekla BIMSight. It’s powerfull, it’s free and very user-friendly. But like with many other project review solutions, I have difficulties to locate myself in the building while spinning around the 3D model.

It become even more tedious when you have to find a specific room in the model. There is no convenient way to retrieve its by a name or its number or zoom on it quickly.

A solution is to sort the Tekla BIMSight objects browser by Level and by Name to display every room in the model. You can then select a room and start create your clipping planes around it. This is not user-friendly. Furthermore, I haven’t always the luxury of working with IFC.

Object Browser

This is why I create a small application for creating a BCF note for every room of a building. This Revit plug-in save the location, the dimension and the name of all rooms to a BCF file.


When opening this file in Tekla BIMSight, we see every room neatly sorted by level in the Notes tab.


As you select one of these notes, Tekla BIMSight zoom on the selected room, and create nice clipping planes around it.

In Tekla

To do so, I am using XbimBCF, a great library for reading and writing BCF files. I just have to adapt it a bit since Tekla BIMSight does not support yet the second version of the BCF format.

This application is now more a proof a concept than an actual solution, but I will try to find the time to clean and share the code.

The BCF concept appears more and more appealing as I work with it. This format allow to develop small utilities like this one very quickly, and will be very useful for many tasks involving project review.


My experiences with the BCF format lead me to discover a new solution, launch by Kubus in 2014, called BIMcollab, and imagine a new workflow for solving coordination issues within a building project.

BIMCollab present itselft as a “BCF based issue management system for BIM in the cloud”. The general idea is to manage every design problem as an issue to be solved, and publish these issues on a cloud-based platform for everyone to see.

BIMCollab become the central repository for every issue discovered in a model, and allow to measure the general progress of the project by counting issues opened and solved.

A typical workflow with such a tool can be organized like this:

Check you model in your favorite project review software. Clash detection and annotations come here in handy for creating a complete coordination report, as here in Tekla BIMSight

Tekla BIMSight

One you have a nice list of issue in your design, save them as a BCF file and upload them on BIMCollab.


Here, you can sort and dispatch these issues directly in BIMCollab. You can group them by area, assigned them to a specific user, add a priority and a deadline for solving it.

Sort Issues

Once every issues are assigned, someone responsible for solving can see them directly in his modeling software.



I have only try the Revit plug-in, but I believe the others will look more or less the same. After connecting the plug-in to your BIMCollab account, it display every issue listed in the project, directly in the Revit interface.


You can filter these issues to display only these assigned to you, and work to solve them. Once done, you can change the status of the issue directly within Revit, add a nice picture of your work and a comment for the record.


This validation is send back to BIMCollab for everyone to see. A nice addition is the dashboard displaying the number of issue opened and solved, which create a overview of the work done and to be done.



I see this platform as a great solution for a quantified online issue management workflow, like what we can find in software development for some time now, and a new step toward a more collaborative building design.

Creating a report from a BCF file

I was talking on a previous post about BIMsight and the possibility to export its notes in the BCF format.

This BIM Collaboration Format (BCF) is a common development by Tekla and Solibri to create a standard for exchanging comments between building models. This format can accelerate dataflow during project review by exchanging only comments without having to rely upon the same format and large data exchange through Internet.

The BCF format is currently supported by Tekla Structures, Tekla BIMsight, ArchiCAD, Kubus BCF Manager, Solibri, Elvis, Kymdata’s CADS Planner softwares, DDS-CAD Viewer and DDS-CAD MEP. There is also plug-ins for Revit and Navisworks.

I am using Tekla BIMSight on a daily basis as an advanced BIM notebook. Every problem is addressed during the daily coordination meeting, and documented using notes in Tekla BIMSight.


But for documentation purpose, I also need a paper-based report, quite old fashioned, but handy when you have to work with people without Tekla BIMSight.

I created a little standalone program for converting BCF files to Word reports. These BCF files are created from my notes in Tekla BIMSight.

A BCF file is actually a compressed file, where every note is stored in its own folder, named with the note GUID:


In each of these folder, there is three files:


The markup.bcf file stores all metadata about the note: Its date, its title, its author, its various comment along with their dates, and so on. This is the main source of information for my daily coordination report.

snapshot.png is the first image associated with the note, and an essential part of my report too.

Finally, the viewpoint.bcfv store information about the position of the camera used to capture the snapshot. Since the very point of my report is to work outside the model, I won’t use it here.

I use the XSD Schema provided by Building Smart to create my C# classes and serialize the markup.bcf file.

To write down this report, I use the great DocX library to create a Word 2010 file.

With this little program, I create automatically a nice Word report from my coordination notes, and can share my comments with everyone who does not have Tekla BIMSight.


Project Review with BIM 360 Glue

We are actively searching for a cloud-based solution for reviewing our models, and products from Autodesk were among the candidates, so I give a try to the Glue platform.

Autodesk BIM 360 Glue is the cloud-based solution for visualizing and reviewing BIM project, based on the DWF format from Autodesk.

I have to check it as a potential solution, so I will share my first thought here.

BIM 360 Glue work with a cloud-based repository, were we access from the web-browser admin page and the local client. As usual, everything is project-oriented.


The admin interface provide every basic tools for administrating your projects.

Creating a project come in a few easy steps, were you name it and select user to be project administrators.

Create Project

After this first step, every project admin can invite new members to the project, and define their permission level.

ScreenClip [2]

Once you have been invited to a project, you will receive a nice invitation to download and install the client. The entire process is well thought, and no user should have any problem to download the client.

This client provide everything you need to review your model, with properties, length and area measures, saved views, sections and markups.

ScreenClip [3]

To upload content to the Glue platform, we use the Revit plugin. Once you are connected with your Autodesk account into Revit, you can upload view and sheet directly from the Revit interface.

Just click the Glue button, select your project and the views you want to upload, and Glue will take care of everything else.


It also check if a given view has already be uploaded, and ask us if we want to update it, or create a new one.

If we update one, a notification appear on the client. Hitting the refresh button give us the latest version.

ScreenClip [24]

The activity panel show us every version of the uploaded view, and allow us to reload any previous version.

ScreenClip [4]

It seems than Autodesk BIM 360 Glue is a really interesting solution for project review. The integration with Revit and the versioning system add great features to an already nice viewer. The only missing thing here is the ability to print directly from the client.

Revisions and Revision Clouds

To highlight modifications or issues on Revit drawings, Autodesk provide us with one of the oldest change tracking device, the revision cloud, and a set of high tech features to handle it.

The workflow promoted here is to add a handful of revision clouds wherever they are needed, and link these revision clouds with metadata describing the issue.

In Revit, every revision cloud is associated with a revision, as we can see in the Properties panel of our revision cloud.


These revisions are managed in the Sheets Issues/Revisions panel, and can be seen as issues to be addressed.


These revisions are displayed in a revision schedule, a table added to the title block family during its creation.

Every revision cloud visible in a sheet have its associated revision displayed in the revision schedule embedded in the tittle bloc. Here, I had a revision cloud on the sheet, its associated revision appears in the revision schedule of the sheet.

OneRevisionsI can also add a revision cloud directly on the view, its revision will also appear on the revision schedule.

Revision2 These clouds can be hidden on a per revision basis, in the Revision panel. This command will hide every revision cloud associated with the selected revision. However, it does not remove this revision from the revision schedule.


HideRevsion1 This allows us to keep some kind of history for every issue addressed and resolved, along with their revision cloud, without having our views obscured with outdated revision clouds.

The Per project/Per sheet numbering option allows us to define if we manage our revision numbers for the whole project, or on a per sheet basis.


Look at the revision numbers on the following example to understand how this work:



Sadly, Revit does not provided any built-in function for scheduling directly revision clouds, just like we could do with Note Block for annotation symbols. When I need a revision clouds schedule, I use Revit BIMLink from Ideate to export these revision clouds to an Excel datasheet. There is also a free tool from Case Inc. to export cloud data to a CSV file, the Revision Cloud Data Export to Text File, included in Case Revit Add-ins.

Coordination with Grasshopper

I recently coordinate a complex ceiling with the concrete structure and mechanical equipment. This ceiling is composed of flat panels, with no particular pattern or general repetitive shape. These panels are modeled as a set of surfaces in Rhinoceros 3D.

General View

For those who are not familiar with it, Rhinoceros is a 3D modeling software solution, develop by Mc Neel Associate, and broadly used by architects in the early stage of the design. It comes in handy for design complex free-form shapes.

My ceiling surfaces have to be modified to include enough space in the plenum for mechanical equipment, while keeping the ceiling constructible.

I use different models as a reference during my work, coming mostly from Revit. Once exported in DWG, inserting them in Rhino is quite easy. These models show structural concrete and ducts to be integrated in the plenum space.

The next step is to integrate fabrication constrains, in order to keep every ceiling panels constructible while editing them. To do so, I use Grasshopper, the visual programming interface of Rhinoceros.

With a layer pipeline, I extract every panel of the ceiling surface. I then apply the construction rules on these panels, and display the result with a specific presentation in Rhino.

For example, since every panel must be planar, I display every non-flat panel in red, and correct them as soon I see them in Rhino.



I also display the naked edge curves of every panel to identify junction problems between two supposedly contiguous panels.



Each ceiling panel needs also some space behind it for its supporting structure. The volume of this structure is modeled in real time using the offset command in Grasshopper. Another constrain is the angle of the panel vertices. After fighting with some angle measure in Grasshopper, I ending up by just counting the number of edge of a panel, displaying it as a color scheme in Rhino, and assuming that the smallest edges count was the better.



Once these construction constrains are displayed in real time in the Rhino viewport, I can easily modified the ceiling surface while making sure it still constructible. These modifications are conducted here with basic surface modeling tools, and entirely by hand. But once you have immediate feedback on what you are doing thanks to Grasshopper, editing these surfaces become almost fun.