The Dynamo blog is pleased to welcome this guest post by Eduardo Perez Roca. Eduardo is a regular contributor to the Dynamo community and forum. He is a senior architect specialized in the development of complex geometries in a well known international office.

Intersecting_Rails_01

A new kind of tool was introduced between 2008 – 2010. Tools like Revit Adaptative Components, Inventor ICopy and CATIA PowerCopy. All of them allow the same prototypical workflow: driving “flexible” components with points resulting from the intersection of curves (“rails”) with an array of planes.

I have used both Revit and Inventor tools extensively since 2010. With these tools, going from the nice and simple demonstration tests to large and complex projects with hundreds or thousands of different elements is quite a challenge.

The typical issue

Intersecting_Rails_02

All these tools will work smoothly as long as the rails are nice, continuous curves. Depending on your choice of tool, you might be able to manage using joined curves as a rail, even with sharp corners. But any gap or overlap will be a problem. For small gaps, sometimes it is possible to remap a group of curves in a single curve, “jumping” over the gaps. But any big gap, or big overlap, and you can forget about it.

In real projects, gaps, overlaps and sharp corners are quite common, so the standard toolset will not allow for a one-size-fits-all solution. You must deal with this problem by dividing the project in smaller parts, where the rails will be “good enough.”

The solution

The new Dynamo allows us to move past this issue. And the solution is just a few lines of DesignScript.

Intersecting_Rails_03

The way of managing this is quite simple using DS code, which is extremely efficient for geometrical operations. Instead of choosing which plane to intersect with which curve, each single plane is intersected with all the curves. A smart, built-in function deals easily with the case of no intersection. If more than one intersection is found (overlapping lines), only one point is taken.

We can get the intersection points for any group of curves in the same way we would for any simple curve. And without trying to join the curves or build a new, single curve equivalent to the original group.

RailsIntersection

Intersecting_Rails_04

This solution is implemented in the custom node RailsIntersection, which can be seen here and found in the middle of the workspace at the beginning of this post. It includes some additional functionality in order to filter and organize the groups of points. You can find it in the package manager.

The value passed to the input “N Points” sets the expected number of points to be returned when intersections are found for more than one rail. The value of N will mean that you want sets of at least N points

Intersecting_Rails_05

Intersecting_Rails_06

Pass in a value of zero to find a result for every plane, including en empty list each time a plane finds no intersection.

The custom node expects that every rail is a list of objects. If you will use for rails that are just a single object (one curve or one polycurve), that single object must be inside of a list.

Not just points

Beyond points, Dynamo 0.7 allows us to directly create the solid (or surface) geometry of the final components with its own modeling tools. Dynamo now provides access to the same geometry engine as Inventor, the Autodesk Shape Manager (ASM). Just as in previous versions of Dynamo, you can use the points for driving Revit Adaptative Components (and maybe Inventor ICopys or something similar in a not so distant future).

Choosing whether to place adaptive components or to model the geometry with algorithmic logic is a matter of convenience (whether it makes sense). For typical “frames,”using Dynamo’s own modeling tools is far more practical.

Intersecting_Rails_07

This sample includes components of one, two and three segments. With Adaptative Components (or similar tools), three different components would have to be defined and placed. With Dynamo’s geometry tools, this is the same sweep operation along several curves. Besides of this, the way of managing the profiles (to change them or add several ones) is more straightforward and easier.

Intersecting_Rails_08

And Dynamo is a more convenient platform to add complexity to the paths like curved segments. In the sample, two DS functions are used for controlling when and how the last segment is curved. A simple rule is set for using normal arcs where possible and NURBS curves when arcs would not match the design intention. The result, in this case, is that half of the curved segments are normal arcs.

Using the “pre-release”

After the 0.7.0 “pre-release”, I rebuilt an old ICopy development in Dynamo, which had roughly a thousand different elements. I used the standalone version, importing the context geometry and the profiles from Inventor. And my experience was extremely positive.

There is a big boost in performance. The times for updating have gone literally from minutes to seconds. For the first time it is possible to make quick design iterations, fully updating large models. Another big difference is greater “parametric robustness”. There is no need to fix or rebuild anything after changing all the driving lines. And by change, I mean fully deleting and creating new curves, not just flexing the existing curves.

Taking into account the state of development, with probably a few enhancements to come, Dynamo looks like an impressive platform for this kind of workflow.