Keys to Rotating Items Inside Revit Families

Many Autodesk Revit families need to have a portion of the family be able to rotate depending on parameters in the family.  A door swing is the most common example of this, as most Revit Architecture users want to be able to specify the swing angle of the door panel.  It seems that getting rotation angles to work correctly is something that is battled by many family creators, so in this article, I’ll give you the keys to getting that rotation angle to work correctly.  This technique can be used on door swings and other items that need controlled by a rotation parameter within the family.

When creating a rotation angle, the first key is to use a Reference Line instead of a Reference PlaneThe other key is to lock the Reference Line endpoint to the intersection of two Reference Planes that represent the rotation point of the rotating item.  Many users have difficulties because they fail to do both of these key steps.

Let’s take a look at the steps to accomplish the 2 keys just mentioned above.

  1. Start a family using the appropriate template.
    1. While the Revit family template that will be used to create your specific family will vary depending on the family requirements, I will use the Generic Model.rft template for this illustration.  (The information shown in this illustration is applicable to other family templates, but the Generic Model.rft template provides me with a clean template to illustrate the rotation topic.)
  2. Draw the Reference Line.
    1. From the Home tab, and the Datum panel, select the Reference Line option.  (Not the Reference Plane option.)
    2. Draw the Reference Line starting at the intersection of the two Reference Planes and extending the Reference Line at an angle away from the intersection.
  3. Align and lock the endpoint of the Reference Line to the Reference Planes.
    1. From the Modify tab, and the Modify panel, select the Align command.
    2. Select the vertical Reference Plane.
    3. Select the endpoint of the Reference Line.  After moving the cursor over the endpoint of the Reference Line, you may need to press the TAB key a few times to cycle through available options until you see the dot appear at the endpoint.  The dot represents the endpoint and is the 2nd key to getting the rotation to work correctly.
    4. Select the Lock button that appears after aligning the endpoint.  This will actually lock the endpoint to the vertical Reference Plane.
    5. After locking the Reference Line endpoint to the vertical Reference Plane, repeat the same process to lock the same Reference Line endpoint to the horizontal Reference Plane.
    6. Locking the single Reference Line endpoint to BOTH Reference Planes ensures that the intersection will be the rotation base point for the Reference Line.
  4. Create a Rotation Angle parameter that will adjust the Reference Line to the desired angle.
    1. From the Annotate tab, and the Dimension panel, select the Angular command.
    2. Place the dimension by picking the Reference Line and the desired Reference Plane.
      1. The actual Reference Plane that is selected is very important, as this will dictate the angle that is specified by the user in the parameter that will be created in the next step.  Choose the reference plane that will make sense to the final user when they specify an angle in the future.
    3. Highlight the angular dimension.  Go to the Options Bar (typically at the top of the screen), and select <Add parameter…> from the Label option.
    4. In the Parameter Properties dialog box, type “Rotation Angle” in the Name box.  (This can be any name that you desire, such as Swing Angle for a door.  Just make sure that you maintain consistency with names.)  Select the Instance option if you desire the angle to vary for each instance occurrence of the family inside a project.  Pick the OK button to exit the dialog box. 
  5. Flex the geometry to make sure that the Reference Line rotates as desired.
    1. Press the Modify button to make sure that nothing is selected.
    2. Go to the Modify tab, then the Properties panel, and select the Family Types button.
    3. Next to the Rotation Angle parameter, type in a new value and pick the Apply button.
    4. Verify that the Reference Line rotates as desired.   Pick the OK button when you are satisfied that it rotates as desired.

After going through the above steps, you can create and lock actual geometry to this Reference Line, such as Extrusions, Model Lines, Symbolic Lines, Components, etc.  Be sure and lock down all of the dimensions for the items that you create to ensure that they move with the Reference Line and still maintain their required size and shape.

Whether you are creating a door panel or something else, using the above steps will allow that item to rotate around a specific base point.

The above steps were performed in Revit Architecture 2011, but are similar in Revit Structure and Revit MEP.  If using earlier releases, the same process can be utilized, but the command buttons may be in different locations in the interface.


