Fig 1: Schedule-based calculation of minimum plumbing fixtures for the Business Group
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. More on Occupancy Load Calculations.
Fig 2: IBC Table 1004.12 Maximum Floor Area Allowances per Occupant, built in Revit as Schedule Key of the Area Category.
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.
Fig. 3: The 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.
Fig 4: 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. See the original post for more information.
Fig. 5: Annotation Symbol family for the A-1 Occupancy Group. The calculations are driven by the Occupant Load and the Male Ratio which need manual input.
Fig 6: Annotation Symbol family parameter with the formulas for the Assembly Group A-1, complying with IBC & IBC 2012.
- 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.
César Escalante - AIA, CCCA AEC Application Specialist César is a licensed Architect with more than 12 years of experience leveraging architecture, design, and construction technologies in the AEC industry. He has an extensive expertise managing, implementing, and supporting all facets of BIM, IPD, and VCD workflows that includes the use of mobile and cloud technology during design and construction. César has played an instrumental role deploying successful strategies for multidiscipline coordination of large, technically complex, multimillion dollar projects. An innovative thinker, he is recognized as a leader at the forefront of BIM technologies, and he is a passionate educator. César is a LEED accredited professional and a Certified Construction Contract Administrator. He is currently a member of the buildingSMART alliance and the National Institute of Building Sciences. @VCDwhiz