CNC Finger Joint Box

A glitch. hull doesn’t work properly with concave geometry:

Will need to define a module in such a way that that isn’t an issue.

One option here is to do pairs of cylinders at the begin/end points which are joined via a hull operation:

it just needs to be joined up with a loop which stacks them in increasing sizes so as to create the radius endmill shape.

Which once made produces a representation of the cut:

Which works when one is placed manually:

next up is seeing what’s involved in adding them to the appropriate module or in some other programmatic fashion.

Adding a few loops we arrive at:

which shows a good fit:

Will are you adding tolerances to these cuts?

Not yet. I need to work out how I’ll get CAM done before I introduce that.

I just have one more pair of edges to finish the rounding on:

unfortunately, this bogs my machine down when I turn on rounding, so will have to look into that.

File: Design into 3D_ (2.1 KB)

In Vcarve I use an “allowance” feature to make things fit, but it has been easy to determine whether the cut is an “inny” or an “outty”. I’m not sure how it would work with these box joints.

1 Like

Okay, fixed a problem, and added the rounding along the sides of the top/bottom:

Unfortunately, performance isn’t much better on my MacBook, so sort of stuck.

The tool movement which would be needed is simply a series of lines, but OpenSCAD won’t draw those so that they can be exported to a DXF. It wouldn’t be so bad if there was just a way to write numbers out to a file (other than the JSON used for customization).

File seems fine from a 3D modeling perspective:

Design into 3D_ (2.5 KB)

See further discussion on /r/rapcad and /r/openscad on Reddit (the OpenSCAD forums are down at the moment)

Unfortunately, there isn’t a way to use OpenSCAD to create a DXF ready for cutting with a radiused endmill such as:

Fortunately, just a straight line move is needed, so it ought to be workable to just define it as a square endmill, have it plunge and then make the cut and lift out.

We start by exporting the flat design:

(hopefully the radius of the endmill will reasonably match the radius of the cut)

then import the DXF:

Design into 3D_ Fingerjoint.dxf (29.7 KB)

Assign thickness to match the material (5mm), then a profile cut, then we have to define the radiusing tool.

Drawing up the tool reveals a tip diameter of 1.5875mm:

Defining a tool of that diameter we then have to work out the placement of the toolpath — working with a pair of circles of that diameter and drawing from center–center we arrive at:

where the open (magenta) line should be the cut we want made at a depth of the radius we want cut.

With suitable toolpaths, the preview seems fine:

1 Like

Except of course for the matter of how to open up the box — for hand-held boxes it’s fine to saw them in half to open them (if a bit nerve-wracking), for CNC, it’s easier to just design it into the file.

Rather than just a horizontal opening we’ll add some visual interest by making the lid open at an angle — since it would be jarring to have a horizontal cut along the front edge we’ll want to specify an angle where we can cut out a matching slope along the front edge (since we can’t flip the back over we’ll accept a straight edge there).

Next we have to draw up the tool and how deeply it will need to cut to make the desired angle and enter it.

Helps if we rotate at the correct angle. Seems the endmill is defined in terms of taper and not nominal angle:

Next, we re-rotate things for the sides and box.


In order to make a through cut so as to get the 3.6 degree angle we would need to cut an 0.98195mm wide design:

using a 10.6 degree V endmill:

Except of course the angle is only right for the cut from the inside at either the top or the bottom depending on if the piece is at the front or back so that the wrong pieces have to be cut as a second setup from the other side or left proud and filed off to the correct angle.

Working on directly getting G-Code out.

EDIT: wired up the gcode output part selection and fixed the top/bottom and improved the G-Code generation:

Design into 3D_ (2.3 KB)

which puts lines such as:

ECHO: "G0 X0 Y0 Z8"
ECHO: "G1 Z-3.175 F150"
ECHO: "G1 X0 Y4.20625 F600"
ECHO: "G0 Z8"
ECHO: "G0 X6.89856 Y0 Z8"
ECHO: "G1 Z-3.175 F150"
ECHO: "G1 X6.89856 Y4.20625 F600"
ECHO: "G0 Z8"

into the console which can be extracted with a command line option — now just need to get someone to afford a menu command to write out only a filtered version of the echoed text and customize the file extension and it’s good to go.

Following as this is very very interesting! Just downloaded OpenSCad to ty it also. :slight_smile:


FWIW, I’d suggest starting with BlockSCAD:

I tried to document this sort of workflow pretty thoroughly at:

and did put up a test cut in a different thread:

Hopefully I’ll get another top/bottom cut this evening and then put one together.