Parametric lampshade: how to generate arches from a polygon?

Hello internet,

I am currently working on a program for variating and generating a design for a hanging lamp shade. This lampshade will be made up out of many smaller arcs, which are layered and then 3D-printed in transparant filament. I have added pictures of my current design for reference.

I am able to make a program for lofting the shape through sections, but making a program for the cross-section geometry is tickling my brain a bit. I need to divide a polygon into the different smaller arcs. I have a very simple script to make a variable polygon, but can’t figure out how to make individual arcs through these points. I have added two pictures that will explain this too.

I would be very curious how to tackle this step. Please let me know if you have any suggestions on how to do so, or have further questions!


cross-section polygon (10.9 KB)

Current state:

Next step:

Final cross-section:


This series of components creates one series of arcs. I used it three times in a row - could be saved into a cluster for better organization.

cross-section polygon (9.1 KB)

For fun, a more complex solution that includes a parametric amount of layers.

cross-section polygon (13.2 KB)


I wrote this thing, then clustered some of it… then got lost trying to put the clustered code in an Anemone loop so the number of iterations could be parameterized. Over and over, that used up all the memory I had and crashed hard! I guess I’m getting rusty. :cry:

So here it is without the loop. Just add more clusters in sequence for more iterations.

cross-section (15.3 KB) DEPRECATED due to flaw, see next post.

Note that I did not strictly follow the single curve in your example.

P.S. I found my error - SLOPPY! Standby, will post fixes shortly.

OK, I missed an obvious error; didn’t notice that the cluster was generating duplicate curves. So Anemone works fine and there really was no need for the cluster. :man_facepalming:

cross-section (28.2 KB)

This code produces concentric “rings” so might be more suitable for 3D printing?

1 Like

Definitely rusty. This is the same code, same algorithm but no Anemone loop.

cross-section (29.4 KB)

1 Like

It’s great to fall asleep with a question and wake to two random people who have answered it perfectly! Thanks for both of your time Joseph and magicteddy. I will try out both strategies, and am very happy with your quick an thorough help!
Bless the internet and all the best

1 Like

I was curious about the next step, getting the shape in your photo, so added the purple group (top left) and yellow group (bottom right).

cross-section (33.0 KB)


interesting subject which gives nice objects. I wanted to play a bit with that.
I made some tool to make some non planar shapes. I don’t think you mention it but there are some ways to calculates the arcs, or you want an height or an angle or a radius.

When curves are inverted it gives also nice shapes.


Here’s how I’d go about this:

It makes this:


which isn’t exactly what you want, but the GH file makes it easy to do adjustments. The cluster will make lots of 2D star-type shapes; I made it from something I saw here years ago and have used it to make lots of bowl shapes and other things. (The cluster’s internals are a bit ugly.) I used Genepools in the GH file because I have trouble predicting the results of Graphmapper.

I assume you’ll use Vase Mode to print the parts - this should be strong enough provided normal people aren’t able to touch the lamps.


I added a component in my plugin. You could specify the parameter of the arc by an angle or an height or a radius. You can add a thickness in order to take into account the print thickness.

If you don’t use As arc will stay on the plane of the curve.

1 Like