Help to make holes on each wall voronoi

Good day to everyone, I’m a beginner in grasshoppeer, I ran into a problem: I can’t create holes in the center on the walls of the voronoi. In image 2, I roughly drew what it should look like.

Please help, I will be very grateful. ;с

please upload your grasshopper file

1 Like

Thanks for the answer, here is the file. ^-^
frame (15.8 KB)

So you want a hexagon in the center of each surface? and then you want to trim that to make a hexagonal hole?
Also I would delete that last group from your code (Labeled bad try). That was alot of computing time :wink:

Alrighty. Maybe try this… I did not connect the last component because I dont want to sit here forever.
frame 11 Try (15.5 KB)

Actually, I wanted to make circles in the center of all the walls except the extreme ones, then cut it to make a round hole, and ideally just drill at an angle, I don’t really understand how to call it.

Ok yep I’m tracking… Be right back

1 Like

“just” 14 seconds on my machine :slight_smile:

frame (16.0 KB)

but this is based on face-face adjacency, and these are the axis of the connection-holes

so you have these weird situations like here, which I wouldn’t know how to fix at the moment, because tiny edges in the Voronoi diagram means the cells are touching, so -by using this method- a connection hole must exist also through those walls


Well you beat me to it. I was still trying to figure out how to grow my cylinders with the width of the Voronoi. Here is how far I got. I did figure out how to sort out those naughty tiny surfaces.

Well done @inno !


what I see in your image looks like a nice idea: to grow cylinders on the outside of each cell pointing outwards, in such a way each cell will be drilled just by the surrounding ones (which instantly solves the problem of having the outer walls without holes, as no neighbor cell will generate cylinders for those) :+1:

also it would be interesting to explore how you have filtered out the connections that happen to land on tiny edges, like in these:

I guess by edge length or surface area?
there is always something new to learn!


Thanks for the encouragement @inno ! It is much appreciated!
If you want to look at it.
frame 11 Try (19.0 KB)
That should be the latest one.
Yes, I have been learning about how lists work which has been super fun.
I took the area of each of the surfaces, tested with a larger than component to filter out any surfaces that were less than the largest width that I wanted. Then I used the true false combination to cull surfaces from the original list. Kinda fun.
I do need to figure out how to reverse the cylinders on the outside, and not all of the solid differences worked. I cant wait to dig into your solution. It is fascinating to me!


Taking the edge length to filter the surfaces would have been much smarter come to think of it.

1 Like

Wow, to be honest, I wanted to create holes according to the same logic, thank you so much for your help, I am insanely grateful

1 Like

Inno, you’re a genius! this is exactly the result I wanted to achieve! I do not know how to describe my emotions in words at the moment, thank you very much, you are the hero of today.

1 Like

some thoughts about how wall thickness is achieved,
if we get it by scaling on the polygon center, then always end up with the very same amount of edges both before and after the scaling, but the wall thickness will not be consistent as scaling a bigger curve will result in a thicker wall, and we’ll end up with a generally proportionally-increasing wall-thickness along the arrow because cells become generally bigger (most important: also walls of the very same cell will have different thickness depending on the shape of the cell itself)

on the other hand, by going with cell-silhouette-offset, we get fixed wall-thickness, but could also happen that an edge gets “eaten” by the neigbors, so the wall-count for the inside and the outside of a given cell might not be the same:

the other thing I would consider is about how solids are achieved: boolean operations are generally very heavy, so if you can get there by generating external surfaces and capping them into a solid, then the second way is -almost- always the favorite if compared to boolean subtraction :slight_smile:

that mainly allows for reaction time, for instance if you make some changes to a slider, it’s always nicer to see things happening in -almost- real time, than having to wait a minute for the solution to update and then maybe go back to the original state -another minute- :slight_smile: (well, consider that at this tep the holes are not present/calculated yet…)

about the holes, hehehe, that is looking a bit more complicated than expected :slight_smile:
the thing of having each cell to generate holes to the neighbors is a relief, but another thing to care is the length of those cilinders, because it can happen that cell (A) drill holes which are too long for cell (B)

so even if this solves some issues, there might be new complications… :smiley:
I’ll give it a second thought and get back later