Scale object surfaces in Rhino while retaining dimensions?

Hi folks, I’ve searched for some direction on this but suspect I don’t know the proper terms and haven’t found what I’m looking for to create a set of Grasshopper instructions for it.

I’d like to create objects whose planar faces are scaled smaller but without changing the dimensions of the original object, so that the resulting object has voids where the original edges were. The intent is to be able to laser cut flat panels and assemble them using hardware that will use that void to attach them together.

I’ve figured out how to do it in Rhino, but since I have several hundred objects I’d like to write a set of instructions in Grasshopper to automate it, and use it for multiple input geometries. (My rhino process, for the images below: create box>explode>dupborder>offset each border>surface from planar curve>group).

My intuition says this shouldn’t be too hard, but I’m still learning. Any recommendations for existing grasshopper tutorials that I can modify to do this? I’m ready to put the work in, just don’t have a starting point.

Thank you!



Looks simple enough for boxes… Might get tricky handling “several hundred objects”, depending on your work flow. Are offsets always the same? All several hundred in the same Rhino file?

All the objects are in the same Rhino file, and I’d like to change the offsets depending on the methods I use to attached the panels and how the aesthetics look. In some cases, there may just be one object but with 150 faces.

Are all the faces planar?

They are, my intent is to laser cut the individual facets and then re-attached them, so all of the raw material will be in sheet form (plywood, acrylic, etc).


face_offset_2024Feb22a.gh (14.0 KB)

Most of this code is creating the boxes. White group is what you want.

This is awesome, thank you!

I also ran across the Weaverbird Mesh Window command, although it seems to sometimes split a single planar face into multiple planes when I convert the original object into a mesh to feed into the mesh window command.

I’ll post results soon.

Worked great on a variety of shapes, thanks again –

I forgot to set the plane of each face for the Offset Curve ‘P’ input which can be helpful sometimes. Pretty easy, eh.

P.S. Meshes are very different than NURBS surfaces!