
Revit + Dynamo + Python: Clash Detection BIM Automation for interference correction between MEP specialties: Part 2
In the first part of this article (https://medium.com/@luisalonsooteroseminario/revit-dynamo-python-create-your-own-plug-ins-by-automating-interference-correction-between-f687ccc48358), we share how to find visually within a BIM model all the conflicts produced between the project’s MEP facilities. The process shown uses the “Crash Report” delivered by Revit (file.html) and processes it to obtain the list of the IDs of each conflicting element. Having already identified the elements, lists and 3D views are created with a “SectionBox” for each element. This procedure is fairly helpful when the BIM model is relatively small, but what happens when the BIM model is too large? In this case, it becomes very tedious to create so many 3D views for each element and start reviewing one by one later. That is why we had to find another way to do the same but in a more orderly and fast way. This is how we decided to eliminate this first process of obtaining the “Clash Report” and decided to make the collision of Elements internally using only Dynamo. With these new processes, collision identification was further automated.
Now, we detail the step-by-step logic of the operation with the Scripts application within the workflow of the person in charge of coordinating the MEP installations of the Project’s BIM model:

Step1: As we did previously in part 1, we first run the “CreateClashParameters” routine to create all the parameters we are going to use. Here, the names and types of parameters we will use throughout the coordination are created properly.

It is only necessary to execute it once and all the needed parameters will be created: “Grid Location”, “Zone”, “Percent Done”, “Done”, “Clash Solved”, “Clash Grid Location”, “ID Element”, “Clash Category”, “Clash”, “Clash Comments”:


Step 2: With the parameters created, we perform the special collision by executing the “RunInterferenceCheck_PopUp_ByCategory” routine, where we open a menu to determine what Category and link with, we want to make the collision.



Here we collide all the elements of the active view of the BIM model against the elements of the “Ceilings” category of the Architecture link.
Once the previous routine is executed, apparently no change in the project view is observed, but if we review the parameter properties of the elements in conflict with the “Ceilings” of the Architecture link, the following is observed:

The information on the parameters “Clash Grid Location”, ID Element”, “Clash Category” and “Clash” for each conflicting element was filled.
Step 3: Now, to visualize the previously mentioned COORD view and to be able to differentiate it easily, we execute the “CreateClashViewFilter” routine to create the view filter that will differentiate in red-color, the elements that collide with the “Ceilings” and in lead-color those that do not.



Step 4: Now, to be able to have a complete list and carry a correct order, we create the CLASH SCHEDULES for each “Category” with interference. First, we execute the “CreateClashSchedules” routine and then, the create the “CreateScheduleClashFilter” routine.

With the first routine, the tables are created and with the second one, the filters are created on the tables created already, to be able to differentiate them only by the elements in conflict.



Step 5: The idea is to start checking the interferences and, as they are solved, they will be eliminated from the CLASH SCHEDULES. For this review, we use the “SectionBoxCopySelectionElements” routine, which allows us to visually select for which elements we want to create another 3D view with a SectionBox of the selected area, for a better interference correction.


Meanwhile, after visually selecting which elements we want to isolate, the next 3D views are created as a Copy 1, Copy 2, etc., for each selection by how many 3D views isolated with SectionBox we want to create. In this case, for example, we have only created 2 isolated views COORD Copy 1 and COORD Copy 2:

Step 6: For interferences that can not be solved instantly and remain as pending for consultation with the specialist of each installation, we use the “ClashComments” routine, and with this one, we enter a comment to the pending elements which will be read later by the specialist when reviewing the CLASH SCHEDULE list exported directly to Excel from Revit with the “ExportClashReport” routine.


Once we finish reviewing and commenting on the elements correction pending elements, our CLASH SCHEDULE remains as:

Step 7: Now if we want to export the CLASH SCHEDULE for the pipelines with conflicts, we only execute the “ExportClashReport” routine and obtain an Excel file as follows:


Once executed, an Excel sheet will open where the following will appear:

Step 8: Now what if we only want to make the collision between certain categories of elements and not with all the elements of the active view? For this, we use the “RunInterferenceCheck_PopUp_ByMultipleCategory” routine that will open the next interface very similar to the previous one:


We select which Link we will use, then against which Link’s category we will collide and finally which categories of the active view of the BIM model the collisions will be made with, obtaining the same result as the previous routine (“RunInterferenceCheck_PopUp_ByCategory”), but this time only with the selected model categories and not against those of the entire model.
Step 9: Like the previous ones, if we want to make a collision between the same elements of the model without considering any Link, we use the “RunInterferenceCheckCurrentProject” routine to determine which categories of elements we will use for the collisions:

An interface like the following opens:

It should be said that all Schedules and View Filters created at the beginning only need to be created once and then they will remain active during all the work on the model.
By following all the steps described previously, the identification and the correction of interference within the model are automated, which translates into a saving of time and resources by requiring fewer people coordinating and reviewing the entire project faster and in more detail.
For all these automated processes, 11 routines or Scripts were used:

To be able to execute the routines without the need to open the Dynamo, the DynoBrowser Plug-in which is downloaded for free from here: http://prorubim.com/en/tools/dyno/
Script 9: “RunInterferenceCheckCurrentProject.Dyn”

Developer: 👨💻 Luis Alonso Otero Seminario
Email: 📩 alonsooteroseminario@gmail.com
Consulting: 📍 www.dynoscript.xyz
Github: https://github.com/alonsooteroseminario
Linkedin: https://www.linkedin.com/in/luisalonsooteroseminario/