I created this BMW roundel (circular logo) for one of my friends, who is interested in BMW cars, as a holiday gift. After looking at images of BMW roundels online, I decided that I would attempt to make one. But instead of buying one of the metal disks that goes on a car from a BMW dealership, I decided to create one with my 3D printer to make it something unique.
This project was an interesting adventure for me because of the skills that I had to learn in order to create the finished product. Although I had worked with OpenSCAD (a 3D modeling program) before, I never had to create interlocking pieces with it. Also, I had never tried to assemble many 3D printed pieces into a finished whole before- all of my 3D prints so far had been in one piece, and in one color.
I'd really like to emphasize that you don't need a fancy 3D printer to make great prints. My printer (pictured above) is a Prusa i3 Rework that I built from scratch. All of the hard open-source work that went into the design of the printer enabled me to build it myself, and even though it might not cost as much as a professional printer, it was designed with the exact same rigor. It also performs beautifully. Bottom line is that this project (and nearly every other one) is possible with any 3D printer you have, and you can almost always get great results.
Without further ado, let's get to the Instructable! It is split up into two parts- one describing the design of the logo, and one describing the real-world printing and assembly of the roundel.
Step 1: Supplies
Before we can start the project, let's go over what we need:
- If you want to learn about the design process or print the files, then you can download the zipped package containing the project below.
- You must have a copy of OpenSCAD that has a version of 2014.QX (or higher), in order to support the text() module.
- 3D printer (FFF/FDM recommended)
- Pick/nail (for removing printed parts from the bed
- 3D printing filament/resin/powder: white, blue, and black.
- I recommend the material for the white to be a spool of 3mm ABS.
- I recommend the material for the blue and black to be spools of 3mm PLA.
- White ABS juice (if using white as ABS with an FFF/FDM machine). To create ABS juice, dissolve ABS in acetone. Used to promote ABS bed adhesion.
- 200 grit sandpaper
- Plastene Plastic Weld, General Purpose (or any other plastic-bonding epoxy or solvent)
Step 2: Design: Part Shape
I want this Instructable to be accessible to anyone, regardless of their CAD or 3D printing background. Because of this, I will be providing the native OpenSCAD design files and tips for viewing them. These files can be modified and then exported into STLs (3D-printable files). I will also be providing the STLs themselves, for those who don't use OpenSCAD. I will also be explaining the steps of the design in layman's terms, without getting into the OpenSCAD code itself. This way, anyone should be able to follow the steps of the design.
My idea for the design of the part was to model it after one of the metal disks, or roundels, that go on BMW cars (image above). After looking at several pictures, I realized that I wanted it to be printed in three colors- white, gray, and blue. The silver part on the roundel would be tough for me to print and then paint- so I decided to just go with white.
After inspecting several images of the roundel, and determining that it was 82mm in diameter, I decided that my part would consist of the top of a spherical shape with a beveled ring around the outside (bottom photo). I wanted the surface to be curved just like the roundel in real life.
OpenSCAD users: Uncomment the last line in roundel_main.scad and press F5 to view or modify this part.
Upper photo credit www.ecstuning.com.
Step 3: Design: Part Assembly
How was I going to put the pieces together? I picked out the colors- black and blue in PLA and white in ABS. There was nothing special about each type of plastic that would mean that they wouldn't fit together. So I decided that the logo would consist of a bottom part in white that served as an outer ring, along with an inner part that consisted of the letters, black ring, and middle blue and white piece pushed together. You can see a diagram of the interactions between the parts (grey arrows) in the second photo above. The arrows mean that one piece will fit into another.
You can also see that all of the parts branch out from the original part (black arrows) from Step 2, roundel_main.scad. This is because each piece, combined together, makes up the whole. The whole part, or roundel_complete.scad, is the final product.
My design is parametric, which is one of OpenSCAD's great features. This means that it takes a given set of values or parameters to create all of the parts. These values, located in roundel_main.scad, are things like:
roundel_height = 13.2; // mm roundel_diameter = 82; // mm
letters_out_distance = 32.1; // mm
letters_squish = 0.85; // * 100%
letters_rotate = 50.0; // degrees
What this means is that the design of a complex part can be modified very easily. If I wanted the whole part to be only 10 mm tall, then I would just have to change it in this file:
roundel_height = 10; // mm
Because all of the parts rely on roundel_main.scad, they would all shrink to the proper height. This is because the value roundel_height is used as a variable in mathematical equations that determine shapes in the other files.
Upper photo credit www.turnermotorsport.com.
Step 4: Design: Individual Parts
Now that I had the design planned, it was time to start work on designing each part on its own. I started first with the file outside_ring.scad (top image).
This part was very easy to design. I simply took the entire part from roundel_main.scad and kept only the bottom section and the ring around it. I did this by creating a cylinder that encompassed the ring section and another cylinder that plunged into the middle of it, creating the dish shape.
OpenSCAD users: Uncomment the last line in outside_ring.scad and press F5 to view or modify this part.
Inner White Ring and Sectors
Next up was the white_inner.scad part (second image). This part was made from the roundel_main.scad file with the thickness of outside_ring.scad cut from the bottom. This way, the height of the white_inner.scad part on top of the height of the white_inner.scad part would equal the total height of the part.
Then I kept only the area in the middle of the part (the middle of the roundel). I then subtracted two quarters of a circle on each side. This created the white_inner.scad part.
OpenSCAD users: Uncomment the last line in white_inner.scad and press F5 to view or modify this part.
Inner Blue Sectors
Then I created the blue_inner.scad part (third image). It was made from the same two quarters of a circle in the white_inner.scad part, but I kept out the intersection with the original roundel_main.scad part, with the bottom part (height of outside_ring.scad) cut off.
OpenSCAD users: Uncomment the last line in blue_inner.scad and press F5 to view or modify this part.
Next was letters.scad- B, M, and W (fourth image). These parts were far more complicated than I bargained for.
First, I had to find a font that matched the letters on the BMW logo itself. BMW has its own branded versions of Helvetica that are used for all company products and communications. Although I could have removed the font from a company press release PDF (not very nice), I emailed BMW politely about my predicament in hopes of procuring a copy of the font for non-commercial use. They were, unsurprisingly, not willing to help out
So I looked around on the internet to find a copy of Helvetica that looked similar to the logo's font. I found one, and the letters provided in the STLs are in a font that looks almost exactly like the logo's font. This font is a version of Helvetica and is freely available from this website under Helvetica Neue - Bold (direct link). It is also packaged with the OpenSCAD design files in the download.
OpenSCAD has the feature to use a font to write text in a 2D format. So I did that with the B, and then created and rotated the M, and then created and rotated the W. Then I squished them to fit and pulled them upwards to create a 3D letter shape. I then kept out the parts where they intersected with roundel_main.scad, and cut off the height of outside_ring.scad from the bottom.
OpenSCAD users: Uncomment the last line in letters.scad and press F5 to view or modify this part.
Black Top Ring
Finally, I created the part top.scad (fifth image). Because this part is the last piece of the puzzle, it's kind of a freebie. Simply put, it's the part that's created in the space of roundel_main.scad where the other parts aren't.
In other words, this equation describes the space of the part:
top.scad + letters.scad + outer_ring.scad + white_inner.scad + blue_inner.scad = roundel_main.scad
Therefore, this must be true:
top.scad = roundel_main.scad - letters.scad - outer_ring.scad - white_inner.scad - blue_inner.scad
That's really how this part is designed! It's just roundel_main.scad minus all of the other parts.
OpenSCAD users: Uncomment the last line in top.scad and press F5 to view or modify this part.
Step 5: Design: Complete Assembly
Completing the Assembly
Thinking like a 3D designer yet? Good, because we still have one last step! We need to check to see if all the parts fit together.
This is where the file roundel_complete.scad comes in. Notice how all the parts in the previous step were white, while some would actually be printed in black or blue? That's just because the default editor color that I set up in OpenSCAD is white. But in roundel_complete.scad, I colored the parts and added them all together.
This is useful for not only checking to see if the parts are the right size, but to see if the tolerances were done correctly. Tolerancing allows me to compensate for deviation in a part- a larger tolerance gap means that you compensate for larger parts more. The line:
top_outer_shrink = 0.1; // mm
in roundel_main.scad leaves a gap of 0.1 mm between the edge of the top black part and the ring around it (which is helpful for my printer). One of the reasons I created the roundel_complete.scad file is to look at the gap between the parts and check if they fit together.
OpenSCAD users: Uncomment the last line in roundel_complete.scad and press F5 to view or modify this part. If needed, tolerances can be adjusted to suit your printer.
Exploding the Assembly
But now we can't see the bottoms of the blue parts or the letters in roundel_complete.scad! What if those are messed up? That's why I created an exploded view of the part in roundel_exploded.scad. Now I can inspect each part on its own, while still seeing what the whole roundel looks like. Ever looked at a machine manual and seen an exploded diagram? That's just what this is! And everything in the exploded view looks just fine, which meant that I could export the STLs.
OpenSCAD users: Uncomment the last line in roundel_exploded.scad and press F5 to view or modify this part.
You might notice that there are some strange values in roundel_complete.scad, like -5.01 and 4.98, that are close to a number but not exactly there. The reason that these values are not exactly 5 is because they are used for translating, or moving, objects in 3D space, and they are trying to avoid a translation-induced planar collision. Sounds fancy, huh?
A collision is something that can be created in nearly every 3D modeling program. It happens when two planes, or lines, or curves, occupy the exact same position. Without getting into the details, this means that parts need to be slightly offset from each other to avoid looking wonky and having objects in the same space. To see an example of what a planar intersection looks like, check out the fifth image (GIF) above. The middle part is what it looks like when you rotate the camera around a planar intersection. Not good. I avoided that so everything looks good in roundel_complete.scad.
Now you've picked up a few design tips (good for most 3D modeling programs) and we've got the parts designed! On to the 3D printing steps!
Step 6: Construction: 3D Printing
Before we can print anything, we need to slice the parts for the printer. Slicing is a process where a 3D file is converted into layers for the 3D printer. Usually, STL files are taken as input, and G-Code is the output. Slicing needs to be done for each printer in a separate way, because each STL file and printer are slightly different. The software that I use is called Slic3r, and I highly recommend it. The first image above is what a tray of parts to print looks like.
How do we want to slice everything, though? It would probably be best if we print all of the black pieces (top.stl) at once, all of the blue pieces (blue_inner.stl) at once, and all of the white pieces (white_inner.stl, outside_ring.stl, letters.stl) at once. When you print the parts, it will be easy to get them printed and simple to clean up. Why would it be simple to clean up? In the second photo, you can see a jar of ABS juice. ABS juice is a concoction made of ABS dissolved in acetone. You need to smear it all over the bed in order for ABS parts to stick. It's also a pain to remove from the bed when you want a clean glass for printing PLA parts. So let's start with the clean bed for the black and the blue PLA, and then smear on ABS Juice for the ABS print.
The fun part! In the third image above, you can see the grey top part printing, and the blue part printing after that. I print my PLA parts at 185 degrees Celsius on clean glass (sometimes with a bit of glue stick rubbed on). The bed is at 70 degrees Celsius.
My ABS parts are printed at 215 degrees Celsius with an ABS-juice covered bed (visible if you look closely).
All of the parts should print off just fine with nothing special needed. If necessary, you can use brims or rafts on the letters (I didn't need any).
Let's continue onto prepping the parts!
Step 7: Construction: Sanding
After all of the parts printed, I had to sand some of them down a bit. 3D printing isn't an exact technology, and there were a couple strings and blobs on my parts that needed removal. Although I needed to do this step, not everyone will (SLA printers probably won't).
My printer tends to make the bottoms of parts a bit thick- I've been toying with settings to find a good value for that first layer to get flat parts. What I ended up doing was sanding off the edges of parts at the beginning with 200 grit sandpaper.
If you don't really like the "3D printed look" that is created when you get small layers on a part, don't worry! You still have options. You can go over all of the faces of the parts (gently!) with 200 grit sandpaper before assembling them, and then move to finer grits of sandpaper as the part is finished.
Step 8: Construction: Assembly
It's now time to put the pieces together. I started with the B of the BMW- it has two small black parts that sit in the middle of the white letter. Pliers come in handy to force the pieces into the middle of the letter- if the fit is too tight, then sand down the inserts more.
After that, I inserted the B into the black top part of the roundel. The other letters came soon after- however, they needed a bit more sanding before they would fit perfectly into the black top piece. I recommend inserting them from the back of the part, instead of from the front.
Then I inserted the blue pieces into the inner white part. It looks a bit shiny in the picture, because I spread acetone on the top and bottom with a q-tip. This helps the blue parts stay in a little better, and it also makes the part look more polished. Please use the acetone somewhere well-ventilated, so that you don't harm yourself.
After all that, I inserted the middle part into the top part. Make sure it is lined up properly- the blue part is on the left of the M in the logo. You may want to use a dab of the plastic epoxy to get it to stay put (WARNING: Nasty stuff! Use ventilation!).
Now spread some more plastic epoxy on the bottom part, and push the top into the bottom. All of the pieces should be stuck pretty well in there, so none of them will come loose.
After all of the assembly, I put some acetone on a paper towel and spread it all over the part (quickly, or the ABS will get sticky). Acetone will make ABS quite shiny, and it also makes PLA parts have a less pronounced luster. I like the look and thought that it would fit well with this part.
As a side note, acetone polishing can also help with hiding small imperfections! Keep this in mind.
Step 9: Conclusion
Now you have finished your BMW roundel! I was thinking of all of the other things I could make with it, if it wasn't just a disc: a Christmas ornament, a hood ornament, a button, a dial, or a container. There are lots of possibilites out there if you want to create it into something new- OpenSCAD is easy to pick up if you are unfamiliar. You can also choose to modify the STL files on their own.
Overall, what I got out of this Instructable was that I learned a lot about part assemblies with my 3D printer- something that I had never done before. I also learned a bit more about how OpenSCAD works. With a single-color extruder on a 3D printer, your options are limited, but not so limited that you can't build interesting models out of separate colored pieces. You can do it!
I hope that you picked up some design tips and fabrication tips as well. Hopefully sprinkling in anecdotes about the little things in 3D modeling and printing helps you out! OpenSCAD in my mind is a great way to work with 3D files, and I hope that you take the plunge with it if you are thinking about learning how to do 3D design. I know that the wide world of 3D work may seem awfully scary at first, but with a little luck and some knowledge you can go far.