Creating Adjustable Holes on Polysurface

Hello, I’m recently trying to create holes on nonuniform polysurface like the image.

Before this work, I made holes on a sphere which was quite easy because it was in a uniform shape.

What I want to do is create adjustable holes on nonuniform polysurface. The things that I want to adjust are the size of the holes, and the distance between the holes.
However, for the nonuniform polysurface, I divided the polysurface by contouring it, and dividing the contoured lines so it was not quite precise to adjust. Also, I’ve got two problems like bottom images.

Please help. (12.4 KB)

If this or this is the kind of result you are looking for here’s the basic method I used:

  1. Make a surface of revolution as your base surface
  2. Make a rectangular array of cutter shapes
  3. Use SPlop to map the cutters onto the surface
  4. Use SDiff to cut the holes in the surface with the mapped cutters

The SDiff will run for a long time so start with just a few widely spaced cutters of the size you want. Because of how Rhino makes curved surfaces the SPlop will adjust the size of the cutters based on what seems to be the overall diameter of the surface at the place where each cutter is mapped.

1 Like

Simple Circle (10.9 KB)


Thanks for the answer! It also quite helped me a lot. Yes, I was trying to make similar things like the link.

Thank you so much. I should’ve connected the radius and gap into the division input . It was really helpful!

This one with trims.
Simple Circle (18.0 KB)

1 Like

Thank you man. You’re the best!!

1 Like

It’s not a terribly pure way to do this. There are other ways to pack circles onto a surface. A more organic solution is to use Kangaroo from Daniel Piker:

Yes, I also checked that before, but I think your way is also enough for the work. Thanks again.

Many thanks to jonahhawk for his ingenious way to calculate nice looking spacing for holes on a doubly curved surface.

Jonah’s method maintains a constant shape and size for each hole, and also has the benefit of using SrfSplit instead of SDiff; this significantly reduces the time required to calculate and display the final result.
I’ve tweaked jonah’s solution a bit for 3D printing and while doing that I did discover one quirk in his method: if the diameters of the surface change a lot:

the final result gets truncated:
It looks like what happens is that when the circle perimeters get so close together they overlap the results in the List Item component break down or just stop. I reckon it should be possible to test for this, but I’m not sure there would be a good way prevent the truncation from happening.

1 Like

Thanks again Birk. Gratefully, problem isn’t happening for my model, so far.(maybe because of the perimeters that I need) I’ll also check that out whether it happens to me or not, if I change my model.