Friday, April 27, 2012



What if I said the following, “you will never need to use the angular dimension again when creating rotation parameters in families” would you believe me?

I have found two alternative methods to create rotation parameters that do not use the angular dimension. Why did I create these two methods? The answer is simple, the need for stability.

The traditional method, shown in the rig above, uses the angular dimension command. It is not a secret that it is unstable when it is at a zero value and breaks most of the time at other angles. Because of this, I have created two methods that completely avoid this unstable dimension. It’s called “Ride the Rail” method for use in the mass and adaptive component family environment and “open reference circle” method for use in the classic family environment.

I have already showed these two methods at the Los Angeles Revit User Group (LARUG) and the BIM Users Group Inland Empire (BUGIE) in the month of April 2012. These methods will also be shown in the two classes I am teaching at the Revit Technology Conference in Australia in May and at the Revit Technology Conference in Atlanta, GA, USA in June.

I created the “Ride the Rail” method as a solution to a challenge at the Los Angeles Revit User Group Meeting where members could submit Revit challenges. Read all about the history of Ride the Rail method here thanks Jay Zallan.
As shown above in the rotation rig, the Ride the Rail method does not use the angular dimension to control the angle of the hosting reference line hence it is extremely stable. It uses the power of the reference point to “ride” the “rail” of the circle or curve to control the angle. There is only one major drawback from this extremely stable method. Since it uses the power of the reference point, it is only able to be used in the mass family environment or the adaptive component family environment because all other environments do not have reference points.  This was very troubling to me and so I decided to create a rotation rig/method that could be used in any family, classic, mass, and project environment.

I realized that the whole concept of ride the rail method was based not on the point but the reference plane of the point. I then made the connection…open up the circle and host the reference line on the reference plane at the end of the open reference circle.

From this, I created the “open reference circle” rotation method as shown in the rotation rig above and notice that it uses the arc angle of the open circle to control the angle NOT the angle parameter. Below is a step by step process on how to create the open reference circle rig to control rotation for a door family in Revit. Of course this method could be used to a rig that could then be used to rotate anything.

1.     First start a new door family from the default family template in Revit. Go to the reference plan view.
2.     Create a reference circle whose center is set away from the center of rotation
3.     Turn on the center of the circle mark. Developers please turn it on by default.

4.     Align and lock the center of the circle mark to the horizontal reference plane
5.     Align and lock the center of the circle mark to the vertical reference plane
6.     Note that in the step above the circle center was placed away from the center of rotation so that it would be easy to confirm that it was aligned in the correct location

7.     Split the circle with the split tool
8.     Delete the portion of the circle to create an “arc”

9.     Align and lock the tail end of the open circle to the horizontal axis

10.   Select the open circle.
11.  Note that when the open circle/arc is selected a very very very interesting element pops up that is not available anywhere else in Revit…..the arc degree dimension! It is this phenomenon that I took advantage of in order for the open reference circle method to work.
12.   Select the arc angle dimension and make it permanent
13.   Please note that the arc angle is NOT the arc length

14.  As shown above, do not get the arc angle and arc length confused. They are two completely difference dimensions. The difference is that the arc angle is able to be converted to a parameter that is CHANGEABLE. In contrast to the arch length, the arch length is a reporting parameter only, meaning it is only able to “show” the length value and not able to be changed.

15.  Create two angle parameters
a.     Create an angle parameter called “INPUT_ANGLE”
                                                              i.      This will be used as the input angle, what is traditionally used to define how “open” a door is.
                                                            ii.      I like to use the arc angle to control the back side of the angle instead of the front because it is easier to work with
b.     Create another angle parameter called “ANGLE_180_FIX”
                                                              i.       it is the true arc angle
                                                            ii.      Give it a formula = 180-INPUT_ANGLE
16.  Assign the “ANGLE_180_FIX” parameter to the arc angle parameter

17. Make the radius of the open circle a permanent dimension
a.     This is done to further constrain the open circle
b.     It is also very critical that it is done at this step and not any other time.
18. Set the work plane to the end of the open circle, this is done so that the reference line that will host the door geometry is placed at the correct plane.

19.   Draw a reference line on the set work plane from the open circle end to the center of rotation of the open circle.
20.  Congratulations! The open reference circle rotation rig is now complete.

21. Set the reference plane of the host reference line to receive the door geometry, create the door geometry on the hosting reference line.
22.  How to create the door geometry will not be covered in this posting however, it is very simple to perform.
23. The following shows the rig in action in the door family and in the project environment.
24.The door family was covered here however; this method is applicable to host any geometry, in any family, in any environment.

Above is the example Door family at different angles that are hosted on a wall element in the project environment that is using the open reference circle rotation rig. 


Alfredo Medina said...

