OpenSCAD, Programming, Woodworking

Generating Dovetails in OpenSCAD

I’ve written an OpenSCAD library for generating dovetail pins and tails. No longer will beautiful dovetail joints be solely in the domain of skilled woodworkers; now, anyone with a 3-D printer or CNC router can participate too.

Include it in your OpenSCAD script like so:

use <dovetails.scad>;

dovetail_pins() will generate just the pins of a dovetail joint. dovetail_tails() will generate just the tails of a dovetail joint.

board_with_dovetail_tails() and board_with_dovetail_pins() are much more useful; they will generate boards with pins or tails cut into each end.

If you render dovetails.scad on its own, it will output a pair of example boards with pins and tails.

There’s a second file in the repository called dovetail-box.scad. This file is an example of how to generate all of the boards needed to create a dovetailed box, and it shows how they’re oriented when fit together.  It’s also an example of generating pins and tails of different thicknesses.

The library is available on GitHub.

Standard
CNC, Maker, OpenSCAD, Woodworking, X-Carve

Today’s CNC Carving: Doll Bunk Bed Insert

My wife and I decided that we were spending far too much money on factory-carved objects, so we bought our own CNC router — a 1000mm X-Carve from Inventables.

I finished setting it up today, and the first carving on the agenda was a replacement insert for my daughter’s doll bunk bed:

The bed broke when someone stood on the bed to reach a shelf they weren’t supposed to reach. It would be a simple matter to cut out a new insert with a jigsaw, but where’s the fun and repeatable automation in that?

Continue reading

Standard
Life, OpenSCAD, Programming, Woodworking

I Built a Tilt-Out Trash Can Cabinet

I’m going on a work trip later this month, and Christina asked me if I would be able to build something to hide the kitchen trash and recycling cans before I leave (and before her mom visits). Challenge accepted!

We brainstormed and came up with a tilt-out cabinet design.  The first thing I did was model the cabinet in OpenSCAD. We hadn’t bought any garbage cans yet, so I made it customizable; I could specify any number of cans of any size, and the model would adjust and print out a cut list for me to bring to the lumberyard.

The script is available at on GitHub, and as you can see, it can even animate the tilting mechanism:

garbage-cabinet

We settled on a two-can design (one for trash and one for recycling), but we did contemplate more… grandiose… ideas.

animated

The sides and bottom of the cabinet were cut from one sheet of sanded plywood. I don’t have a track saw, so I made do with a circular saw and a straight edge.

img_6311

After making these cuts, I finally ordered a dedicated fine-tooth blade for my circular saw to avoid tearout the next time I need to cut nice wood without a table saw.  A 24-tooth blade is fine for 2x4s, but not for any visible edges on furniture.

The first thing I built was the part of the tilting door that holds the cans to make sure that the spacing and measurements were right.

img_6312

img_6314

The spacing and measurements were right.

I cut the sides and center of the cabinet and then used a biscuit joiner to cut slots that will be used to attach the top with tabletop fasteners. This is similar to how I build our kitchen table, and this cabinet will be stained and painted to match.

img_6316

I used my 90º clamps to hold the boards in place while I joined them with pocket screws.

img_6317

img_6318

Oops. It’s been a while since I’ve used pocket screws, and I forgot that it matters how long they are.

The center divider was joined with regular 2.5″ screws straight up the bottom.

img_6320

 

img_6321

This is how the cabinet bases will sit in the box. They sit closer to the center board than the side boards because the face frame will take up more space on the ends (where the board is flush with one side of the plywood) than in the middle, where the board is centered.

The face frame is 1×2″ poplar and pocket screws.  I used poplar because it’s a cheap hardwood (although not too hard), and it takes paint well. It’s the same wood I built the apron of our kitchen table out of.

img_6322

img_6313

The cabinet top is made up of three red oak boards joined with biscuits and glue. These boards were left over from last year’s table build, so it will match exactly.  When we moved in, I inherited a powerful jointer from the previous owner, so I was able to use that to square up the rough side of each board rather than using a router and a straightedge — major timesaver.

img_6326

Here’s the top, cut to length and width and then sanded smooth. My new saw blade hadn’t come yet, so I had to cut these by hand. I should probably order a new handsaw too.  It’s about 18″x33″, and sanding went a lot quicker than the 40″x84″ kitchen tabletop. I would say 83% quicker.

