## Rotating an object in 3 different axes, by points

Some time ago I wrote another article in this blog, about rotating a model object in Revit in 3 different axes. That method, based on reference lines and nested families, can be used in both the standard and the conceptual environment. By “standard” I mean a family that is created with the “generic model template”, or similar; by “conceptual” I mean a family that is created with the “generic adaptive template” or similar.

This time I want to describe a different method for rotating objects in 3 different axes, based on reference points and the premises that I describe in the next paragraphs. This method must be used in the conceptual environment, because the reference point tool is not available in the standard environment. A standard model family can be nested into a conceptual family, but not the other way around, which means that this method could be used to rotate standard or conceptual model elements, but only from the conceptual environment.

## A reference plane provides three workplanes

Exaggerating the representation of a point, it would look as in the following image. The point is represented by a sphere. There are 3 planes that intersect at a common point, the center of the sphere. In this image, one of the planes, the yellow one, is parallel to the default workplane: the Reference Level. Another plane, the blue one, is parallel to the default Front/Back plane; and the third plane, the red one, is parallel to the default Left/Right plane. Any plane is perpendicular to any other plane.

## One of the 3 workplanes of a point can be used to rotate the point

Revit provides a Rotation Angle parameter for reference points; that parameter applies only to one of these three planes. Let’s name that plane the “rotation plane”. The “rotation plane” is the plane that was parallel to the workplane that was active when the reference point was created. For example, if we created this point when the current workplane was the default “Reference level”, then, the “rotating plane” is the yellow plane.

## When the rotating plane is rotated, the other two planes keep their perpendicular position

The 3 planes form a fixed assembly, meaning that if the yellow plane is rotated by the rotation parameter, the red and blue planes will continue to be perpendicular to the yellow plane. In this image, the reference point has been rotated 15 degrees.

## A model family can be nested and hosted by a workplane

A standard model family, if it is work-plane based, of any conceptual family can be nested into a conceptual family, and hosted by a workplane. Therefore, such nested family can be hosted by a reference point in the conceptual family, since a point provides three workplanes.

## A reference point can be hosted by another reference point

Yes, a point can be the host to another point, ane the hosted point can be placed at any of the three workplanes of the host point.

## Creating the first point

The most typical position would be at the default reference level. Since this is the current workplane, the rotation parameter of the point applies to the plane that is parallel to the reference level. After we create this point, we can select the point and tie its rotation angle to a parameter, and then set the point’s horizontal plane as the new workplane, to proceed to host the second point.

## Hosting a second point on the first point

We already have a rotation in plan, or azimuth. Now we need a rotation in elevation. Therefore, in this image, one of the two vertical workplanes of the first point has been set as the current workplane, and a second point is about to be placed at that workplane. Therefore, the first point will be the host for the second point.

Revit will issue a warning such as “There are identical points in the same place. Lines created from points may not work as expected.” In this case we don’t want to create lines based on these points, so we can click OK to that message and continue.

Now we have a second reference point, hosted by the first one. The first point is already rotated 15 degrees at the plane that is parallel to the reference level. That rotation, then, will be transferred to any object that we host at the second point.

But now, what if we select the second point, and use its Rotation Angle to apply a rotation of 15 degrees, too? Since the rotation plane is always the plane that was active when the point was created, now the second point will be rotated along the “red” plane. If we hosted an object to this plane, the object would have rotations in two axes: 15 degrees in plan (or azimuth), and 15 degrees in elevation. The following image represents the second point, already rotated. Notice how the yellow plane is rotated 15 degrees in plan, and 15 degrees in elevation.

## Hosting a third point on the second point

We already have a rotation in plan, or azimuth, and a rotation in elevation. The third possible rotation for an object is around its own axis. Therefore, in this image, one of the vertical planes of the second point has been set as the current workplane, and a second point is about to be placed at that workplane. Therefore, the second point will be the host for the third point, while the second point is hosted by the first point.

Now we have a third reference point, hosted by the second one. The first point is already rotated 15 degrees at the plane that is parallel to the reference level, and the second point is already rotated 15 degrees in elevation. Both rotations, then, will be transferred to any object that we host at the third point.

But now, what if we select the third point, and use its Rotation Angle to apply a rotation of 15 degrees, too? Since the rotation plane is always the plane that was active when the point was created, now the third point will be rotated along the “blue” plane. If we hosted an object to this plane, the object would have rotations in three axes: 15 degrees in plan (or azimuth), and 15 degrees in elevation, and 15 degrees in its own axis. The following image represents an object with three rotations. Notice how the yellow plane is rotated 15 degrees in plan, 15 degrees in elevation, and 15 degrees in its own axis.

## Nesting a sample model object

Suppose that we want to use the same sample object that we used in the other blog article, the one that looks like an arrow, with a little arrow on the side. That object was made with the standard generic model template. It is set to be “workplane based” and not “always vertical”. Following the instructions of this article, we need to host that object on the third point if we want three rotations, on the second point if we want two rotations, and on the first point if we want just one rotation.If we need just one rotation, we would place a point, tie its rotation parameter to an angle parameter such as “rot_angle_azimuth”, and host the model object to the horizontal plane of the first point. The object would look as shown in this image, when the azimuth is set to 15 degrees:

However, if what we need is two rotations, then, we would host a second point on the first point, tie the second point’s rotation parameter to an angle parameter such as “rot_angle_elevation”, and host the model object to one of the planes of the second point, the plane that would rotate the object properly in elevation. The object would look as shown in this image, when the azimuth is set to 15 degrees, and the elevation angle is set to 15 degrees:

However, if what we need is three rotations, then, we would host a third point on the second point, tie the third point’s rotation parameter to an angle parameter such as “rot_angle_own_axis”, and host the model object to one of the planes of the third point, the plane that would rotate the object properly along its own axis. The object would look as shown in this image, when the azimuth is set to 15 degrees, and the elevation angle is set to 15 degrees, and the self axis rotation set to 15 degrees:

Some recommendations to make all this work properly:

- It is necessary to test every step, making some temporary rotations, to see if everything works as expected.
- It is useful to name the points, such as “1st”, “2nd”, and “3rd”, so that you can know which point you are using at every step.
- If a rotation goes to the opposing direction in regards to positive-negative, use the “Flip” parameter of the point.
- The space bar helps to rotate the nested object onto final position.
- Selecting the proper plane is relative to the orientation of the model family
- Double check that the parameters are working as expected, by using multiple views (plan and elevations), not just the 3d view.

Remember, *nothing is ever easy*. If it does not work the first time, try again.

See you in our next blog…

©* 2012 Planta1.com, inc. , Alfredo Medina | permission to reproduce this article is granted if the name of the author and the URL of this article receive proper credit.*