BILT Speaker

BILT Speaker
RevitCat - Revit Consultant

Tuesday, 9 September 2014

Weird Revit Railing Stuff - Part 1 - Top Rail Transitions


In my previous post I described the properties for "Top Rails" in the new railing types.  Now it is time to show some of the weird differences between old and new horizontal rails.
Goose-neck Transition

Rail Transitions

The Revit help describes the "Transition" property as:
         Specifies the type of transition used in the handrail or top rail.
  • None. In a stair system that includes a landing, the inside rail will end at the nosing of the first or last tread on the landing
  • Gooseneck. Used where there are tight transitions and complex rail profiles
  • Simple. Used where there are tight transitions with a circular rail profile
What the help file does not explain is the subtle differences between these 3 options and the traditional rail transition (over which we have no control).  Nor does it explain how we further manage these transitions.
Here are some examples of what transitions you get on a half landing where the railing turns through 180 degrees on the inside.  In this example the top riser of the lower run aligns with the first riser of the upper run (not good design but common enough in tight fire-escape stairs):

Old Style railing (with the rail set to represent the handrail but with no balusters, for clarity).  Note that the rail actually breaks with vertical cuts.  No options for transition.

Top rail only - None Transition.  Revit does a slightly better job with the joins for the upper run, but still fails on the top of the lower run (but the cut is in a different location to old style railings).  However, it gives a warning message, saying that the rail is not continuous.


Top rail only - GooseneckTransition.  Would you show a railing like this to your builder?  No!  The Revit help file shows a 90 degree corner where it looks marginally less ridiculous

Top rail only - Simple Transition.  This looks exactly the same as the None transition, but does not give a warning message - so this is probably the better option to go with.

Old Style railing with the a one tread stagger in the riser alignments - better design but Revit still cannot handle it even if a builder could.

Here are the four options at larger scale with a one tread stagger of the risers on the landing:
Old style railing
Top Rail None Transition
Top Rail Gooseneck Transition
Top Rail Simple Transition

If you add both the old style rail and the new top rail at the same height, Revit does not give any error messages - it will create both occupying the same space, but with different transitions.  This won't show in plan but looks messy in 3D (even more so if you made the transition a gooseneck.
Old style railing and top rail combined


This differentiation is further complicated by the plan offsets of the rail relative to the stair edge.  All the above examples were done with the centreline of the rail being coincident with the stair edge (where the railing sketch line goes by default).
Railing centred on stair edge
 
If you change the plan offset so that the railing sits over the actual stair treads (and landing), you would expect the railing transition to work better as it has a little more length to make the turn in (half a railing width).
Sometimes it works better, and sometimes not. . . . .
(NB.  In order to make that horizontal offset, it is somewhat confusing - see below **).

The old style railing behaves somewhat better when you offset the railing - it gets the upper transition right but still can't cope with the lower transition even though it is plainly "buildable" in real life:
Old style railing offset from centreline
The new Top Rail option finally works in 3D when you offset the top rail by half a rail width (for None and Simple transitions).
 Top Rail offset from centreline





Aaaargh!  When you do that it gives the Non-Continuous rail warning message.  You had better check your plan view to see what it has done - yes, it breaks it in plan to give a totally unacceptable representation.
Non-continuous rail in plan
 The gooseneck transition works fine in plan, but is crazy in 3D - unacceptable again.


So it looks like we are snookered!  None of the options work effectively in both plan and 3D.  There will be more on this in a future post - perhaps a solution?  There is also much more to know about weird railing behaviour in Revit . . . . (to be continued)

How to change the rail horizontal offset

Warning: the next section will give you a headache.

**  To change the plan offset of a rail is confusing:  There is an instance property for each railing, but using instance properties for such global changes is a nightmare for inconsistency.
Not only is it unwise to use the "Tread/Stringer Offset" instance property, but it has a default value of 25.4mm (which is a nasty one inch in imperial units) - a value that you cannot pre-set, so you always get 25.4, which really should be set to zero for consistency.
There are three type properties you could use:
For the old style railings, you have to go into the Rail Structure settings and find an Offset property for each rail.  This is fairly logical (albeit hidden away) and it allows different offsets for each rail.

