CNC Finger Joint Box

(William Adams) #1

Working up a tutorial on this here:

First step is to create the box itself: This is done in OpenSCAD using the parameters:

length = 6;
width = 3;
height = 4;
thickness = 0.375;

Next resolve the pin/joint size and spacing:

Next step is to work out how to get from the above parameters to a file which may be easily cut using Carbide Create — probably using METAPOST.

(William Adams) #2

Okay, worked out the OpenSCAD code for the parts and interface.

It’d be great if folks could play around with it a bit and see if it makes sense — if it does, next up is working out the METAPOST code for the parts, and how to get this into Carbide Create.

(See most recent version at bottom)

(Will Winder) #3

Nicely done, I especially like the stopped dados. Do you need notches in the top/bottom for those? Also the lid might be hard to remove from this design, maybe one of the side dados can go all the way through so it slides out?

When working on parametric things in OpenSCAD it’s sometimes useful to pass your parameters into the function/modules. Especially for things like the front/back/left/right where the code is mostly the same except for the size parameters (and an offset for the first notch). Those could potentially be replaced by a single module with some parameters.

You may already be aware of this, but thingiverse has a nice customizer web-app for OpenSCAD which is really nice.

I tried making a box in OpenSCAD for the CNC once to hold a circuit board with cutouts, it was a much simpler design using rabbits for the joinery. Had a hard time exporting it and never really found a good solution.

(William Adams) #4

Removing the lid will be a very traditional sawing off — I may add an additional path for that though — that’s a good point.

Yes, rabbeted boxes are much easier — I’ve done a couple of write-ups of those and didn’t trouble for the 3D modeling — will probably revisit that once I’ve got this nailed down. I’ve also got a very decorative box design which uses a V endmill and some other nifty things.

(Stephen Gullage) #5

I’m assuming you mount your material vertically over the end of the table?

(William Adams) #6

Yes, the METAPOST/Carbide Create stage will include working up a fixture to hold the boards on end to cut the finger joints.

(William Adams) #7

Oh yes, you can use the project () command in OpenSCAD to get a 2D file which can be used to make a DXF from. I used that for my cigar box toolkit:

(Stephen Gullage) #8

That’s great! I love the idea of doing finger jointed stuff or dovetails on the C3D machine, and I’ve been working on different ways of doing boxes: Mitre joints, rabbit joints, even trying to figure out how to do finger joints with round tops to match cutter diameter. I failed miserably at drawing that, btw. I know there are third party g-code generators for doing those, but I can’t get my head around not seeing it on the screen beforehand and just letting it go at it.

(William Adams) #9

Well, we commissioned a YouTube video:

and I worked up a step-by-step tutorial on making such boxes in Carbide Create at:

and the first project on the original Projects site was a box:

(Stephen Gullage) #10

I’ve gone through that one, I have just been experimenting with other ways of making boxes… because that’s the fun of the CNC. lol

(William Adams) #11

Okay, worked in a sliding lid option:

Hopefully this evening I can work up the other possibilities, then we can move on to the 2.5D stuff.

(William Adams) #12

Okay, implemented the various lid types and fixed an error.

(William Adams) #13

Okay, adding an additional lid type — pinned — this will be like to the hinge which I did on my first CNC box:

One minor issue is that for simplicity, we’ll “give the program its head” and set the thickness of the lid to match the dimensions of the pins — new file presently.

(William Adams) #14

Okay, did come up with one further feature — dividers — any other suggestions?

(Michael) #15

You have a bug with RightSide() & bottom lid slot.

(William Adams) #16

Thanks for finding that! Fixed.

Next up is working out the implementation of the dividers (added that into the interface — seem reasonable?) and then the JSON preferences setup — then all I have to do is work up a Luascript to read in the JSON values, a TeX file to pull that in, and a METAPOST figure which will draw out the various options.

(William Adams) #17

Okay, got the divider implementation done, and I hope that’s pretty much it — the only other feature I can think of is some sort of error checking or enforcement of the interface options. Unfortunately, the interface for doing that is not clicking with me, so we’ll have to see.

(Griff Carpenter) #18

Will, you never cease to amaze me! One post and you reveal to me 4 more software packages I need to learn, along with the other dozen or so I have on my Will Adams list.

(William Adams) #19

Don’t feel a need to learn these, and they’re not quite software packages.

JSON == JavaScript Serial Object Notation — it’s a format for storing data

Lua — this is a programming tool often used for scripting and embedded in other tools, in this, inside TeX

TeX — this is a mathematical typesetting tool, arguably obscure, and not much used outside of that specialty, though I’ve used it for pretty much anything and everything

METAPOST — this is a programmatic drawing tool derived from METAFONT which was developed to make fonts for TeX — it’s actually a library inside of luatex

Arguably it’s one file format, and just one software tool — I’m hoping for this it will all be turnkey, though I’m not having as much with JSON as I’d hoped (trying to figure out why it’s not importing the file). EDIT: JSON file is importing and exporting (had an extra comma).

(William Adams) #20

Okay, here’s a slightly revised in terms of interface version — I may add some error checking, but think this is feature compleat otherwise:

The json file in the zip archive will allow one to save presets: (2.5 KB)