How to clean up a messy Delauney mesh?

Hi there,

I’m currently attempting to link several nodes by a mesh.

Context : My tower has a facade system made up of beams, whose end points constitute the points on which a wind load must act. This wind load is made up of three distinct a ‘Mesh’ load to be applied through use of Karamba plug-in (tower divided in three vertically, pressure increases with height).

The tower:

So I’ve got the nodes and I’ve constructed a mesh using the delauney triangulation mesh component, with the world XZ plane as the reference plane input…but the façade becomes twisted as nodes seem to be poorly connected.

How can I clean up this mesh to approximate my façade as best as possible?
Would you have any suggestions of alternative methods (relative newbie so the easier the better!).

Thanks in advance for any tips!

The thing with delaunay is that it works well only when points lie on 1 plane.

You have to either connect points by clean structure, when you keep track of indices.

Not grasshopper approach for point cloud approaximations is rhino command meshfrompoints. Your can call this method from whatever programming language in grasshopper by executing rhinocommand “meshfrompoints” it is rhino plugin that is shipped with rhino6.

I do not know other point cloud methods that currently exists for grasshopper. But there is pivoting ball in milkbox plugin, but it also has issues:

Indeed…it’s been a persistent issue!

Since my façade is also parametric, it’s very hard to keep track of indices.

I’ve also tried that plug-in but without success (the corner is “filled in”):

An alternative way of going about it, that I am also exploring at the moment, would be to draw a polyline passing through all the points at a given height, then loft them to form a “meshable” surface…yet I’m stuck because for some reason points are omitted during the sorting process.

Link to that problem…if it helps!
(How to separate and order points by z & x coordinate (for connecting by polylines + lofting)?)

Surely this must also mean that the vertex order is known/structured, meaning that you should be able to generate the mesh based on some explicit logic.

Yes indeed…but horrendously complex due to the vast amount of design variables.

At the level of each “floor slab”, the perimeter is divided into a set number of nodes, linked by perimeter “beams”. Then the internal structural grid (also parametric) intersects these beams and creates yet more nodes. Then the user decides which nodes they wish to link with lines (also through a parametric culling process)…finally, duplicates are removed and everything is assembled using Karamba.

I can provide the files if you think it’s necessary but at this stage I believe the aforementioned polyline through points —> loft —> surface —> mesh surface route to be easier to implement. Now I just need to sort that issue out…(link above if interested!)

I can’t find any attachment here and in the other post … can you post it here?
Hard to work without something in hand…

Sure; here are the links (you will need Karamba): (885.4 KB)
A1_040718.3dm (137.6 KB)

Use the 3d delauney from Mesh Edit

Is that the components actual name? I’m having difficulties finding it :slight_smile:

I don’t have karamba… Please, internalize just the points to work on…
Also… your definition is HUGE , can’t even zoom out to see it whole… I’d say… lucky me I didn’t have the plugin, otherwise i would be still there waiting!


Yes it’s heavy & tedious code…hence my reluctance to share!
As I said, I’m relatively new to Grasshopper; what do you mean by internalise? Is there a way of “shutting down” parts of the code whilst maintaining data fed into latter parts that I do not yet know of? Thanks for any advice

Link to get data, then internalize.
Internalize all the geometries, values, etc about the current problem, you can delete the rest.

1 Like

Thank you Michael,
This will probably solve the issue once I manage to install it!

Thank you very much for the demonstration Riccardo, I now know how to make things more legible going forward. It would take me too long here however, and I hope to have found a solution in the meantime via Michaels answer :slight_smile: