Infinite Lamps – Algorithmic Design of 3D Printable Lamps

All of our jobs are getting automated away sooner or later, so I thought I would take a crack at it myself before someone else gets there first.

The Goal

The aim of this project is to codify my design preferences in order to write a program able to design 3D printable products. Since I won’t be using cutting edge machine learning technologies I will have to narrow the scope to a single simple product– a desktop lamp.

Degrees of Freedom

To create my industrial design bot I started by defining some guidelines for how I want the lamp to be structured. After some experimentation in CAD I landed on a simple structure consisting of only two parts: a base and a lamp-shade. The shade would be defined as a rotational body by a single spline.
Fusion API generated lamp structure

In all variations the lamp shade would need to be kept at a distance from the light bulb in order to prevent melting.

Number of Possible Designs

At this point I moved ahead to defined which variables that I would let the program control. These would include: height, spline point-coordinates, base diameter, top diameter and many others. In total I would put 12 variables under programmatic control. Since most of these variables were continuous (infinite number of possible steps) theoretically this bot would be able to create an infinite number of designs. However in practice many of the possibilities would be nearly identical to the human eye.

To get a more useful number of possible designs I will assume that each variable has 3 easily distinguishable positions. So in the case of an angle that is allowed to vary between 0 and 90 degrees, we get 3 positions that are assumed to be differentiable with the naked eye: 0, 45 and 90 degrees. With this simplification the software has 36 (3*12) possible variable values, which in turn leads to 1.25 billion possible combinations. Should be enough.

The Code

Once I had a 3D model for the basic structure of the lamp it was time to translate it into code. For this project I used the Fusion 360 API which gives you access to most of the modelling tool you normally access through the UI. By using a randomiser to define the adjustable variables the code is able to create a new design each time you run the program.


My lamp-design bot was able to create quite a few interesting design variations. After all out of 1.25 billion possible alternatives there should be a couple of good ones.

24 selected designs generated by the algorithm. Renderings done in Fusion 360.

Closeups of design #11 created by the lamp-design bot.

The Future of Design Software

With the results in hand, is time to start coding all of my designs henceforth? Not quite yet. This method works well for a 3D printable lamp due to the amount of design freedom permitted by the product (the lamp-shade could be almost any shape) and the manufacturing technology. When creating a product with more stringent constraints this method fails however.

It is here that I expect machine learning to do miracles as it has done in so many other industries. It is when software can define the basic structure of the design with consideration for manufacturing that we will see huge changes in the industrial design space. Until then, let’s get back to work…

PS: I am considering selling some of these lamps as one-off 3D prints so that every lamp would be unique. If you would be interested in this, shoot me a message at