Sunday, June 9, 2013

Report the Length of Any Curve including Splines and Egress paths

What do you mean Report the Length of Any Curve?

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 grey-ed out. The length value is read only. That means it is not report-able.

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 4 points. Note  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 . Select the Spline and note that the length is greyed out.

2.       Applying 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 report-able.

3.       Changing 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!

4.       Creating 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 grey-ed out. 

·         To work around the limitation of the parameter not being able to be defined as a reporting parameter just 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.

5.       Creating 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” 
-Here is  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.

6.       Creating 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 report-able!

7.       Creating a shared parameter that reports 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. Now anytime the spline changes length it reports it to the Length_01 parameter. That will now be able to be added to a schedule or a tag.  

Closing remarks about method
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.

While the above steps may seem lengthy, with some practice it can demonstrably be completed in about two minutes or less. Thus the in-place method is a viable solution along with more traditional (external) families.

Applications of the Path Divided Method

Egress Path of Travel
The method described above also 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 could be easily 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.

   i.            Go to a floor plan and create an in-place mass
  ii.            Go to the Object Styles and change the mass to “dash” and a thick line setting of at least 6. This will force all line work in an in place mass to be dashed.
iii.            Sketch the dashed “path of travel” using the model lines tools as shown  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 3 Dimensional. Also, if desired sweep a profile along the egress path 
iv.            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.

 v.            Select the series of lines and select the “divide path” command and follow steps 2 thru 7 as described above to make the series of straight lines reportable.
vi.            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 the Figure above.

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. 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 with the method described above it is easy. 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”.

   i.            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.
  ii.            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.

iii.            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 thru 7. Do this again for the sides and follow steps 2 thru 7. Note that divide path could also be applied to edges, in this case wall edges, as well as curves.

iv.            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.

 v.            Follow the steps above to create length and width parameters for the curved and unrolled wall openings.

Closing Remarks: Do What Can’t Be Done.

As you can see after reading this article, that there is a way to report and schedule any curve, including splines.  So, in the future; any time someone says “you can’t do that in Revit” be skeptical at the very least.

Other applications of 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 divide path command.

The entire article could be found here


Adriel said...

Hi Marcello,

I followed your steps exactly but it doesn't seem to work.
Are you able to share a sample file or a video?

Anonymous said...


This works fine for a component that is not adjustable inside a Revit project. I want to create a family that has the ability to change and be adjustable within a project, such that it's possible to schedule the different lengths of the components of a curved line. In such a case, what would be the process to obtain this?

Best regards,