MorphToMesh Distorts Rod Connections – How to Realign Nodes on Hex Mesh?

Hello everyone,

we are two architecture students who started working with Grasshopper this semester, so we still have a few questions.

At university, we were given the task to design a rod connection with four-axis machining and to transfer it onto an umbrella-like shell structure. We first started by modeling our node detail in Grasshopper and creating the umbrella structure itself.

Our idea was to subdivide the surface into hexagonal cells, planarize them, and then use MorphToMesh to project our connection detail into the hexagon cells. The problem we are facing now is that the connection parts no longer fit properly, because the rods meet at different axes and angles after the morphing process.

At this point, we are unfortunately a bit stuck.

We are currently trying to work directly with the node points. Our approach was to place a plane at each intersection (node) using Perp Frames, oriented according to the average vector of the three incoming rods. The goal is to derive the node geometry from the direction vectors of the connected rods, so that the connection at each intersection becomes form-fitting and axis-aligned.

Our node detail was originally created in the standard World-XY plane and should ultimately serve as the base geometry to be reused at all nodes.

We have attached our Grasshopper file and would greatly appreciate any feedback.

Thank you very much and best regards.

260227_Project DSD.3dm (80.8 KB)

260227_Project DSD.gh (106.9 KB)


More people will consider looking at your problem if you exclude as many third-party plug-ins as possible

Thank you for your answer. The free plug-ins are from our professor who helped us at university. Most of our tutorials are based on these plug-ins He told us to work with those, so unfortunately it’s not possible to exclude them.
Best regards Nina

I fixed your mesh morph(idk why i joined, you can totally ignore that), but If you are trying to use the module:


to populate your curves, you have to work on the design of it first, because it clearly only works for 2d junctions. And grasshopper will not help you here, you first have to develop 3d node that will work for many angles

260227_Project DSD.gh (79.7 KB)

Thank you very much for your help! We understand, that we first have to develop our 3d node. Unfortunately we don’t know how to do it. Do you have any Tipps? We are currently working with our Mesh structure and want to extract one nod so that we can develop our 3d node with the richt angels etc…
best regards nina

I see two scenarios for this joint to work:

  • Ball joint, but with some substructure to provide movement restrictions
  • Unique joint for each floor, regular (blue) and mirrored (black).


made in grasshopper.
For that you have to create your joint on your structure, instead of creating it on plane → populate structure.
For example, create simple rectangular profiles on the structure first, then make algorithm that will find all points where they intersect on specific floor, and make geometry of node in place.

What i am referencing to when i say floors, is these purple imaginary lines:

Because on these floors all nodes should be the same, just rotated around z axis.

After you made an algorithm you can optimize it so it creates only one node per floor, and places block instances in the correct places with correct rotations.

Thank you very much for your help. Everything you explained sounds very logical, and we are currently working with rectangles that we map onto our mesh in order to identify intersections and overlapping points so that we can then adjust the node geometry accordingly.

Unfortunately, we haven’t managed to implement the algorithm yet, and we’re not entirely sure what the correct workflow should be. We’re also struggling to divide the mesh into rows. Could this be related to our MorphToMesh component? It works on simpler surfaces, but with our current structure we often get an “Empty Parameter” output (even when we try organizing points and lines into lists, for example).

If you have any further advice, we would be very grateful. If not, that’s completely fine as well — you’ve already helped us a lot, and we truly appreciate it. Thank you so much! :slightly_smiling_face:

please share your gh file, i will take a look

260302_Project DSD-help.gh (140.3 KB)

260303Project DSD.3dm (3.7 MB)