Friday, August 13, 2010

Using Adaptive Components for a Helix

Today I saw a YouTube post by David Light Revit demonstrating how to create a Helix using Conceptual Masses and Adaptive components. I was intrigued because Helix shapes have been on the list of elements that people want to create but were unable or created difficulty when doing so.

Particularly parking or other helical ramps that span multiple floors and needed to rotate around a concrete post or have open space in the middle. Using the floor tool we could Modify Sub-elements and set the points at the correct height for each space on the ramp and get a helix of sorts. However though geometrically correct it took a lot of time and tuning especially if the floor to floor heights changed or the ramp radius changed etc. Also users complained that the ramp either came out flat (side to side) or angled based on the curvature of the helix. Users want to set a basic side slope based on drainage or to intersect flat floors and could not easily do this.

Enter adaptive components.
For those of you who have not seen nor explored these yet I will try to explain how they work. Adaptive Components are a series of points connected by lines or splines that are numbered in the order in which they are to be attached to another mass element. Setting the point order creates the shape when the component is attached to another mass. The mass needs to have sub-divided faces for the points in the component to attach. This seems pretty abstract but will become more clear as you watch David's video and see my explanation.
David produces a spline sweep that curves around a cylinder reference at known intervals x,y,z to create a helix. The sweep he uses has single spline as the path and a circle as the profile creating a cylinder sweep in a helix. Cool but not really useful as the elements that can be attached to the sweep are limited to walls and floors.

Creating a Helical Floor
I took his a bit further and created a flat surface in the form of a helix. I can attach roofs or walls to that surface to create a helical surface that depends on the mass but can be viewed independently.
Now you should watch David's Video for the basic understanding of how this is accomplished and I want to give proper credit for figuring this out. What I have done after that adds to the functionality of this procedure and gives users a dynamic mass element that can be used in multiple projects.
After creating the same mass cylinder and spline component that David created I did the following:
  1. Duplicated the reference cylinder with a smaller radius and set that to the parameter R2 (R1 is the outside)
  2. Divided that new reference cylinder the same way (2x2 on the top 8x4 on the sides) turned on the Nodes to see each connection point.
  3. Still using H1 as the height between levels allows for this mass to adapt to different floor to floor heights.
  4. In my adaptive component I added a matching set of 9 points to the side of the previous 9 points. I lined them up visually to match the original shape.
  5. If you added the second set of points after you completed the first they may be mis-numbered.
  6. The order of the numbers should be set to the way you place the component in the mass. I chose to set each set inside first then outside. You could choose all inside then all outside or any other order you like but you must place them based on that order.
  7. Load the component in the mass family and place as noted in step 6 walking down and around the mass the same as in the video.
  8. When you are done you will have a helix flat surface that you can load into a project and attach a roof or walls to. The above image is a helix roof with standard walls below attached to the roof using standard Attach.
  9. The mass has R1 R2 and H1 to control outside, inside and floor to floor. Add H2 and assign to the inside cylinder and you can change the angle of the surface as well.

Overall this takes less than an hour to create and can be used by multiple projects. The technique can be evolved to other shapes if ellipses or rectangles are required for layout of the floor or ramp and walls below can be attached easily. The component can be loaded into any preset mass family and controlled by any shape that has 18 nodes to align to.