algorithmic modeling for Rhino

This is the script of Daniel Abalde's Peacock tapered offset post, here:

Views: 82538

Replies to This Discussion

Haha OK shame on me, I thought it would be a somewhat geometrical term.

But lets stick to eggs for once.

I think my issue is easier to show on the egg screenshot you posted a while ago.

By the way, did you notice that there can only be one instance of the Tetgen parser running in the same Grasshopper file? If I place 2 of them, both are grey BUT both have the same output no matter what lines are plugged in on the inputs. I guess this is either a naming issue of the internal STL file handling or there can be only one instance of tetgen running at a time.


You are reproducing my own initial confusion about 3D clipped Voronoi diagrams, when I too thought in terms of having the dual of the original mesh result. However, those faces are in fact not flat like triangle faces like they are in the 2D case of mostly hexagons/pentagons being the dual of a triangular mesh. What you are seeing is in fact fragments of the original non-flat mesh surface.

Perhaps I could isolate the mostly hexagons themselves and create alternative cells with patches for faces to handle non-flat faces. See, if you look very close at the literature figures, they simply leave out the lines in their actual surface faces that themselves have multiple mesh faces, whereas I'm outputting NURBS so end up with polysurface faces when I make a formal clipped Voronoi.

In the 2D case, flattening the cell edges is equivalent to flattening the 3D faces, but that's rarely what people want to do in the 2D case so they just chop the boundary up into curved little cell edges:

It was going to be difficult to clip the 3D case at all without grabbing a small hexagonal/pentagonal piece of the original mesh but once I have done that, I can then possibly replace it with a single surface often non-flat patch, as an option instead. If I tried to make them all flat it would require altering the geometry at least in places, likely most places. See the figure on the right. The faces are not flat!

The question is whether the Rhino Patch command will reliably close the cell with a mere patch on there instead of a faceted polysurface.

I'll look into this. One option is to include the center point in the patch forming command, to not flatten the face so much.

Doing Patch in Rhino, manually, I'm *not* getting a closable solid easily:

Any ideas? I can increase the spans of the patch I guess, without a huge memory hit since it's just surface pieces. Even with 10 spans and stiffness only 1 it still won't close though. Ah, it's because it has sharp facets from the clipping itself and a patch will simply not form a sharp kink in the face of a single surface so will never close?! 30 spans is already getting up there and it won't close either:

Not even if I include a mesh version of the polysurface face in my Patch command will it close the solid, even with low stiffness, since it simply will not make a proper kink in the the edge. It can't really, since a patch is a single surface and it would require huge numbers of UV control points to get within closing tolerance.

I'm kind of stumped. I've included a file if you want to show me how to patch that surface.

Loft to a point from the border curve to the vertex just gives back a more complicated polysurface:


If you have an original NURBS solid you made your mesh from for Tetgen, you could then use my tetrahedra points output and use the Grasshopper Voronoi3D in an ample (110% scaled) bounding box and then do you own splitting or trimming or Boolean intersections and that would likely give a successful curved NURBS faces to the border cells.

Alas when I try this there are often buggy aspects to the splits, trims or Booleans.

Since my script revolves around mesh input for Tetgen, it's not natural to move into NURBS as my clipping surface so I'm stuck with mesh facets.

The distinction here is that the border Voronoi cells are infinite except the Grasshopper Voronoi3D clips them with a bounding box. Tetgen's own quite buggy Voronoi cells have border cells with no clipping, just infinite rays as edges given as vectors.

The Shortest Walk component seems to be a plug-in actually, from here:

The Shortest Walk component seems to be a plug-in actually, from here:

When I upgraded to Windows 10 from 7, the script stopped working. Running tetgen from the CMD line said a DLL was missing. Here is that DLL to put in your Tetgen directory.


Hi Nic,

Thank you so very much for this - it's amazing.

I noticed that in the tetrahedra mesh output, there seems to be a duplicate brep in the list, and that the two solids that are identical seem to always be the last two items in the list.

Do you know what is happening here? 

Is there a way to fix this problem -i.e. making a clean list- besides manually culling the last one out?

Thank you!






  • Add Photos
  • View All

© 2022   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service