For the new style Top Rails, you can change the "Baluster Offset" which also moves the top rails along with balusters.  NB. this setting has absolutely no effect on old style rails.

In addition to this setting, there is also a "Hand Clearance" type property belonging to the Top Rail type , which cannot be accessed from the Railings type dialog box - you have to find it in your project browser.  This value will offset your top rail sideways, and it will change the "Projection" property (clearance plus handrail size) - so for a top rail on a stairwell it could be zero or -25mm to make it centred on the sketch line;  for a wall mounted handrail it could be about 50mm  but you would be better off using "Handrails" for that purpose, which have their own hand clearance property - it would be easier for users to understand if the two sub-categories are kept for two distinct purposes.

Headache yet?  No, well in that case you need to be a juggler, and keep those 4 horizontal offset properties coordinated for every railing situation you have - and you might just make it as a Revit model manager, or even a BIM manager.

More Weird Railing Stuff:
Part 2 - Railing Extents (Top Rail only)
Part 3 - Railing Sketch Offsets & Transitions

Saturday, 30 August 2014

Top Rails in Revit Railings


Revit 2013 introduced a whole new way of building stairs.  At the same time some subtle changes were made to railings in Revit - in particular the new concept of a "Top Rail" as a separate sub-component of the railing definition.  This can cause confusion as the old rail structure still remains in Revit, and the two methods can sometimes perform the same function - but with different behaviour. . . . . .

The railings type properties dialog boxes have always been complex (particularly balusters, but that is another matter).
  • Old style horizontal rails in a railing family:

  • Horizontal Rail Structure in old style railings:
  • From Revit 2013 new properties were added:  "Top Rail", "Handrail 1" and "Handrail 2".  For the moment we are only interested in the Top Rail, which can do the same job as the highest rail (old style), including controlling baluster heights.  Even if you upgrade an old project (or template) you may not see the new properties on old railings - you have to swap them over for new railing types that are supplied in the new project templates (and then match all the other settings you want).

  • Top Rail properties in a Railing only have two settings - a height and a Type.  By default the type is set to "None", which means you won't get anything.

  • You have to select from a drop down menu to get a predefined top rail type.  You cannot change the properties of the top rail here.
  • It is the same old three-step trick in Revit:  close the dialog box, go to the Project Browser, find the new "Top Rail Type" system family (subset of Railings category) - modify, duplicate, rename etc.  It will have some interesting new properties - the most important being "Profile" where you can select a 2d profile family (another 3 steps to change that if you need to!);  other interesting properties include Extensions and Terminations, but that is for another time.
  • One other important property is "Transitions", which controls how the top rail behaves at changes of angle in the rail.  What this does will be demonstrated in the next blog post.

The new Top Rail and old Rail structure can coexist, or you can have one or the other;  you cannot have neither though, as the railing must have at least one horizontal component.  Depending on which combination you have, Revit will give quite different results, and can display some weird behaviour - to be described in following blog posts:


Friday, 11 July 2014

Selecting Individual Components Within a Revit Repeater

Repeaters in Revit are made up of an array of adaptive components that have been placed on one or more nodes of divided path/surfaces, and then arrayed using the Repeat command.  This can only be done within the Conceptual Massing Environment (CME) or the "Point World" as Andy Milburn refers to it - this means that it could be done in an external mass or adaptive family, or within an In-Place Mass family in a project. 

Once a repeater is created, Revit treats it as a single object, but you can also select individual components within the repeater. When you try to select a component, Revit will always go for the whole repeater by preference, and it can be tricky to actually select a number of individual components.  Here are some notes on the curious inconsistencies between different situations, and some hints on how to make the process easier.

Select Components Within a Repeater

  • You can hover the cursor over a component and press the TAB key to highlight it, before selecting it.  This is a standard Revit technique but it is not as easy as usual, particularly if you try to select more than one component - after picking the first component, when you press the Tab key it often highlights an element within the adaptive component or even a different component to the one that the cursor is on.
  • You cannot select components inside a repeater by dragging the cursor around them.
  • There is no command for selecting all the components in one row or column on the repeater.  It would be really useful if there was a method somewhat like selecting mullions on a curtain wall.
  • You can use the "Select All Instances" command by right-clicking on a selected component within a repeater - but it has some limitations (see next section):

Select All Instances

Different rules again, that you need to learn:
  • In the external mass family editor, you can right-click on a selected component within a repeater to pick all instances in the view or family.  This means that you could select and change multiple instances - particularly useful for resetting all back to the default family type.
  • In a project, In-Place mass (edit mode) - If you select one of components in the repeater, then right-click, both Select All Instances options are greyed out - this is seriously restrictive as this would be the most useful situation to be able to change multiple instances, particularly by view.  
 
  • In-Place mass (edit mode) - If you select the family type from the Project Browser, then Select All Instances you get different results, depending on what you try to do:
    • If you select a type that has been used in the active mass family, then Select All Instances Visible in View will be available - however, it just selects the whole repeater as a single entity (not the components within it) 
     
     
    • If you select a type that has not been used in the active mass family, then Select All Instances Visible in View will not be available
     
    • Select All Instances in Entire Project will be available whichever type you select - and it does select individual components. However, it will also select instances outside of the active mass in the project - seriously restricting what you can do
     
    • None of the element properties are available - this is because it selects the repeater as well as the individual components.
    • Try reducing the selection by excluding the repeater - it then displays some of the system parameters (comments and Mark), but the type selector is greyed out, even if this type has not been used elsewhere in the project. 
     
  • In a project, but outside the in-place mass editing environment, you can Select All Instances in Entire Project only. This means it will select components inside repeaters within in-place masses for which you cannot change the selected components to another type (because they are inside a mass) - unless you edit the mass.  It is a "Catch 22" situation.

So the end result of all this is that in a project (in-place mass) you have to select them all individually.  This can be a slow and tedious process, but there is one way to improve it slightly:

Hot Tip

The best way to quickly pick a number of components is to select the whole repeater, then isolate it in the view - then it is much easier to individually select each component in the repeater (usually no need to tab-select)
Once you have selected multiple instances of components within a repeater, you may want to change some of their properties - refer to Repeater Instance Properties

Friday, 4 July 2014

Revit Repeater Instance Parameters

I mentioned in my last post that I learnt two new Revit Repeater tricks at RTC Australasia 2014 in Melbourne - both from Helen Gorina from the NY office of Perkins+Will, in her Lab "Applying Math and Logic to Facade Design".

The second trick was to do with how to access instance parameters of components in a repeater - I had already worked out one method for doing this, but Helen showed us a second way.  This concept has led me to analyse what exactly is happening with components in repeaters.

What happens to the original component when a Repeater is created?

When you select an adaptive component (or several) and turn it into a repeater, the original component disappears and new copies of it are created in a pattern.  You can select the whole repeater as one element, or you can tab-select individual components within a repeater.   When you select one of the components in a repeater, you will notice that it does not display all its normal instance parameters in the properties palette (or they may be grayed out) - so you cannot change its Mark, Comment or user defined parameters.  More of that later.

In the mass family editor (in-place or external), if you check the element IDs of two adjacent components within a repeater you will notice that they are not consecutive numbers - there will be a gap in the numbers.   eg.  ID# 85340 and ID# 85342.