Interesting. However, there seems to be an issue. Since the parameter that controls the angle of the arc is also determining its length, indirectly, this method will break if the user enters 180 or 360, because at 180 there won't be any arc to do, and Revit will issue the "line is too short" error. It will also break if the user enters 360. It could be fixed, but that requires more work on the formula.

Also, I don't agree that the other method is "unstable when it is at a zero value and breaks most of the time at other angles." That is simply not true. The other method, with only one parameter and one line, can rotate an element all the way around without breaking at any angle, not even at 0, 180, or 360.

Having said that, this method is an alternative, not necessarily an replacement or an improvement over the other method, since this one takes more steps to do, anyway, and the reason that you have provided about the "instability" of the other method is not true.

Alfredo Medina said...

The blog article begins with this statement in capital letters: "YOU NEVER NEED TO USE THE ANGULAR DIMENSION AGAIN WHEN CREATING ROTATION PARAMETERS IN FAMILIES", and it says that the other method "is unstable when it is at a zero value and breaks most of the time at other angles." Both statements are misleading. That is my point. I am not being harsh. I am just pointing out what is true and what is not.

J said...

You are correct that it's usefulness is a bit overstated but it is a wonderful method and uses some 'hidden' Revit functionality (the hidden, radial angle dimension), I guess "never" was a bit over the top!!! I modified my comments to reflect my view better and think that we can let the post stand on it's own...Obviously it generates conversation and that is always good!!!

I do still think this is a good method for some situations and is more stable and while you are technically correct about 180 & 360 degrees that fact misses the reality of a door IMO...

Doors cannot open to 180 degrees with the normal hinge setup, that this method is applied to... there are handles on doors, therefore "in reality" these doors should only open to approx. 178 degrees maximum.

Furthermore doors cannot swing 360 degrees, no matter what, that's a circle...these can go from 0 degrees (closed position) to 178 degrees (fully open, with handle bumping into wall) least what I saw worked like that :-)

We did speak to this at the LARUG and noted that if an offset hinge, such as Rixon hinges are used a different method would be appropriate.

As to the instability that is opinion...the most stable way to get the traditional method to go to 0 degrees and open back up is to nest a panel into a door family and as we said, that may be appropriate in some instances, this method is useful to alleviate nesting in cases where it is no longer necessary, thus lighter families, etc...but again opinions...we all have em...

There are always different needs for different objects and designs, but this method is not only useful for doors, that is just a simple way to teach and explain that there are different methods possible... I might also add that this method is one that nobody in Revitland, at least as far as I have seen has come up with.

This method is yet another tool in one's cache and it's a very creative & newly found solution, so while it may overstate it's use the post & method are a valid new option.

J said...

BTW: The quote about "...always..." was posed as a question...we obviously are being challenged to find out when and where it's appropriate!!!

We can break any method of content creation (and content) ...I am curious how many applications I find this method useful the very least it opens up a potential for more hidden functionality to be found and for that I think it's very helpful

Alfredo Medina said...


Yes, the method is useful and it is a valid alternative. Not a replacement, though. And, about the angles, I was not referring to doors in particular, but about the usage of this method for rotating any other element in the standard family editor, as proposed in the blog article. I see some limitations that the other method does not have. It might be much more useful in the conceptual design environment.

J said...

Ahh I get it...Stay tuned there is a slight modification coming that allows this method to swing to any angle from 0 to 360 degrees and doesn't break!!!

NKramer said...

I am curious as to how you make this work. The 180/360 issues normally come from opening and closing the swing arc. Do you nest the swing arc or other parts of your families? Also, how do you address when the angular dimension flips from one side to the other. Mathematically the angles are complimentary and the same. Revit world though it tends to jump references and break geometry when the dimension flips...

Erik said...

So, where's that "slight modification?" Not like you guys have been busy with RTCs and USC BIM Seminars and work and stuff....

Hayden said...

Good day Marcello.

I tried your technique but keep getting a “Constraints are not satisfied” error. See capture at What am I doing wrong?

Marcello Sgambelluri said...

looks like you have to lock the center of the open circle to the intersections of the reference planes
make sure to turn on the center mark of the circle

Hayden said...

Thanks for the reply.

I did lock the center if the circle to the reference planes as you described in the article prior to cutting the circle to make it open. It unlocks the endpoint lock when I try adjusting the angle.

Aaron said...

Hello and thanks for all the intuitive ideas, I am trying them out and have even had luck with them. However I am facing a issue I can not seem to figure out involving a MEP valve with actuator. The valve will be stationary but I need the center (Z axis) of the actuator to revolve around the center of the valve (the Z axis). I accomplished it in the mass environment but I can not add pipe connectors, I have accomplished it in a family, rotation works great in family environment, but once in a project it breaks and the actuator comes of the z axis. Any ideas?