Occasionally I design 3D models. Usually, I need to fix or improve something around the house. But sometimes I stumble upon a beautiful design, and I have some ideas on how to improve it. This is how last year I uploaded yet another model to the PrusaPrinters website: Screw-top Containers (Prusament Spool Reuse Idea).

My submission was a remix of a project: CONTAINERS - PRUSAMENT SPOOL - reuse idea. Its author — Dominik Císař created a few projects that demonstrated possible reuse of Prusament Spools. Prusament is a 3D printing filament by Prusa Research that comes on a spool with plastic sides and a center core made out of cardboard. These center cores can be reused as containers when closed from both sides. Dominik designed caps that would plug into the cardboard cylinder, and I had some other ideas. I like sturdy constructs, so I remixed the original models to have a fixed insert with a thread and a removable screw-cap.

This was one of the projects that I quickly hacked together and forgot about it. But then, after some time, my remix became a featured model on PrusaPrinters, and a bit later, it even appeared on Prusa weekly prints.

It's a fantastic feeling to see that your work gets such attention and recognition. However, there was one this which was bothering me: the threads on my models had a low resolution. And not only it looked ugly, but it also performed poorly. Seriously, look at the video from the 0:42 timestamp: the person in the video struggles to screw on the lid. As I mentioned before, this was a fast hack, so I didn't care about the details. But when it's featured, and people look at it, and print it, and use it — that's an entirely different story.

Fixing the Resolution

I did my remix in OpenScad, and this was not the first design of mine that required threads. For all of my previous models, I used the single threads library that appears on top of my Google search. This library, though, does not have a way to define the resolution. When you model something round in a 3D design app, it's composed of many flat sections. The higher the resolutions, the more sections, and the rounder your design appears to be. As you can see in the screenshot below: the thread is way more chunky than the rest of the design, especially the inclined surface right about the thread.

A Prusament container model with a low resolution thread.

Usually, to define the resolution in OpenScad, you can assign values to variables like $fn either globally or by passing it to a function (or a module in OpenScad terminology). As nothing like this worked for me, I had to dig into the code of the threads library. And after a short time I found this definition of the number of segments based on a thread diameter:

In human language: the number of segments used to draw a circle (cylinder, cone, etc…) is equal to the diameter of this circle (in millimeters) multiplied by 6; not lower than 25; not higher than 50. It's a small range if you ask me. It only changes for diameters from approximately 4 to 8 millimeters, the rest result either in 25 segments or in 50 segments. This means that my ugly thread, which is close to 95mm in diameter, has the same number of segments as a 10mm thread.

The problem has a simple solution: change the upper limit directly in the library's code 😎. You can see how the rendered thread changes based on the number of the segment's that it had.

Ultimately, I increased the number of segments to 360 and printed a super-smooth model. It worked better. But it didn't work as smoothly as a jar of a raspberry jam, for example. Also, we adults are excellent in getting along with various imperfections, but with my daughter, it was clear that she struggled to align and close the lid that I printed.

A low-resolution thread in red, and a high-resolution one in pink.
Pst… are you also curious about what is that decorated pink container all about? Stay tuned for another post from my wife about how she created the container with our daughter as a part of a dealing-with-boredom-during-the-quarantine activity.

Jars not Bolts

The threads library that I was using in OpenScad is generating ISO metric threads. It has some comforting flexibility, but its primary focus is to generate threads according to a standard. This standard describes threads that are mainly used for nuts and bolts, and while this is desired for some prints, it does not work well with jars. And by jars, I mean all the jars. Take a look at a jam jar: it has a thread with four starts (i.e., four separate threads that coil in "parallel" to each other); each thread bearly does a quarter of a turn; there are four small grips on the metal lid; the lid stops at the beginning of the threads because the lid presses against the glass opening of the jar.

If you look at a plastic jar of cosmetic cream, it's different, but there are similar vital features. There are two starts on the threading; each separate thread makes at most one revolution; the threads are not "sharp" and have a looser spacing that the ones of nuts and bolts.

I decided to base my design on the jam jar, but make proper threads on the lid (I don't press the lid out of metal after all 😜).

The New Design

The OpenScad threads library is not flexible enough to easily create the threads similar to those on the jam jar. I could search for another library, and I have a feeling I could find a suitable one. But I decided to redesign everything in Fusion360. I started to use Fusion360 only a few weeks ago, and now each design that I do is a new learning experience. Threads are one of the things that I still didn't touch in Fusion360, so this looked like a worthy challenge. Finally, there were some parts that I don't like in the original design Dominik Císař, so building everything from scratch looked reasonable.

The original Prusament spool insert on top of a newly 3D-printed clone.

I re-created the plastic spool inserts of Prusment in as much detail as I could. When I finished, the printed part almost entirely resembled the injection-molded original… from 2018. Because then I found another spool from 2019 and they have a slightly different design. So I decided that it's good enough and screw perfection. Right, we are speaking about screws 🧐.

Fusion360 has a thread feature with many predefined standard profiles. If you need to create a thread that has to match some standard — this feature is perfect. If you need to make something at least slightly custom, then the Fusion360 threads feature is even worse than it's counterpart from OpenScad. Do you need a thread with a 96.72mm diameter? Forget about it! Only 95mm and 100mm are supported.

One of the plenty of Fusion360 thread presets on the container insert model.

I created the suitable treads with the coil feature. As I needed four starts, I created a single-coil and quadrupled it as a circular pattern. I highly recommend the Layer by Layer - Using Coils for Threads video by Adafruit Industries if you need basic skills to create custom threads in Fusion360. For a more general overview, there is also 3D printed threads - 3 ways to model them in Fusion 360 video by CNC Kitchen.

The final design: four quarter-coils.

I made sure that there is a 0.6mm distance between threads and walls. Usually, I need to have 0.1mm of clearance if I need something to fit into a hole. I choose to have a 0.5mm extra gap on purpose: I need a lid that is easy to put on and close.

The old version of the screwtop container was printed in Prusament Galaxy Black and Lipstick Red. Now I have a second version that I completely recreated from scratch. I printed the second version from Prusament Vanilla White and Azure Blue. You can see by yourself side by side how threads differ between the two versions.

The new threads in blue vs the old ones in red.

The new threads slide smoothly and don't have issues with alignment. Even my three years old daughter can open and close the container pretty quickly. I will call this a Raspberry Jam Jar standard. I love raspberry jam.

Because the design is available online, you can download and print your own Prusament Screw-Top Container Conversion Kit as well. Also, if you are 3D printing, consider checking out Prusament if you have not so far. I like the quality very much, and together with shipping costs, its price is on the lowest range of 3D printing filaments that you can buy in Switzerland. Of course, it can be different in your country, but still worth checking.

If you don't use Prusament 🤔… would you like to see a remix that fits on a packing tape core? A toilet paper core? Probably, nowadays, with the coronavirus, it's easier to get a spool of Prusament than a roll of toilet paper 🧻.

Take care, and enjoy some beauty shots: