Logo

Re-examining Revit Based Plumbing Fixture Calculations - Part I

Minimum Plumbing Fixtures Per Table

It may be reasonable to think that Revit could automate the calculation of plumbing fixtures from a given schedule of areas and occupancy loads. Well, think twice. A comprehensive calculation of fixtures in Revit that automates the required number of all types of fixtures (Water Closets, Lavatories, Urinals, Drinking Fountains, Showers, Service Sink, Unisex fixtures) still remains a somewhat elusive exercise. The underlying problem is that the Schedules are meant to quantify the parameter values of Revit project families, and are not really suitable to be used as worksheet for things that are not in the model. This hasn't stopped us from searching for a way to push Revit to that point, or getting close to a parametric solution.


For someone starting to build this type of calculation in Revit, I will review the advantages and limitations of the different approaches used.

Before you start building your calculations, keep a few things in mind. First, make sure to keep the units for each calculated value consistent. I recommend building all the parameters of the 'Number' type and override the field format to 'Fixed' with a 2 decimal rounding increment. This will make the schedule values readable and clean.



Second, consider recapturing the load data from the Revit occupancy calculations. These calculations are typically based on Revit Area Plans instead of Rooms because Area plans are more suitable to define the boundary limits of both Gross and Net areas as required by code factors. (See Fig. 2.) To maintain consistency of the of the occupancy load, duplicate the schedule of the building load calculation and use those calculated values to get started with your plumbing fixture calculation.

Maximum Floor Area Allowances

The third consideration is regarding the rounding of values in mixed occupancies. Most codes are silent or generally vague about the rounding rules for aggregated data. In the absence of a clear cut direction, code specialist agree that the best approach is round to the upper integer the aggregated totals of every occupancy instead of the partial subtotals. Rounding up both the occupancy and fixture load in partial subtotals would increase the total count somewhere between 2%-5%, depending of the building size, increasing unnecessarily the building cost. The rounding, they agree, should occur after summing the fractional fixture counts for each occupancy group, keeping the total fixture count as low as permissible. Since Revit cannot round schedule grand totals, the task remains an outstanding feature request. Workarounds require manually rounding up the total and transcribing the result in a dummy key schedule, a process that would be repeated at every program change.

rounding of fixture grand totals remains a long-standing feature request.

Current Solutions Different solutions have been proposed to tackle the minimum plumbing calculation requirements. Regardless of the method, the actual difficulties become evident when applying different rules for mixed occupancy loads.


  • Single Schedule: While it is possible to conceive of a single schedule for all of the plumbing calculations, this would be inaccurate and extremely complex to achieve. Since the formulas of calculated values apply to every instance, there is no choice but to build each assembly requirement as a separate schedule column, creating a lot of redundant calculations. For example, each calculation of the Assembly, Business, and Mercantile occupancies will require a separate calculated value for every fixture type. Excluding the values belonging to other occupancies is hard to do using Conditional Formulas. One cannot mix the text-formatted values of the Occupancies (ie B, or M) with any Numerical formulas, unless you assign a numerical value for each group. And even if the conditional formulas end up working, the totals of fixtures per type will be dispersed, turning the effort somewhat futile.
  • Multiple Schedules by Occupancy Group: Because each occupancy utilizes different plumbing factors and/or load formulas, it may be more reasonable to build a single schedule for every occupancy. Formulas used in calculated values will respond to each occupancy requirement, and the major advantage is that all calculations get updated if the area boundaries change. Still, there will be no way to build a parametric summary of fixture totals. One workaround is to manually add the data into a Summary schedule key. The other alternate is to export each of the schedules as a .TXT file that are opened in Excel and pasted into a single worksheet to calculate totals. The data would require exporting to the schedules at every plan update, and the total need to be manually transposed into a summary schedule.
  • Excel Calculations: This solution takes all the fixture calculations outside of the Revit environment. Excel certainly provides a wider flexibility to create the fixture count by occupancy group and a summary table. Areas and fixed counts would need to be exported or manually transcribed into an Excel Spreadsheet. The twofold problem is that there is not a way to push the totals back into Revit out of the box, and secondly any change in the area calculation would need to be manually transcribed every time the plan changes. Ideate BIMLink, a Revit add-on that can push and pull Revit data between Excel and Revit, can certainly facilitate the process of re-importing the data into an existing area schedule or key schedule.


An Excel based script available for free is the Plumbing Fixture calculator posted by Ara Sargsyan. The calculator uses a built-in script in Excel and complies with 2012 IBC & IPC.

Excel script generated plumbing fixture calculator.
  • Annotation Family: This is a very elegant solution posted in AUGI forums by user cberteaux371801. Instead of using schedule with calculation values, the plumbing fixture calculations are shifted away from the project and managed as formulas embedded in family instance parameters. The benefit is a visually consistent schedule-like table for every occupancy groups. The user would load in the project an annotation symbol family for each of the occupancies in the building, and the calculation will run based on the occupancy load for the group. This method is almost perfect except that it will not read the occupancy load automatically. Any change in the occupancy loads would need to be transcribed at every change of the program and a summary table with the aggregated totals would still be required.
Annotation Symbol family for the A-1 Occupancy Group.
Annotation Symbol family parameter
  • API / Scripts?: Can some experimentation with API or Dynamo Scripting provide a better solution? With scripting, it is conceivable to develop a way to extract the occupancy totals and plug them as values into an Annotation Family. In a forthcoming post, I will explore in greater detail the potential of this approach.


Bottom Line: There is not a perfect automated solution yet that provides a parametric calculation of plumbing fixtures, nor a single solution that is universal. While it is possible to push the calculation into schedules and families, every solution requires some level of manual transcription. If you decide to build your calculation using Families or Schedules in Revit, the code requirement would need to be translated into formulas compatible with Revit. In Part II of this blog post, I will discuss in greater detail the typical formulas used to construct these calculations.

Explore recent posts

Live From DC: Unlock the Time-Saving Features for Revit with Ideate Software
26 Apr, 2024
TRAINING - VIDEO | Join Richard and Glynnis LIVE from Washington DC, for an enlightening session on how to revolutionize your Revit workflows with the newest offering from Ideate Software - Ideate Automation.
Beyer Blinder Belle Architects' Solution Customization for Streamlined Design
22 Apr, 2024
SUCCESS STORY - VIDEO | Beyer Blinder Belle Architects were able to customize our Revit solutions to meet their company's specific needs. Thanks to our personalized solutions, BBB's team was able to have Ideate Automation run weekly exports overnight and export PDF files as sets by drawing type, run Ideate Automation command lines in Microsoft Power, and more.
15@15: Look It Up! Custom Dictionaries in Ideate SpellCheck
15 Apr, 2024
TRAINING - VIDEO | In this 15@15 recording, you'll uncover the secrets to enhancing your documentation quality control process in Revit. Learn how to seamlessly add standard company/client standard abbreviations to a Revit custom dictionary, coordinated with Ideate SpellCheck.
Ideate Software 15@15 Training Series
13 Apr, 2024
EVENT | Designed to provide you with the best training available on the Ideate Software suite of tools, these 15-minute sessions are fantastic opportunities to enhance skills and maximize productivity.
Show More
Share by: