Which resolution is needed for bricks compatible with Lego?
I found a story about someone 3D-printing equipment for their Lego minifig, using an Ultimaker. (Article is in Dutch, but accompanied by photographs).
I noticed that what they made weren't the actual connecting bricks, but the tools used by the minifig. And that even so, some filing and a dremel were needed afterwards to make them fit properly.
I'm told that to make something connect properly with real Lego, the machine needs to be tuned very precisely.
So, what resolution is needed to print bricks that will connect with normal Lego bricks?
It's really more about calibration than resolution -- a poorly calibrated printer will have dimension errors that prevent mating with true LEGO bricks or other printed bricks.
Also, "resolution" is an incredibly loaded term for 3d printers, because it can mean a lot of different things. But we don't need to get into that right now. There are really two big things to worry about: layer height and extrusion width.
Layer heights of 0.1mm or 0.2mm should be fine. Coarser layers may run into surface finish issues that make the bricks difficult to put together or take apart. There probably isn't much reason to go finer than 0.1mm for this application. Almost all FFF printers can do 0.1mm layer heights as long as it is reasonably well-tuned.
Any typical household FFF printer with a "normal" nozzle size can print fine enough for the bricks to work. It just needs to be tuned well. The smallest "must have" feature in a standard lego brick is the 1.6mm thick wall around the sides. The typical minimum printable feature size for an FFF printer is 2x the extrusion width, because the slicer will place a path on the inside edge of the shape and the outside edge of the shape. (Some slicers will allow single-extrusion features, but this is not generally recommended because it makes weak parts.)
So, how wide is the extrusion width? It's adjustable, and different slicers auto-recommend different values, but as a safe rule of thumb it needs to be between 1x and 2x your nozzle size. There are some volume calculation quirks in different slicers that may encourage larger or smaller sizes, so sometimes people recommend [extrusion width = nozzle size + layer height] particularly with Slic3r. This is very system-specific.
Assuming you have the most common stock nozzle with a 0.4mm orifice, and also set the extrusion width to 0.4mm, the slicer should put four strands in the walls of the LEGO brick. That's good.
Where it gets tricky is if you have an extrusion width that does not evenly divide into 1.6mm. Say you are printing with an extrusion width of 0.6mm. There is enough room in the wall of the part to place two full 0.6mm perimeter strands... but then a gap 0.4mm wide will be left in the center. You can't put another 0.6mm strand into that 0.4mm gap. Different slicers handle this different ways. Some will leave an empty space between the walls, and you get a very weak print. Some will mash an excessive amount of plastic into the gap, causing poor print quality as excess material builds up more and more on each layer. Some will push a smaller-than-commanded strand to try to properly fill the volume.
So, the general advice with small features is to make sure your extrusion width goes into the part's minimum thickness a reasonable number of times.
- [Feature size / extrusion width < 2] is BAD
- [Feature size / extrusion width = 2] is GOOD
- [2 < Feature size / extrusion width < 3] is BAD
- [Feature size / extrusion width > 3] is GOOD
Although these will vary somewhat by slicer -- older slicers like Skeinforge tend to have more issues with this than newer slicers. What you should do in practice is check your slicer's print previewer to see whether it is leaving a gap between the strands. Then adjust extrusion width and perimeter/shell count to try to get an intelligent output. There's some trial and error involved.
The smallest "nice to have" feature is a tight fit so bricks snap together properly, and IIRC, 0.1mm is far too large for that.
Whether 0.1mm tolerance is adequate depends on the plastic -- nylon, sure, PLA, nope. ABS (like real lego bricks) may be ok. Most of the 3DP-oriented brick designs I've seen modify some design details to make them more suitable for somewhat looser tolerances.
That said, if you're tuning specifically to print a single type of thing over and over, you can hit +/-0.05mm or better pretty consistently. The motion system resolution in a typical household/hobbyist 3d printer is 10 micron and plastic volume control precision adds a little variance onto that. The design clearance between actual lego bricks is 0.1mm, for example, so 0.05mm should be adequate.
Some looking around says that Lego has a mold tolerance of 0.005mm, which apparently translates into 0.01mm in the finished parts.
Yeah, we're simply not going to hit that with hobbyist FFF printers. I think people making their own bricks will generally tolerate a little bit less consistency in "snap-feel" though.
I have notes about printing Lego bricks here:
The upshot is, you want to align the wall thickness of your brick model edges to match an exact multiple of nozzle thickness of your printer. This is more important than using an STL file that exactly matches real Lego dimensions, because your slicer and printer are unlikely to be able to match those dimensions anyway. And because of that, you'll need other adjustments to the bricks to help them fit well with each other and with real Legos.
Additionally, while it is well-understand that Lego bricks use a 1.6mm "Lego Unit" for their standard edge thickness, it's less-well understand how they use an additional .1mm "Play Factor" to help bricks to fit together better. Based on my tests, this play factor is removed from both sides of an edge, such that a standard Lego edge wall should be 1.4mm thick.
Put this all together, and I've found you want to aim for 1.2mm edges when using a .4mm nozzle, and 1.5mm edges when using .5mm nozzle.
Alternatively, a .4mm nozzle can do real 1.4mm Lego edges by only using 1 line for the outer walls, and filling in the remaining .6mm of thickness. Personally, I never want to use just 1 line for a wall, and 1.5x the nozzle diameter is also the bare minimum I'd trust for filling in to work well, making this plan a challenge, too.
The thingiverse piece I linked to is actually a customizable brick generator, that will let you make fine adjustments and help you create brick STL models based on your printer, your slicer and settings, and your material, that will print well and fit with other bricks.