SOL75 - a 3D customizer

Reliable hardware designed by robots

Similar projects worth following
SOL75 designs mechanical parts so that we don't have to. Just give it the requirements for your component and it will generate a working geometry, ready to 3D print.

I know how to design gears, pulleys, bearings etc, but it's a boring job and I get distracted easily. So I am building this software which designs them for me (and you). It works a bit like a customizer, but you specify the function of the component instead of its shape.

I will use this page to keep track of the features I am working on/I will add. If you want to try the demo online, here is the landing page

Basic tech overview:

SOL75 can be broken down into 3 main parts:

  1. A module to handle 3D geometries, which ultimately  produces the STL files for printing  
  2. The core module, which manipulates the components geometry so that they meet the user requirements 
  3. An AI oracle, which provides intuition for the exploration of the design space 

Now for a bit more details: 

3D geometry module: The program needs to be able to easily modify the geometry of a component to fit the user requirements. To do so, I use parametric design, so that SOL75 can manipulate the parameters instead of the geometry. 

This is done with OpenScad, which is the most famous of Code Cad. SOL75 could use any other code CAD/Scripted CAD variant (like implicit cad etc) but I am just very comfortable with OpenScad. It also has the added benefit that it is a very easy language, so anyone interested enough can understand it. 

The CORE module is what figures out the correct value for each parameter. This is a bit complex and involves a lot of algebra, calculus and numerical analysis. However, we can view it as an improvement loop and a validation step, which can distinguish between a correct solution and a bad one. The main takeaway is that if a solution is found, it is provably correct.  This will be important for the next step. 

The oracle. Parametric design often has a lot of parameters. The problem is that searching a high dimensional space is very hard (see the curse of dimensionality ). Therefore, to quickly decide if a option is to be explored or not, I use an AI. But AI are not to be trusted, so we have the core which verifies if a proposed solution will work or not. 

  • Dreaming of electric sheep

    Francesco05/31/2022 at 22:11 0 comments

    Imagine you are an AI. Imagine you want to know about the world, but you are blind. All you remember are fragments, scattered images with no context and alien desires you do not recognize. What do you do?

    Previously we have seen how SOL75 does not design components but rather finds them, searching through a very large space. In order to find a solution quickly, SOL75 is guided by a special AI, an oracle.
    As in the real world, an oracle can answer any question, but should not be trusted. Every time the AI suggests a solution, SOL75 checks that it actually works. This process can be both fast and safe provided that the oracle is correct most of the time. How do we achieve this, then?

    At first, the oracle is useless and lurks in the shadows, observing what humans do. While SOL75 is finding solutions randomly, the oracle keeps track of every request made by us. Using these data, it develops a basic understanding of its space, but this will not be a fair representation of the environment. Regions which are interesting for users will be over-represented whilst the infinite plains of the useless and impossible will be mostly ignored. This greatly simplifies the problem, limiting the places it has to look in. However, mere observation will not be enough.

    When nobody is looking, the oracle starts dreaming. Without external input, it splices together previous experiences and tries to imitate our desires. It tries to imagine what a human would want and then it ventures into the world to find it. It conjures nightmare scenarios it does not know the answer to and scrambles to find a solution. It rehearses common requests looking for alternative results and tries to make sense of all the observations it has made. It tries to be ready.

    Dreaming can generate large amounts of data, synthetic data, which together with the organic ones, are used to train the oracle. As the ratio between synthetic and organic data increases, parasitic feedback-loops between training and dreaming might guide SOL75 towards stranger or exotic solutions, but that goes beyond the scope of this article.

    In a nutshell, the core loop is structured around observation and imitation. By repeating enough times the most useful regions of the solution space should emerge from the swamps of nonsense, enabling good performance despite a limited amount of initial data.


    The dreaming loop was inspired by this hypothesis, which suggests that we dream in order to prepare for future scenarios.

  • ​A needle in a (higher-dimensional) haystack

    Francesco11/22/2021 at 18:20 0 comments

    Big library
    Image: "Big library" by Nemanja Sekulic

    In front of you stands a library; impossibly large and infinitely tall. In it, you'll find everything that has ever been written, every sentence spoken out loud and every repressed thought. But this monumental collection is not limited to what has been; it also contains everything that has yet to be written and everything that never will be. In short, it contains all possible combinations of spaces and letters.

    All you need is a Christmas card. How do you find it? Probably asking the librarian is a wise choice.

    SOL75 works in an analogous situation. It inhabits a higher-dimensional space where every point corresponds to a different version of an object. Among them, you might find a teapot made of butter, gloves with 7 fingers, stairs with a negative number of steps and, occasionally, even something useful.

    But like in the library example, how can SOL75 find exactly what we want among the infinite possible variations of an object?

    To begin with, our requests are very specific. Whenever SOL75 encounters an object, it can unequivocally decide if it is a solution matching our requirements or if it should be discarded. If we point it toward some arbitrary object, SOL75 will be able to recognize if it is a solution or not.

    So, given enough time, we might find what we were looking for just by wandering through the space. However, since this space is infinite, this strategy is quite optimistic. Mapping the whole space beforehand is similarly impractical, it is one of those tasks which would take hundreds of years to complete. So how can we find anything in this impossibly huge space?

    We ask the librarian, which, in this case, is an AI.

    How the AI knows where stuff is, or better yet, how we trained it, are valid questions, which we will explore in the next update. The core point is that SOL75 does not create a design like a craftsman would, rather it finds it among the multitude of all possible shapes.


    The aforementioned library really does exist (although no paperback edition has been printed yet). You can find it at

    It has been a while since the last update, but SOL75 development is still very much active.

  • Update: Materials and Machines ​

    Francesco07/15/2021 at 16:32 0 comments

    Looking up material properties like densities, ultimate tensile strength or max temperature is a very boring task; so it's perfect for automation!

    SOL75 now supports materials through a database of the most common 3D printing plastics and uses those properties to check if the part will fail. This is all based on classical mechanical theory so nothing out of the ordinary there. The cool thing is that SOL75 doesn't just check if a material is suitable for the application, it actually choose the correct one among the material you allow.   

    Another useful new feature is that you can tailor the design for your 3D printer. Suppose that your printer has a tolerance of 0.2 mm. That is better than most machines, but it won't matter if the designer of the component used a tolerance of 0.5 mm. 

    In SOL75 you can fully take advantage of your printer capabilities by feeding them as an input, this means never screw up the tolerances again!

View all 3 project logs

Enjoy this project?



Jensen Gaither wrote 01/30/2022 at 16:19 point

Looks like sol75 is down right now. Any idea whats up?

  Are you sure? yes | no

Francesco wrote 01/30/2022 at 17:33 point

Sorry, the server went down... Thanks for the telling me!
It is now (at the time of writing this) online again, hopefully it won't happen again!

  Are you sure? yes | no

Addison Woods wrote 07/19/2021 at 22:50 point

the linked tool says that it requires a password to access

  Are you sure? yes | no

Francesco wrote 07/20/2021 at 07:04 point

I apologize for the confusion; this is very much still a work in progress and it is not quite ready to be completely open. 

However, there are components which you can try without any password or registration, like the one in the second link ( or this glider ( ) for which you can find more detail on this page (

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates