Introduction: CNC Router V-Carving With All Open Source Software

About: Chip's Wood Shop is all about rewarding and enjoyable woodworking projects and ''use what you have''solutions to make all kinds of fun and useful things. We are a participant in the Amazon Services LLC Associ…

When you use a V-shaped router bit to engrave, it's called “v-carving”. The bit can cut horizontally to trace the outlines of shapes. By drawing the bit up and out as it moves horizontally along the surface, you can also make sharp points. This instructable presents a set of open source tools you can use for CNC programming, simulation and control of v-carving. I use Linux for all of these but many of them are available for Windows as well.

Watch the video linked above for a quick overview, then see the step-by-step instructions that follow below.

Before you start, be aware of woodworking and power tool safety.




You can use the same computer for both CNC control and programming, but I have a separate old P4 32 bit computer that was collecting dust, which is now dedicated to controlling the CNC router. I run Ubuntu Linux on a 64-bit refurbished PC using the CAELinux distribution, which comes loaded with some great engineering tools. It can be downloaded as a bootable DVD image.

Step 1: Download F-Engrave

The first thing that you need to do for engraving is to define the image you want to engrave. In this example we're going to engrave a sign with some words using a serif font in a great open source program called F-engrave.

Download the latest version of F-Engrave here.

The author of F-Engrave has published great installation instructions: (click here).

There are executables for Windows users. If you use Linux like I do, the instructions are easy to follow.

Step 2: Install F-Engrave

I downloaded version 1.65, but if you download a more recent version, put your new version number wherever you see "1.65" in these instructions. After I put my F-Engrave-1.65_src files in a folder called "/home/chip/F-Engrave-1.65_src/" (because my user name is "chip"). To run F-engrave, you just type "python" in the terminal window. I made a desktop shortcut to run the command "python /home/chip/F-Engrave-1.65_src/".

Step 3: Setup F-Engrave

I recommend installing the "ttf2cxf_stream" and "Potrace" applications described on the F-Engrave setup instructions, too. These let you use truetype fonts and bitmap images to create toolpaths.

Step 4: Download Font

Google Fonts provides us with a great library of fonts of all kinds. I like the look of this one called PlayFair, so I download it.

Step 5: Install Font

On my machine, the path to my truetype fonts is "/usr/share/fonts/truetype". This requires super user rights to add files, so go there and open a terminal window and type:

$ sudo mkdir PlayfairDisplay

[enter password]

$ cd PlayfairDisplay

$ sudo mv ~/Downloads/PlayfairDisplay/*.* .

Replacing the path with the location where you saved your font files.

Step 6: Run F-Engrave

Run F-Engrave from the shortcut or type "python" in the terminal window.

I go to the “settings” menu, and pick “general”. I switch to mm for my metric friends and choose my new PlayFair font family.

Step 7: Enter and Format Text

Now I can choose a font from this family and see how it looks by typing in my text. I want my text centered and 25 mm tall. I can also adjust things like horizontal and vertical spacing and set the origin to the lower-left, or wherever I like. I want to use v-carving to make the sharp points at the ends of the letters, or serifs, so I switch “engrave” to “v-carve”.

Step 8: Calculate V-Carve Toolpath

Next, I go to the “settings” menu, and pick “v-carve”. My v-bit is 90 degrees. There are many other settings here that are very well-documented on the F-engrave web site, but I'm happy with the defaults for this sign. Now I calculate the v-carve toolpath and click the check box to display the carved area as the path is calculated. Don't forget to set your feed rate, but if you do, you can edit the g-code later. Save the g-code where you like and you're done with F-engrave.

Step 9:

Now, like in my last Open-Source CNC instructable, I use CAMotics to simulate the path and make sure it looks good to me. I open my g-code file and define the tool as a v-bit. I run the simulation and spin the result around and make sure it looks right.

Step 10: Run CNC

Now I’m off to the CNC with my g-code file. I run my home-made CNC router with LinuxCNC. I load my g-code and check the min, max and total range of x and y values on the display. I recommend you give your sign a coat of polyurethane prior to carving, which will seal the surface and act like a mask so you can stain or paint the letters with a contrasting color later. I touch-off x and y in the lower left corner where I want my text. I touch-off z at the surface. I use a sheet of paper under the bit to feel when it grabs to zero the z axis. Now I crank up my router and go!

Step 11: Finish the Sign

Since I started with a coat of polyurethane, it's easy to add stain of contrasting color. After I get the color into the letters, I wipe uniformly over the whole surface, the let it dry according to the manufacturer's directions.

Step 12: P.S.

If you like this style of step-by-step instruction, please share with others and subscribe, so you'll be notified when I post more. If you have questions, please post them in the comments. I will try to answer and probably update the instructions, too. Read about more of my woodworking projects and tools at