Automatic road creation: How to generate solid between section profiles?


Hi there,
my name is Jessica and I am new to the Dynamo world.
I already created several small Dynamo files and eased issues for our modeling team, but now I am stucked with the next task.
Situation is the following:
I have an excel file with coordinates of points, which looks like this:

I need to create a spline out of These points. That’s easy so far.

As I am not allowed to upload more Pictures as a new user at the Moment, I will try to add the next Pictures as answer to my post. Hope this works…


Then I have a section profile of the road, which should be modeled as sweep along this spline.
The setion profile is created as mass family, consisting of referencepoints combinded with model lines (to make it easy to revise the section profile at any segment, if necessary). Don’t wonder about the look of the section profile, it is for a Special purpose for our client, so it needs to look like this…


Now I need to position this section profile at each station, which is given in the excel sheet.
I managed this somehow with Dynamo. :slight_smile:
Dynamo looks like this at the moment:


And the result at the moment is the following:

That is great so far.
But now I really don’t know how to proceed?
How can I tell Dynamo now to create a solid from one section profile to the next. So that in the end I will have several solids along the whole spline, limited by the section profiles.
I searched a lot in the forum and tried a lot of some tunnel topics I found, but I did not get the result I want to have.
Hope this was understandable at all?
I’m very greatful for any idea or answer, someone would like to give me.
Thank you so much in forward!!!
Best regards,


Hi Jessica,

I sincerely hope you get this solved. I tried before with another approach but with no success. Basically, I created an adaptive family with points and a spline with a nested adaptive (and parametric) road profile. The spline considered a straight line (two points of the family) and three more points for a curve. The problem with it was that it worked only on flat surfaces, and if you lift one point towards the Z axis, the whole profile will rotate and not keep its horizontal.

Marcello Sgambelluri offered another approach for creating roads out of toposurfaces, but it was not very practical, as it was extremely time consuming and labour intensive. At the moment, modeling flexible roads seems to be one of the hardest tasks in Revit.

Good luck on your approach! I bookmarked it just in case…


This was the approach I thought of, albeit I haven’t tried it myself
Good to see that it has been tested!

Thank u for sharing your findings.


I did not try actually and I could have missed something in the explanation, but could the Solid.ByLoft node help here?


Thank you all for your answers.
But at the Moment, I still have no solution.
The solid.ByLoft node doesn’t work.
But I will proceed trying out and if I found a solution I will let you know…
Or maybe someone else has another idea.

Thank you!


Perhaps, another approach would be this:

  1. since you have the points, you could create a toposurface with those points in Dynamo, as accurate as you can.

  2. use this other approach to split the surfaces of your topo, and changing the levels and materials, as explained here (it is quite simple actually): This would require you to define or recognize the points/lines that shape your roads, and move those sections of the toposurface up/down as required.

Hope this helps,


Thank you Francisco_Farias.
I will test this. Sound good to me on first sight.
But I need to test, if I can handle all further processes of the project by using a toposurface, But maybe I only need to convert it to solids then afterwards…
I will have a look to it ant test it…
Keep you informed.
Thank you!!!


Solid.ByCurves works for me, you need to get a polycurve from your profile first.


Thank you Ina_Db.
Unfortunately I do not find the Solid.ByCurves node?


You’re right, I wrote this in a hurry, it’s a Solid.ByLoft node as mentioned upper, see this:

…but as I didn’t test it in your workflow, I don’t know how it would behave (with lists…)


Thank you.
Unfortunately I receive this error massage:

Any Idea what I have done wrong?


It could be related to how your mass family was build. Maybe using a 2D family would be easier?
Use an Element.Geometry node to get the geometry of your instances into Dynamo, so that you can observe directly your results (you may need to zoom)


Thank you so much for your help.
Extracting the geometry is not the problem.
I tried the way with Element.Geometry as well.
And I played a little bit with the list. Now generally that works.
But still the solid doesn’t want be created.
At the moment it always says that the PolyCurves are not closed:

But to be honest I have no clue how to close them?
The only node, which seems suitable is the PolyCurve.CloseWithLine node.
If I use this, and check, if everything is closed by using Curve.IsClosed node, then the result ist, that indeed everything is closed. But then I receive the error messagt, that the wire intersects itself:

I also tried to create a surface out of the closed polyline and then I wanted to create a solid between these surfaces.
But this also doesn’t work.

I keep on trying out anything and will keep you informed, if interested…
Thank you all!!!


I am sure that you will find a way, but I have one more observation: Lines in Element.Curves should be distributed in sublists accordingly to the number of instances, and it seems that you’ve got a lot of lines in the same sublist. A boundary creation method or something similar could be useful:


Can you please share your Revit file and Dynamo script, this is a simple operation and isn’t impossible to execute, I believe it may be a case of feeding the entire list of single lines into the polycurve node, you have to create sublists containing the individual lines that make a closed curve OR the profiles/polycurves are not being listed sequentially as per their chainage thus the loft function fails.


I am not sure that sharing professional files is recommended here


@jessica.steinjan Try lofting the profiles in pairs sequentially
Something like this…