I stained the tabletop with Varethane’s Kona stain.

img_6327

The cabinet doors are more 1×2 poplar with a groove on the inside to accept beadboard panels.  Here’s a shot from behind after I nailed and glued the cabinet doors to the tilting bases.  In the background, you can see a mystery bag, a computer desk, my shop treadmill, and a “telephone chair” that I’m going to refinish.

img_6360

img_6350

There’s 1/8″ space around each door, but I should have left an additional 1/8″ or at least 1/16″ on the bottom to allow for the space the hinges are going to take.  It worked out in the end though, just a little closer than I would have liked.

Here’s the top after two coats of polyurethane and the cabinet after the first coat of paint (Sherwin Williams Creamy White).

img_6363

img_6375

I attached the doors with hinges at the bottom and added a stop block to each side of the middle divider so the doors can’t fall all the way open. They stop at about 40º from vertical, leaving just enough room to remove the trash cans.

img_6376

These spacers in the back ensure that the doors sit flush with the face frame. Since the hinges aren’t mortised in, they lift the fronts of the cabinet up about 3/16″, so the backs needs to be lifted accordingly.

img_6369

Tada! The handles match the arts and crafts cabinet in the next room, so this piece really brings the whole house together.

img_6370

Double tada!

After using it for a couple of days, it’s clear that I’m going to want to add some sort of soft-close mechanism. Other than that, I’m very happy with how it turned out.  It was my first time building my own cabinet doors, my first time using a jointer, and the last time I’ll ever have to see garbage cans in my kitchen.

Standard
3D Printing, Maker, OpenSCAD, Programming

Create LEGO-compatible Angle Plates with LEGO.scad

LEGO Angle PlateIn response to a comment here, I wrote the first OpenSCAD module for generating complex brick shapes using my LEGO.scad project.

LEGO.scad is great for creating bricks and wings of all shapes and sizes, but it isn’t suitable for making complicated shapes like angle plates. LEGO sells 90º angle plates (pictured); the new module can generate plates with orientations between 0º and 100º.

This is the default output: a 90º plate with both sides 2×2.

Here’s one with an angle of 45º and different size sides:

Here’s the underside of one with an angle of 100º, a 2×3 base, and a 4×1 overhang:

To generate your own plates, check out the LEGO.scad repository and call the angle_plate() module in OpenSCAD. Feel free to share your creations in the comments below.

Standard
OpenSCAD, Programming

Animating the Solar System with OpenSCAD

OpenSCAD is my language of choice for designing objects that will be 3D-printed, but I just recently learned that it also supports 3D animation.

To familiarize myself with this feature, I decided to animate the movement of the planets in our solar system. Here’s a GIF excerpt of the animation generated by OpenSCAD; it covers about 2.5 Earth years:

solar-system

Neat, right? The axial tilts and orbital periods, speeds, and inclinations of the planets and moons are all accurate, but for visibility purposes, I scaled the size of the planets up 20x relative to the size of the sun and reduced the distance between them by 98%. The relative positions of the planets are also reasonably accurate for March 2016.

The script is available on GitHub; let me know in the comments if you’ve ever used OpenSCAD’s animation feature and what you made with it!

Standard
3D Printing, Games, Maker, OpenSCAD, Programming

Today’s Functional Print: Board Game Piece Bases

In today’s “do you think this is some sort of game?” news, I’ve designed and printed some boardgame piece bases.

These were printed specifically for my son’s “Thomas and Friends Tracks and Trestles” game, which was missing two of its bases, but the design is customizable to fit almost any size gamepiece.

The OpenSCAD script and STL file are available on GitHub, and you can customize your own gamepiece base on Thingiverse.

Standard
3D Printing, Maker, OpenSCAD, Programming

Today’s Functional Print: Stove Knob

In today’s “customizable knob” news, I’ve designed and printed a customizable knob.

When we moved into our current house, the knob to control the stovetop fan was missing:

IMG_4271

After six months of procrastinating and one hour of OpenSCAD, it now looks like this:

IMG_4274

Now I don’t have to turn on the fan with a pliers!

IMG_4273

The OpenSCAD script and STL file are available on GitHub, and you can create your own customized knob in Thingiverse.

Standard