So what has happened to the missing ID number between ( ID# 85341)?  It seems that Revit still has a copy of the component hidden away behind the repeater component.  You can't normally get at that hidden component.

Interestingly, if your repeater adaptive components are "Shared" and your mass family is In-Place, you can tab-select the components when not in mass edit mode - Revit will give you a different set of IDs, and these will be consecutive.  So that means that each component within a repeater has 3 element IDs - The mystery deepens.



Instance Parameters

There are also some interesting variations as to when you can or cannot see the instance parameters of selected components within a repeater:
  • If you select a component in the external mass family editor, it will normally display the type selector as "Default Component", and its instance system parameters (Mark & Comments) will be hidden (except for "Flip").
  • If you edit an in-place mass family in a project, and select one of the components in a repeater, it displays nothing in the Type Selector, and it displays user defined instance parameters, but not the system parameters (Mark & Comments).
  • If you are not in mass edit mode and you select a (shared) component within a repeater within an in-place mass family, you get quite different results again:  You can see the system instance parameters - Mark & Comments;  you can also change those values (but not the user defined instance parameters).  

And that was my trick for accessing the instance parameters of individual components within a repeater!

Helen's trick lets you get at the instance parameters within the external mass family editor:
  • Select one of the repeater components - it will list as "Default Component"
  • Change its type from the default component to the actual family/type that it was created from (show images).  Hey presto, - you can now access its parameters.  
  • This only works for external families.  For an in-place mass family it won't let you change it, sadly.

So, there are 3 different rules depending on the situation.  More complex Revit rules to learn!

To make use of this trick, you probably want to change all of the components within a single repeater.  But it is tricky to select them all in one go.  More of that in another post on this subject. . . . . Refer to Selecting Individual Components in a Repeater

Monday, 9 June 2014

Zero Length Lines in Revit Are Possible

I always learn something new about Revit at RTC - and RTC Australasia 2014 in Melbourne was no exception.
This time I learnt two new Revit Repeater tricks - both from Helen Gorina from the NY office of Perkins+Will, in her Lab "Applying Math and Logic to Facade Design".  These tricks have led me to understand more about adaptive components and repeaters.

Schedule Panels on a Facade

The first trick I picked up during a description of how to automatically schedule facade panel column and row numbers.  This was done using Repeaters on a divided surface - using adaptive component "Jigs" as a series of locators placed on the divided surface nodes.  Each of these jigs had several adaptive points linked with model lines and reporting parameters used to track the X and Y locations of the components on the grid.

Last year I posted a similar technique for scheduling column/row numbers that involved a lot of trigonometry - this was done with a single repeater across a rectangular panel.  Helen's technique is a lot simpler and more elegant, and involves far less maths - it requires creating separate repeaters for each row (so it is perhaps less flexible if the grid changes).  In order to direct Revit to create a repeater in one direction along a row of divided surface nodes, you need to place two adaptive components in a series - as I have described previously (see diagram below).

 

When you have multiple point adaptive components, Revit will only place repeater elements  where it has a suitable series of adjacent nodes.  This often means that you get missing edge conditions on the repeaters.
Sample 2 point repeaters from my previous blog posts
If you want the series of components to be of different lengths, as this technique requires, you need to place the two initial adaptive components appropriately to indicate the relative change required
For the scheduling technique, you actually need the first adaptive component in the series to have a zero X value so that it knows it is in the first column.  So, what Helen did is to place the reporting "Jig" component with two of its adaptive points (measuring X distance) placed on the same node;  the second adaptive component was placed on adjacent nodes, so that its X distance measured one column width.  I am not describing Helen's technique in full here - you'd need to attend RTC for that.  What I am interested in here, is that in learning this new trick of coincident adaptive points to generate a zero length reporting parameter, it became apparent that Revit is doing something I thought impossible . . . . .

Zero Length Lines

If an adaptive component has multiple adaptive points, and those points are joined by model lines or reference lines, you would think that when you use the adaptive component, Revit would not let you place the adaptive points in the same location because that would mean zero length lines.   You would think wrong!  Revit allows this without a squeak of complaint.
Revit most assuredly does not allow zero length lines in traditional families - they break when you try to place them such that line length gets too small.

If you have solid forms attached to the lines or adaptive components, then Revit will not allow zero length lines where that would mean zero length edges - it breaks as you would expect.

This is an interesting Revit inconsistency that you can use to your advantage when you want to be able to report zero lengths (and base calculations on them).

I'll talk about the second trick I learnt in the next blog post on Repeater Instance Parameters

Saturday, 10 May 2014

Pump Up The Volume in Revit - RTC 2014

I will be presenting at two Revit Technology Conferences this year:

RTC Aus - Melbourne, Australia (May 2014) - Session 13 at 10.45am Sat 31st May.
RTC NA - Chicago, USA (June 2014) - Session 10 - 2.30pm Fri 21st June

The topic titled "Pump Up The Volume - With or Without Dynamo" will be on Computational Design: creating external controls in Revit to adjust building massing or other Revit families.  I will demonstrate two methods, and compare the relative merits:
  • Pure 100% Revit without the use of API, macros or Dynamo
  • Dynamo visual scripting to do create and control Revit models
Here is a Youtube promo for Pump Up The Volume



I hope to see you at RTC, where you will be able to learn how to apply these techniques and use them on your own projects.