Good day everyone. I am currently modelling a subway tunnel, and I need to model a reliable vertical hull to cap off a variety of different shapes. I thought sweeping an elliptical arc along the center of the shape of the tunneI would suffice. I was planning to create the inner surface as well, as to create a solid by joining all the surfaces together, but haven’t made it that far yet.
I am very new to Dynamo so I got by mostly by previous examples here on the forum, but this one has me stumped. I don’t know why the surface doesn’t reliably close on itself:
Apologies for the jumbled script, I am trying a bunch of different stuff, so any tips are very much appreciated
Project1.rvt (6.2 MB)
Home.dyn (55.6 KB)
I am uploading the project (Revit 2025) where I pick the lines to make the surface, and the full script.
I can’t tell exactly what you’re trying to achieve here - can you sketch something out to illustrate the ‘before’ and ‘after’ of it?
Oooph. I explained this terribly, didn’t I?
I am currently modeling an underground subway station, and I am tasked with custom modeling the “caps” to the tunels (these are the “elliptical hulls” I was talking about. The ones in red are done manually, and it is a horrible time sink.
What I wanted to develop is a script that can pick the edges of said tunnels, generate a lofted surface through merging elliptical arcs, and join the inner and outer surfaced as to make a solid that would then be imported as a family with the custom hull matching the picked lines:
I dont want to pick the surface as it will include those unsightly corners sticking out, so I thought drawing model lines on the picked surface, and then selecting those lines in Dynamo would do it. The images aren’t from the the .rvt I uploaded, by the way. I tried making a generic tunnel in a new file, to test the script, and that’s the file I uploaded
Can we assume the red curve at the limits of the surface is an even offset of the blue curve?
Ideally you’d have built this as an adaptative component with nested profile families - life would be MUCH easier if you’d gone that route as you’d have flexibility to nest and reuse stuff.
With the current data you’d have to try something along the lines of this.
- Build the complete closed curve from the inner loop.
- Get the context coordinate system of the minimum bounding box.
- Isolate the portion of the curve making up the right or left half of the curve.
- Offset the resulting curve by the distance from inner curve to outer to get two half loops.
- Build a revolve surface around the end point of the loops - you should get two ‘half domes’ when done.
- Scale the half domes about the XZ plane of the context coordinate system to get the inner and outer distance (remember the scale factor for the outside dome surface will not be the same as the inside one.
- Patch the ‘ends’ of the two domes to get the closure.
- Build a surface from the patch, outside face, and inside face.
- Send the surface as a new family type
- Generate a family instance at the min point of the bounding box for the solid in Dynamo.
I liked it better with the wings swept around the cap. You can modify the section which you revolve to just get the partial ellipsoid-like form if you’d rather.
Thank you very much for the help, though I am a bit bummed nothing I did ended up helping 
I am trying to add a “concavity” slider ( by trying to deform the polycurve along a specific plane) but so far no luck
Edit: I see now you already did that, my bad, though modifying this:
gives me different “concavities”: