Today I'm going to pick up where I left off in the other post on this topic.
Previously, we discussed how the left-over space in the Railing system family can be filled with a baluster at a user-defined spacing. The problem is that we do not have the same level of control we have with the main baluster pattern and the posts, so we cannot define where the top and bottom of this left-over is through the Edit Baluster Placement dialog. So we have to resort to modifying our post and/or baluster families.
Before we begin, here are some interesting facts about balusters:
- Baluster families (whether posts, panels or neither) cannot be generated through a Generic Model family by selecting the appropriate category, so if creating something from scratch, you need to make sure to start with the appropriate template. The category does not show in the list and in fact, you cannot even do an in-place baluster family. When you open such a family or create one from a template, you'll notice that no category is highlighted in the Family Category and Parameters dialog.
- The Top Cut Angle and Bottom Cut Angle Instance parameters are used for baluster families. These parameters give you the ability to trim the top and base of a baluster according to the slope of the top and base hosts. The Yes/No parameter "Post"works in conjunction with these parameters. If checked, these angles are set to zero and the top and base of the baluster are cut horizontally against the host and/or the railing's profile origin. Notice that these parameters are also available in the Baluster - Post family template, but the angles and sloping reference planes are not drawn. I personally prefer to use the Baluster template in lieu of the Post template, so I don't have to maintain two separate families. I can simply check the Post parameter to have it trim horizontally.
- Even though you can un/check the baluster family parameters "Always Vertical" and "Shared", the OK button stays greyed out. So basically these cannot be changed.
- Baluster templates have a fixed origin. Reference plane's "Defines Origin" parameter has no effect on changing the origin location. Make sure to locate your geometry relative to the original ref. planes set to define the origin. Avoid moving these as you'll get frustrated when the usual logic for geometry location in your project doesn't seem to hold anymore ;) If you lose the origin location, simply import a dwg into your family with some lines located at the WCS Origin, using the Origin to Origin option with Orient to View checked and you'll easily find where it is.
Now that you have some great cocktail-party facts that will make you look smart at your next User meeting or Mixer, we'll move on to see how to give an offset to the base of the baluster family.
Above you can see what's necessary to create control for the base offset. The baluster family has a void at the base and top. For the base void, we need to control the top of the void sketch. So I added a horizontal ref. plane and assigned a label parameter. I called it Base Offset. Then I moved the sloped ref. plane to the intersection of this new horizontal ref. plane and the vertical, center plane. The angular parameter will rotate the sloped plane around the intersection of the sloped plane and the horizontal plane (the two planes that the angular parameter references). In this case, even if you turn on automatic sketch dimensions, you will not see these relationships. Since the horizontal plane can move vertically based on the value of the Base Offset parameter, Revit will also move the sloped plane to maintain the intersection point in the same place. Also note that there's another parameter called "Baluster Height" that is not shown in the image (from ref. level to second ref. plane from top).
When you load this family in your project and assign a positive value, the base of the baluster will move vertically. The same can be done to control the top of the baluster. The top will trim at the angle of the railing slope, but the bottom will be horizontal since the host for the base is flat (the floor or the thread). If you want to make the bottom of the baluster be cut at the same angle as the top, replace the parameter "Bottom Cut Angle" with "Top Cut Angle".