21 thoughts on “Keys to Rotating Items Inside Revit Families

  1. I must say some of the terminology in these instructions is confusing. In step 3.2 we are directed to “select the vertical reference plane”. Both of the reference planes in this example are vertical! Later on it directs to “select the horizontal reference plane.” when there is no horizontal plane. Perhaps it should say, “select the reference plane that divides the view into left and right sides.” and “select the reference that that divides the model into front and back sides.”

  2. I am trying to create a structural column tag that can have any rotation angle. I am trying the above method and the reference line works fine however the only way I can find to ‘lock’ the Label to the reference line is to ‘Group’ it. After grouping the rotation goes all wrong. The label is Middle and Left Aligned.
    Any ideas?

      • Thanks Doug,
        The AUGI tag you refer to does not work they way I would like it to. That tag requires a new type for each angle instance. I want to have a tag where the angle is an instance parameter, not a type parameter. It just amamzes me that I can’t just ‘rotate’ the text!

        One tag, one type, any angle!?

        It seems that the method you describe above should work, however there is no way to pin the Label to the Reference line other than grouping (?), and when grouped the rotation seems to get messed up.

  3. Hello

    The start is totaly clear to me. 1 thing I do differently is that I “pull” the referenceline with 2 parameters isZERO ( 0 ) to the place I want it. Or with a different number.

    I’m trying to use ths methode to make a rotated array with a parametrical adustable start angle. But when I change the angle the constrains are not satisfed.

    • @Phillip from January 17, 2011
      I know this is an old post and you probably worked out what was needed. I’m posting for anyone that might come afterwards.

      The label should be created as a nested family. At that point you can apply the rotation without any issues. You can also use the same process in families that might be using the label for an annotation. Where it would use the instance based angle parameter, linked through to the 3D family (label with invisible lines for purpose of alignment -> annotation family with rotating label -> 3D family with linked instance parameter to rotating label).

  4. This has been extremely helpful. The only addition I might suggest would be to clarify that families that are imported and locked to that Reference Line need to be on that Reference Line’s Workplane in order to rotate parametrically.

  5. One other comment on this post is that if you are nesting a family so that you can rotate several components at the same time, you should use a FACE BASED or other hosted family template (ex. Generic Model face based.rft) to create the nested family. This will allow you to “Host” the nested family to the reference line indicated above and the rotation will work correctly. I found this out as I tried to unsuccessfully use a family I created using the “Generic Model.rft” template which did not allow me to host the nested family to the reference line or anything else for that matter.

  6. Very good guide; helpful and much appreciated.

    However, the real challenge is to rotate in elevation. I have been trying for quite some time to rotate an object in elevation, and have found it to be, for lack of a better description, impossible.

    What I’ve been trying to do is tilt a 3-D box (with parametric width, height, length) up from the surface of a face based slab. Seems like one of the simplest and most basic of things one could ask for.

    After months of trying, I’m about to throw in the towel. It has been my own personal “Moby Dick” for the past four months.

    I simply can’t believe that an operation so simple could be so unattainable. I’m missing something fundamental about the Family Editor. I can do the azimuth rotation in my sleep, but in elevation, I wonder if anyone has successfully ever done it ??

    Does anyone have any ideas?


    • Dave,

      I believe that I have a solution for what you desire, if I understand your desire.

      I created a new family (Family 1) based upon the Generic Model Line Based template. This family contained the 3D box controlled by the size parameters. I then inserted this family into of another family (Family 2) that was based upon the Generic Model Face Based template. After constraining Family 1 to the reference planes in Family 2, I created an angle parameter between the Face of Family 2 and the reference line of Family 1 in the Front elevation. I was able to adjust the angle of the 3D box from the face with that angle parameter.

      The key to accomplishing the above was to use a nested family and use the Line Based generic family for the nested family.

      I hope that accomplishes what you desire.

      That sounds like a good topic for a future blog article for me with more detail and associated images.


      • Doug,
        Thanks for responding, and for coming up with the new idea.
        I have been corresponding with others on the AUGI Revit Families forum, and with help, came up with the same method that you describe. I have a lot of components that need to tilt in elevation view, and the method workspretty well. I posted my results at:

        Feel free to comment on the method I list there (it’s a pdf file). I’m still fairly new to Revit, so may have missed something.

  7. Hello, I am wondering if this tactic works the same with revolves instead of extrusions? In the case of revolves, do I use the reference line as my axis line and lock to that? I have yet to be able to make this work. Thanks!

    • I cannot get it to work with a revolve either. It looks like the best way to handle a revolve for this situation would be to create a revolve nested family and lock the nested family to the reference line.

  8. Pingback: Characteristics of Revit Reference Lines | Applying Technology to Architecture

  9. Parabéns e muito obrigado a você da Doug Bowers que, gentilmente dedicou seu tempo elaborando didaticamente e, compartilhando seu conhecimento que nos é muito útil. Abraços.

  10. I cannot seem to get it to work. When I go to change the angle it says “Constraints are not satisfied”. The instructions are well written, but nothing I do seems to work.

  11. I have tried the above methods but the problem I am facing is that I have selected reference plane first to align and then I trying to locate the end point of the reference line, But I can’t find it I have pressed tab key several times so that I will be able to find the end point to lock the reference lines. I am using revit 2015 and I tried in revit 2016 as well same problem is there in revit 2016.

    Please anyone can answer ?

    • I am not sure what may be causing it to not work for you as it works in both of those releases for me without issues. Some things to consider are: 1) Make sure that your cursor is hovering over the endpoint location of the reference line. 2) Make sure that the reference line does not already have the endpoint aligned to the reference planes. 3) Try deleting the reference line and drawing it again with the endpoint of it snapped to the intersection of the reference planes and drawing it at an angle to the 2 reference planes.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s