Clearance Envelope

Developing kinematic envelopes for clearance validation is an important part of rail design. Dynamo can be used to generate solids for the envelope instead of creating and managing complex Corridor subassemblies to do the job.


Key Concepts

  • Working with Corridor Feature Lines

  • Transforming geometry between Coordinate Systems

  • Creating solids by lofting

  • Controlling node behavior with lacing settings

Version Compatibility

This graph will run on Civil 3D 2020 and above.


Start by downloading the sample files below and then opening the DWG file and Dynamo graph.


Here's an overview of the logic in this graph.

  1. Get Feature Lines from the specified Corridor Baseline

  2. Generate Coordinate Systems along the Corridor Feature Line at the desired spacing

  3. Transform the profile Block geometry to the Coordinate Systems

  4. Loft a solid between the profiles

  5. Create the solids in Civil 3D

Let's go!

Get Corridor Data

Our first step is to get Corridor data. We'll select the Corridor model by its name, get a specific Baseline within the Corridor, and then get a Feature Line within the Baseline by its point code.

Generate Coordinate Systems

What we're going to do now is generate Coordinate Systems along the Corridor Feature Lines between a given start and end station. These Coordinate Systems will be used to align the vehicle profile Block geometry to the Corridor.

If Coordinate Systems are new to you, take a look at the Vector, Plane & Coordinate System section.

  1. Notice the little XXX in the bottom-right corner of the node. This means that the node's lacing settings are set to Cross Product, which is necessary to generate the Coordinate Systems at the same station values for both Feature Lines.

If node lacing is new to you, take a look at the What's a List section.

Transform Block Geometry

Now we need to somehow create an array of the vehicle profiles along the Feature Lines. What we're going to do is transform the geometry from the vehicle profile Block definition using the Geometry.Transform node. This is a tricky concept to visualize, so before we look at the nodes, here's a graphic that shows what is going to happen.

So essentially we're taking the Dynamo geometry from a single Block definition and moving/rotating it, all while creating an array along the Feature Line. Cool stuff! Here's what the node sequence looks like.

  1. This gets the Block definition from the Document.

  2. These nodes get the Dynamo geometry of the Objects within the Block.

  3. These nodes essentially define the Coordinate System that we are transforming the geometry from.

  4. And finally, this node does the actual work of transforming the geometry.

  5. Note the Longest lacing on this node.

And here's what we get in Dynamo.

Generate Solids

Good news! The hard work is done. All we need to do now is generate solids between the profiles. This is easily accomplished with the Solid.ByLoft node.

And here's the result. Remember that these are Dynamo solids - we still need to create them in Civil 3D.

Output Solids to Civil 3D

Our final step is to output the generated solids into Model Space. We'll also give them a color to make them very easy to see.


Here's an example of running the graph using Dynamo Player.

If Dynamo Player is new to you, take a look at the Dynamo Player section.


Here are some ideas for how you could expand the capabilities of this graph.

Add the ability to use different station ranges separately for each track.

Split the solids into smaller segments that could be analyzed individually for clashes.

Check to see if the envelope solids intersect with features and color those that clash.

Last updated