Select Page

Designing and 3D Printing From Scratch

The First World Problem

When I first got my 3D printer a few weeks ago, my mind was racing and coming up with all sorts of crazy stuff to print. I still constantly think, “Can I print that?”. Learning about the limitations of what a printer can and can’t do is definitely interesting and presents a sort of fun challenge. After burning through all my sample filament after initial setup on my first weekend of printing, I wanted to make my first roll of “real” filament count. So instead of just printing a bunch of files I found online (most of which disappeared under the piles of toys in my kids’ room) I wanted to print something that would actually server a purpose and be useful instead of a Flexi Rex. No offence to Flexi Rex- He’s definitely a cool way to learn about 3D printed hinges!

I recently got a new toothbrush and it didn’t fit in the built-in holder in the bathroom. Yes, first world problems, I know, but just for the sake of creating something that was a “custom” design to solve a problem and be useful, I thought this was a good starter candidate. Hopefully I’ll get better at solving issues with better, smarter 3D prints down the road, but this will be a fun learning experience!

Some measurements had to be estimated just because I couldn’t exactly wrap the caliper around certain parts of the brush and the entire caliper wasn’t capable of measuring the entire length of the brush. So as a rough estimeate, I held the caliper beside certain design elements of the brush just to get that individual part’s size. I measured the handle and the brush head separately. I think this worked out better anyway, simply because the handle is a lot bigger in diameter than the brush head anyway, plus the tapering of the handle into the shaft of the brush head was a design feature that I wanted to take note of, especially since I was designing the toothbrush holder to be compatible with this specific model brush.

Step 1: Measure Everything

The first step was to get as many measurements of my toothbrush as I thought would be needed. I measured the base, the handle, and brush heads in both directions which essentially produced a box model that represented a bounding box for my toothbrush. With those dimensions in place, it was time to start my simple toothbrush holder design.

Speaking of being compatible with this specific model of toothbrush, I wanted to design a wall-mounted toothbrush holder that could accommodate two brushes, as well as allow both of those brushes to be charged simultaneously as they were being stored. My original design was a small, miniature table-like design that would have sat on the countertop beside the sink. However, after rethinking the idea, there’s not a ton of countertop space to spare, so I switched gears and started thinking about a wall-mounted design that achieved essentially the same functionality as the original plan. Just hang two brushes and allow them to charge while hanging.

Step 2: Creating a Rough Scale Model

Once I had collected all of the measurements of my toothbrush, it was time to crack open Blender and enter in all my measurements. Once I created some basic bounding boxes for my toothbrush measurements, it almost, sorta, kinda began to look like a toothbrush.

Once I had the toothbrush modeled, I was ready to begin work on the design of the toothbrush holder. Just to illustrate my first idea, it was going to be a sort of table-top design with two large holes for the handles that stepped down into two samller holes that extended through the bottom of the frame. The smaller holes would allow for toothbrush charging while resting on the platform. The platform would be supported by 4 legs at the corners. As I mentioned before, this design was okay, but meant crowding up an already limited countertop.

Step 3: Modeling the Holder

Once I had the toothbrush reference model in the scene, I was ready to begin designing a simple wall-mounted holder. Since there are a zillion toothbrush holder out there already, it wasn’t hard to settle on a simple, tried-and-true hanging design. The holder would consist of a main panel with small hooks protruding from it that would cradle the brush head.

Step 4: Exporting For Cura

This was the sleeper challenge on this project. For some reason I hit a wall going from Blender to Cura for printer export. Even though I had modeled everything to scale in millimeters in Blender, for some reason, I kept getting issues when attempting to import into Cura, my slicing program. Long story short, and after several several several failed export attempts, I think I can fairly safely conclude that most of the issues were caused by not running the model through the 3D Print Toolbox addon. During the modeling process, I employed a stack of modifiers to get the design I was looking for. Even after applying scale, rotation, location, I was still getting import problems from Cura saying the model was extremely small and had to be scaled up 10,000 times, and it still wasn’t visible. Finally, I realized I wasn’t running the 3D Print Toolbox addon, so I gave it a shot. To my surprise, I found faces that were inside the mesh that weren’t supposed to be there (as a result of a mirror modifier). After cleaning up over 400 duplicated vertices, I re-imported. It came in, but the scale was still messed up. I ended up scaling 1000% in Cura and double checked the dimensions to ensure they were the exact same as the dimensions coming from Blender. The seemed to match, so I went ahead and sliced the model.

Once the print came off the bed, it was time to see if the brush actually fit. It did… kinda. Turns out I was a bit TOO precise with the exact width of the brush neck and ended up modeling too close to my reference. It kinda fit, with the bristles facing outward, but it fits much more confortably with the bristles facing right or left. Just not to self, leave room for error, leave room for breathing, leave room for ease of putting the brush in the slot imperfectly. Other than that, it works!

Check out more articles

How to Generate a Ranger Config File

ranger --copy-config=all This will copy all the default config files from /usr/local/lib so you can make edits without messing anything up. Huge shout out to for explaining this and so much more. Took me a...

First Open Source Contribution

Surprise! I genuinely did not plan on making my first ever open source contribution today. In fact, I didn't plan on a lot of things happening this week at all. I recently got an awesome opportunity to work on a site that is being hosted on a platform called Pantheon,...

How to Exclude Specific Posts and Pages from WP_QUERY

For the sake of having something to work with, let's suppose we've got the following query:In this query, inside the $args array, there's a special parameter that allows you to exclude specific posts and pages from the query. This parameter is called post__not_in and...

Configure SSH For Password-less Connections

Preamble I'm slightly embarrassed to admit this, but it was a long time before I figured out how amazing this little file is and how exactly to put it to good use. The file I'm talking about is the SSH config file. By default, when you first connect to a server via...

WordPress Site Stuck in Maintenance Mode

Plugin Error Code 500 During Update While I was updating a WordPress plugin locally, something happened on my local server to trigger a 500 error code as the plugin was updating. On the frontend, I refreshed the page and was greeted with "Briefly Unavailable for...

Creating a WordPress Plugin Downloader

How it Started I was recently tasked with the challenge of creating a WordPress theme generator. The idea being, instead of writing your style.css file from scratch, you'd be able to just answer a few simple questions about how you'd like your theme set up, and those...

Fix Audio on XFCE Chromebook

The Problem After moving from GalliumOS to Xubuntu, I noticed that playing YouTube videos on both Firefox and Chromium would result in decent playback for a few minutes, but suddenly the audio would turn into a solid beeping tone while the YouTube video displayed the...

Adjust Trackpad Sensitivity XFCE

xinput set-prop "Elan Touchpad" "Synaptics Finger" 1 1 1 What are the values 1 1 1? This sets the sensitivity as close to the original ChromeOS as possible. Larger numbers will decrease sensitivity of various aspects. I never looked into which individual value...

Fireworks (Short Film) About the film Year: 2020 Director/DP: Tim Searfoss Writers: Matt Jones, Tim Searfoss Sound Mix: Matt Jones

Hosting Multiple Sites Using LocalWP

I've done a write-up on hosting local WordPress sites before, but I definitely prefer this method over the previous one. If you've never tried hosting multiple sites using LocalWP, then I'd encourage you to check it out. I've had really bad issues with it in the past,...

Looking for a place to host your next project or design?

Use this link to get your first 4 months of WP Engine for free: WP Engine – Plans (With 4 months free)