Revit Room Finish Material Quantities


The AEC industry is crazy about BIM implementation. When you hear about what can you do using BIM technology or watch presentations and videos you are told that everything is so easy. It is like all the documentation is created by itself, everything is integrated. When there is a revision, you need to simply click a couple of times and everything is fixed. When the time for quantification comes you need to click again a couple of times and all the areas, volumes and counts are there for you. But, anyone who used BIM software like Revit is aware that the process is not that easy. Still, there are a lot of challenges for architects, engineers, and pretty much everybody involved in the BIM life-cycle of a building.

In our office, we are using exclusively  Autodesk Revit and we are struggling with the material quantities for the past couple of years. As architects, we need to provide material quantities at the end of each project design phase. This is the local municipalities requirement. After we are ready with all the documentation we must provide a schedule with all the proposed materials. It looks something like this.

We provide the type of material and installation work. For example -“manufacturing, transportation, and pouring concrete “. After this, there is a row for each level of the building and area per level. And of course total quantity.

For some of the materials, this is easy. Like masonry and gypsum wallboard. We create a simple wall schedule, sorting all the walls by level and getting the numbers for the wall area directly from Revit. In those cases, Revit is working exactly the way they promote it and it is really easy for us to get the information. But in other cases the story is different. We need to provide quantities for interior finishes. The problem with that is these numbers can’t be taken directly from Revit. If we want to do that we need to model each interior finish as a separate wall or to model some element in order to create a schedule based on this element and get the numbers from the schedule. You can imagine that this is quite a challenge. All this leads us to the point where we need a working workflow to calculate accurate material quantities. The old way was to do this by hand using room perimeter and room height substracting openings area. But what if the building has 300 or more rooms? It was a very time-consuming process and there is a high risk of an error in the calculations.

You will say that there are a lot of Revit add-ins doing exactly that. We tested a couple of options but it turns out that we have weird local standards and these add-ins are not working completely for us and we are not sure what are the numbers coming from them. They were unnecessarily complicated. So again we didn’t have a satisfying enough workflow. After that, we thought that Dynamo could be the answer we are looking for.  We created Dynamo script for room finish material quantities which worked for us at that time and we were happy. Of course, we found that this wasn’t perfect. The problem was that we were using external excel spreadsheets and the format of the data was not that good. We again start thinking about what could we do to make this even better.

The end of our material quantities saga finally come. We just finished our last tool. It is written in Python and it is using pyRevit platform. We evolved the idea from the Dynamo script for material quantities. We decided that is better to have all the material quantities as data inside our Revit models. In the previous workflows or add-ins external schedule/file was used. Now we are including the information for the room finish material quantities in the model as room parameters. The tool creates a project shared parameter for each unique room finish material. Then the area for each material per room is filled. With the Python script, the whole process takes less time compared to the Dynamo script. It is also much easier to deploy the script to all of our local office machines. The Dynamo script is hard to maintain because it is dependent on a lot of custom nodes, Revit version, Dynamo version and we have a lot of problems running the script on different machines. More about the workflow and demo preview in the video below: