October 01, 2009

Revit Praise #1 - Parametric Families

Today was a really, really bad Revit day, but it would be churlish of me to say only bad things about Revit® Architecture, when that does not reflect my opinion of the software on most days. I realize that much of my struggle can be ascribed to a combination of my inexperience with the software, the overly demanding nature of the geometry of the building for which the fitout is being done and "issues" with the linked Revit files for the building, done by another firm and outside of my ability to control or improve.

So lets focus on a strength of Revit that I find quite fascinating: the ability to create custom components that are driven by parameters. This past August I had the good fortune to be able to take Paul Aubin's on-line Mastering the Family Editor, a series of five one-hour, on-line training sessions covering the use of Revit's Family Editor. (See Paul's website for current offerings. It was my understanding that he plans to make recordings of sessions available, for a fee, to those who did not sign up for the live course, but I did not see a link for this particular course as of tonight.) By setting up parameters, you can get the same graphics to "flex" to multiple sizes ("types", in Revit terminology) without the need to create multiple styles, as you would with a Multi-View Block in AutoCAD® Architecture.

Armed with that excellent knowledge, I was able to create two families for accessible shower seats (one each for rectangular and L-shaped). Each family currently has two types - one for the maximum seat size allowed under ICC/ANSI A117.1 and one for the minimum size. The images below show the plan views for the two families. The origin point for the component is at the upper left corner. The green dashed lines are "reference planes", and the top and far left ones are designated as defining the component's origin (the corner of a shower). The reference planes do not show when the object is placed in a project, but within the family, provide a framework on which the 2D linework (used here, to keep file size down) or 3D objects can be locked.
Square Shower Seat

L-Shaped Shower Seat
(Click on any image to see a full-size version; use the back button in your browser to return here)

The dimensions with text are the parameters and in this case are all type-based. Each type created can set a different value for each of these dimensions. The dimensions with numbers only are fixed dimensions, which maintain desired distances between two reference planes when one is moved by a change in a parameter value. In this case, I chose to make the maximum allowable distance off the back and side walls fixed dimensions.

The blue double arrow icons are controls that allow the graphics to be "flipped" to cover opposite hand situations. Adding these is as simple as selecting the Control tool on the Design bar, choosing the Control type on the Options Bar and clicking in the plan view window to place the Control. (I am currently using Revit Architecture 2009; the process in 2010 may be slightly different.)

One might argue that with only two types in each family, this is a bit of overkill. Other types, based on specific manufacturer's dimensions, could easily be added. (The elevation views also have a Height and Thickness parameter to drive the location of the top of the seat and the thickness of the seat.) The point here is to show some of the possibilities. Components that have the same basic shape, but many possible sizes - for example, Doors - allow a single piece of content to have many types, representing the range of available sizes. By carefully setting up reference planes and parameters, you can add as much control to your custom content as you need, rather than having to make a custom Profile or View Block for each size or live with having a single Profile or View Block being scaled to the overall width/height, as you would have to do in Architectural Desktop.

Using type parameters allows you to build-in standard sizes, which is appropriate for items that are manufactured to certain, predetermined sizes. Parameters can also be made instance-based, if you want to be able to set the parameter value for each instance, which would be appropriate for content that is built-to-order.

No comments: