CNC Projects

From Wiki

This page summarizes some projects I've done with my CNC machine.



When you get into CNC or 3D printing, you quickly realize that you spend much more time on software than hardware.

I use TurboCAD for drawings, save them in DXF format, and then generate G-code using my own CAM program (written in Python). Recently, I've started to use DraftSight, a free 2D CAD program from Soldworks that runs on Windows, Mac, and Linux.

I use Inkscape for non-mechanical things such as sign layouts. I make DXF files from Inkscape documents by converting them to PostScript, then using pstoedit to convert to DXF:

 inkscape --export-ps=/tmp/ --export-text-to-path {filename.svg}
 pstoedit -q -f dxf_s </tmp/ >{filename.dxf}

I found this much easier than the "export to DXF" option in Inkscape, mostly because I don't have to remember to convert the text paths to outlines (and I can save the file with the original text and edit it later).

Woodblock Printing

A CNC machine is a great way to cut woodblocks (woodcuts) for printing. With an engraving bit (e.g. 90-degree, 60-degree, etc.), it's easy to cut perfectly sharp inside corner detail.

Test cut
Letter detail
Sharp edge detail

The cutting strategy is:

  • Rough cut out the pocket. I just use the engraving bit here, because I don't care about the finish on the bottom of the pocket. On a machine with a bit changer, you could use a straight bit for a flat pocket bottom.
  • Cut the pocket edges, using the bit geometry to calculate an offset distance for a given cut depth.
  • Cut the Voronoi diagram edges to finish sharp inside corners.


3D Relief Carving

These pictures show 3D relief carving, using the image-to-gcode utility included with EMC2. This utility takes a greyscale image and converts it to toolpaths (gcode), using grey levels to represent height.

The machining is done with a raster-scan algorithm, which is algorithmically much easier to generate than other types of tool paths (2.5D or v-carved letters, below).

I made the image in Photoshop, by drawing some black text and then adding a Gaussian blur to soften the edges. My original image file is here.

I did this carving with a 1/4" ball head cutter, carved in two passes (rough and final) to 1/4" deep. It took about a half-hour to generate the gcode, and the full carving took almost an hour.

Carving in progress, starting the finish cut after a rough cut
Finished carving


CNC cut inlay and hole
Finished inlay

This inlay was cut with a spiral straight bit (1/8").

I made a CAD drawing for each cut: one with the shape (hole), and another with the shape mirrored (inlay). I used the same shape dimensions for both.

I CNC cut the inlay, and then cut off the excess wood with a bandsaw. I glued it into the hole (it fit perfectly), then cut off the excess and sanded it flush.

With straight bits, of course, shapes are limited by the bit radius: sharp corners aren't possible. But inlays and holes cut with a "v"-bit can have perfectly sharp corners.


CNC cut letter

This cut was done by calculating the Voronoi diagram of the "P" (shown in red on the printout), and then cutting along the Voronoi edges with an engraving but (a "v" bit).

The toolpaths for this are generated using my own (fledgling) CAM tool, written entirely in Python. It's a command-line tool that takes DXF models as input, and generates g-code (.NGC) files for output. I'm working on a Web-based version.

I've written my own code to generate Voronoi diagrams of points and segments (arcs should work, but aren't tested). Those diagrams are then used to generate offsets for traditional straight-bit cuts, or "v-carve" cuts using 60 and 90 degree engraving bits. With the Voronoi diagram, v-carve toolpaths are trivial: the toolpath is cut along the Voronoi edges (bisectors), with the bit depth determined by bit geometry.

The next two images show the toolpaths for this letter cut, and the original Voronoi diagram, respectively.

Toolpaths for v-carved letter
Voronoi diagram

Personal tools