PART 1: Introduction
Have you ever noticed that when you model a curve in Revit—say, in the in-place mass family editor—and you select the curve, the length displayed in the properties window is grayed out, as shown in Figure 1.
The length value is read only. That means it is not reportable.
It shows up as if to tease you. At this time this article was written, your only option to get that length into a schedule or to report it with a parameter was for you to physically write down the length and enter it in manually into a schedule or a parameter. It would be unintelligent and not very “BIM” like. Well, I am happy to report that this article will show you how to report the length of any curve or series of curves in Autodesk® Revit® 2014. This includes splines, straight lines, and arcs or any combination of a series of splines, straight lines, and arcs—the Achilles’ heel in previous releases.
What Should I Get Out of This?
This article is broken up into three parts.
Part 1 Introduction
Part 2 The Path Divided Method –The basic theory of and steps on how to report the length of the curve, in a general sense
Part 3 Application Examples
Egress path of travel
Unrolling a curved wall
Keep in mind that, in addition to the two examples I will illustrate, there are many other functional applications for using the reported length of a curve in this manner. This article will not go into every application. I leave that up to you, the Revit community.
PART 2: The Path Divided Method
A Path Divided? Yes!
I realized that the Divide Path command has a length that could be made a parameter! It was this realization that set me on a path to find the solution to this problem. The developers created the Divide Path command to evenly divide a curve, similar to a divide surface, so adaptive components could be repeated onto them. Also, the developers do not allow the length between points to be made a reporting parameter. There is a way around that too; however, there is nothing stopping us Revit users, by means of employing a different approach to accomplish this task.
This method can be applied to any curve or any series of curves and its applications are nearly endless. Therefore, a general method called “The Path Divided Method” presented below gives seven simple steps that will describe how to create a length parameter on a spline made up of four points. Note again that this method can be applied to any curve or series of curves.
1. Create a Simple Spline
Start by opening a new project and start a new in-place mass and name it. Draw a spline by points as shown in Figure 1. Select the Spline and note that the length is grayed out.
Figure 1: The grayed out length of a spline
2. Apply the Divide Path Command
With the spline still selected, click the “Divide Path” command. Change the number of nodes to 2. This will place a node on each end of the spline. The divide path is the key to making the length reportable.
3. Change the Divide Path Layout
Select the divided path and change the “layout” to ‘Minimum Distance’ as shown in divide path properties in Figure 2.
Change the measurement type to “segment length.” Note that the ‘minimum distance’ that is displayed is able to be made into a parameter and it is the true length of the spline!
Figure 2: Change layout in Divide Path properties
4. Create the “Stand In” or Stunt Parameter
Click the parameter button next to the ‘minimum distance’ value and create a parameter; call it “Change Me.” This will be changed later because the minimum distance instance reporting parameter is grayed out as shown in Figure 3. I don’t know why Revit does not allow the minimum distance to be an instance reporting parameter but there is a way around that as shown in the next few steps.
To work around the limitation of the parameter not able to be defined as a reporting parameter, simply make a dimension that is a reporting parameter on a sacrificial element and then change that reporting parameter to the minimum distance parameter. This is shown in step 5 below.
Figure 3: The “Stand In” parameter in Divide Path properties
5. Create Proxy or Sacrificial Elements that Host the Stand-In Parameter
Create two sacrificial elements that will host the reporting parameter. Place two points anywhere in the in-place mass environment. Add a dimension between these two points and add a parameter to that dimension that is an instance reporting parameter. Call it “Length_Report,” as shown in Figure 4.
Here is where it seems squirrely (aka: The Trick).
Change the dimension parameter between the sacrificial elements to “Change_Me.” Now the length between the nodes that are hosting the reporting parameter and the length of the spline are the same. This is critical—these need to be equal in order to change the minimum distance parameter to a reporting parameter. Note that these elements are called sacrificial because their only purpose is to create a reporting parameter. You may discard them or hide them once the reporting parameter is created.
Figure 4: The Sacrificial elements hosting the reporting parameter
6. Create a Parameter that Reports Length of Spline
Select that divided path and change the minimum distance parameter to “Length_Report.”
Add the same parameter to the “maximum distance.” Change the “layout” back to “fixed number,” and presto: the length of the spline is now reportable!
7. Create a Shared Parameter That Equals Reported Length of Spline
To make this parameter useful in the project environment, simply create another Length Parameter; -make it Shared and call it “Length_01.”
Via the Formula column, set it equal to the “Length_Report” parameter. Anytime the spline changes length, it reports it to the Length_01 parameter. That can now be added to a schedule or a tag.
This method is limited to three Revit modeling environments: the in-place mass family environment, the (external) mass family environment, and the adaptive component family environment and editors. The reason is that this method makes use of the ‘divide path’ command, which unfortunately is not available anywhere else in Revit’s modeling environments (yet?).
While the above steps may seem lengthy, with some practice it can demonstrably be completed in two minutes or less. Thus, the in-place method is a viable solution along with more traditional (external) families.
PART 3: Applications of the Path Divided Method
Egress Path of Travel
As I stated earlier, the method described above can be applied to splines, lines, arcs, or any series of splines, lines, and arcs. This means that the total length of a series of straight lines could be reported and scheduled and can easily be applied to an Egress path of travel (with only one object!). Follow the steps below and you will be able to schedule an egress length of travel in no time at all.
Go to a floor plan and create an in-place mass
Go to the Object Styles and change the mass to “dash” and a thick line setting of at least 6. This will force all linework in an in-place mass to be dashed.
Sketch the dashed “path of travel” using the model lines tools as shown in Figure 5. Note that the start node and end arrow were also modeled as shown. Also note that the line segments travel down the stairs and are three dimensional. If desired, sweep a profile along the egress path as shown in Figure 5.
Instead of using the in-place mass line as the “dashed” line for documentation, you could alternatively create the dashed path of travel lines using project modeling lines and lock the in-place mass lines to the project model lines so that they move together and hide the in-place mass model lines.
Figure 5: The egress path of travel 2D and 3D
Select the series of lines and select the “divide path” command and follow steps 2 through 7 as described above to make the series of straight lines reportable.
Create a mass schedule in the project environment that contains a “path” of travel. Display the shared parameter created in step 7 above. Add the schedule to the same sheet as the egress path, if desired, and it should look similar to Figure 5.
Expanded Elevations: Unrolling the Curved Wall
The Path Divided Method can also be applied in such a way as to flatten out a curved wall, for instance. The curved and unrolled walls in this example are hosted by face, onto “geometry in-place mass surfaces.”
The only real challenge is finding the length of the wall, and it is easy with the method described above. Follow the steps below to make the bottom edge of the wall and the side edges of the wall into reportable length dimensions and then create a wall that is flattened or “unrolled.”
First create the curved wall by creating an in-place mass surface. Draw a spline with four points on any level. Select the spline and select the “create form” command. This will create a surface that will serve as a “geometry rig” for the curved wall.
Go to the project environment and place a wall by face on the in-place mass surface. It should look similar to the curved wall in Figure 6.
Figure 6: The Curved Wall Unrolled
Edit the mass surface again and select the bottom edge of the wall rig. While the bottom edge is selected active the divide command and follow steps 2 through 7. Do this again for the sides and follow steps 2 through 7. Note that divide path could also be applied to edges—in this case wall edges—as well as curves.
Now create the unrolled wall by creating a rectangle in the same in-place mass editor as the previous step. Apply the bottom parameter and side parameters to the length and height at each end of the rectangle. Host a wall to this surface. The final unrolled wall should look similar to what is shown in Figure 6.
Follow the steps above to create length and width parameters for the curved and unrolled wall openings.
Do What Can’t Be Done
As you can see after reading this article, there is a way to report and schedule any curve, including splines. The Revit developers even said it was not possible and if I would have believed that, then I never would have challenged myself to create this methodology. In the future; any time someone says “you can’t do that in Revit” be skeptical, at the very least.
Other applications for this method? The sky is the limit! I am very excited to have people try this method and apply it to whatever they feel will benefit them and their company. Please feel free to share your use of these methods, and who knows? Maybe we’ll get this functionality in Revit one day without having to use the Path Divided Method.