Auditorium Seating via Rail Object in Revit

Auditorium Seating via Rail Object in Revit

While helping a designer with a new chapel project, ran into an issue of how to layout auditorium seating on a sloped radial floor in Revit Architecture 2012.  Things we wanted to accomplish included, easy and controlled layout via straight line segments and via curved arcs.  We also wanted to have a running count of seats via schedule.

My first thought was to curtain walls and use the system panel family to host the chair. This worked fairly well until the seating had to share arm rests.  Although you can host a detail component in the mullion profile family as an option for displaying the arm rest in 2D, it does not allow for nesting 3D Arm rest geometry in the mullion profile family.  Although, for quick plan view layout, seat counts, and ease of creation, this method worked quite well and would work very well in 3D as long as arm rests were not required.

Since this project called for seating with armrests, we resorted to a railing object with nested chairs as baluster panels, and nested arm rests as baluster posts. This allowed us to control the seat size, spacing and placement of armrests along any type of sketch line, curved or straight.  Endpost offsets allowed for control of the arm rest on the ends. Locking the sketchline to grids allowed the designer to change the length or radius as necessary while the chairs simply updated to match.

We ended up with 6 railing types, 3 for floor mounted and 3 for wall mounted chairs. Materials are handled in the nested geometry families and each chair has 3 different parametric sizes (20, 21, 22 O.C.).  based on Series Seating Celebration model.

Generic Model templates were used to create the support posts in two types, wall mounted and floor mounted as shown above.  This gm family was then nested into the Baluster post family and loaded into the project for railing type creation.

Again gm family templates served as the starting point for the seat geometry, which was then nested into the baluster panel family.  Doing both posts and seats as independent geometry in generic model families kept them flexible for future use and allowed for some testing in hosted families. Modeling was kept minimal while matching overall shape and style.  Each family starts as simple 2D geometry for flexibility and efficiency.  Updating 2d graphics and adding refinements in 3D are easy to accomplish as necessary.

As the design progressed, we ran into issues with the railings not hosting to the sloped floors. It is not as simple as editing the railing and picking the floor object as host.  My favorite command, align, was not much help either.  It seems that railing objects host to floors unless the floor is sub-entity modified.  Since many of the floors were sloped in this way or via sweeps, the hosting was accomplished via very thin “ramp” elements which effectively control things vertically while maintaining the horizontal control via grid elements.

To hide the redundant ramps, we moved the ramps to the “constraints” phase and demolished it in the “hide by demo” phase, both of which precede the “existing phase” and thus don’t appear in new construction views.  This is based on a tip I learned at AU 2011 in an interiors class taught by Steve Brown.
Seat counts are controlled by dividing the railing length by the center line spacing of the seat size within a calculated field in the Chapel Seating Schedule (a railing schedule).  Format was set to integer and the formula in the calculated field was wrapped in the round() function.  Originally, the round down function, new to Revit 2012, was used to force a seat count.  Because the railing seems to default to always round up graphically, I found that the round() function actually matched the graphics to the count more accurately.
Some Unity3D goodness – Scripts for Adding Lights

Some Unity3D goodness – Scripts for Adding Lights

Learning to write scripts for assistance in editing/adding geometry within Unity3D is a must for anyone bringing in models from Revit or 3DSMax for Architectural Walkthroughs.  One particular pain point is putting in all the lights or the lights that you wish to cast light within your “game”.  To use these scripts add an Editor folder under the assets folder in your Unity3D project folder.  Once they scripts are copied to this folder, you see new options in the “Game Object” pulldown menu item.  Select some light geometry, for example, some lamp shades in your scene, then click on Game Object – Add pt lights ^n from the menu pulldown.

The results will be a child game object component added to each of your selected geometry objects with the same position as the parent object. Also, because it is a child component, it will move should you reposition the light.

Note: a few objects might require tweaking.

Here are a couple of scripts:

  1. Add point lights – This script will add a point light with the name “_pointlight” with the same transform position as a selected light geometry within the Unity3D editor.
  2. Add spot lights – This script will add a spot light with the name “_spotlight” with the same transform position as the selected light geometry within the Unity3D editor.
Note: the light cone is automatically rotated down and is useful for downlighting.