Supports Engraving and V-Carving
Uses CXF and TTF fonts
Imports DXF and Bitmap images


Related Links


F-Engrave is a text or image to g-code program (for both engraving and v-carving) that is written in python and is based on the text engraving software (engrave-11) available in the LinuxCNCKnowledgeBase. The name F-Engrave is simply the predecessor programs name "engrave" with an "F" slapped on to indicate that the program can perform more formating functions like justification (left, right and center) and text on a circle. When I first released the program I had no idea I was going to add v-carving or DXF features so the name does not reflect any of those features. F-Engrave is a free open source program released under the GNU General Public License (GPL) Version 3. There is not much left of the original engrave-11 script but I needed a jumping off point. One of the things that remained intact for the most part is the CXF font reading. (although I tweaked it to accept a second variation of the CXF font format.)

F-Engrave Features

- V-carve for outline fonts, images and DXF files (DXF files and fonts should be composed of closed section loops when v-carving)
- V-Carve inlay support (see video below)
- B-Carving, v-carving with a ball nose bit instead of a v-bit (see image below)
- Straight bit pocketing (in the v-carve window) cut pockets using a straight bit.
- Imports DXF files
- Imports bitmap images (with Potrace helper program)
- Uses TTF font files (with the help of ttf2cxf_stream, not all formats are supported)
- Capable of exporting Scalable Vector Graphics (SVG) file
- Supports multiple lines of text with justification (Left, Right and Centered)
- Mirroring text (vertical) and flipping text (horizontal)
- Create text that follows an arc
- Origin selection allows user to select the location of g-code zero position
- Display line thickness to be used during engraving allows visualization of end result
- Use inches or mm as export units
- Customizable G-Code preamble and post-amble
- Usable as an LinuxCNC Axis filter program (open the f-engrave.py file from within LinuxCNC Axis File-Open-f-engrave.py. when you are finished with your text select File-Write To Axis and Exit, This option only existed when executed from within Axis)

Changes in Version 1.64

- Fixed bug that created erroneous lines in some circumstances during v-carving.
- Mapped save function to Control-S for easier g-code saving

Changes in Version 1.65

- Fixed bug in sort_for_v_carve that resulted in an error for certain designs.

Changes in Version 1.66

- Fixed a problem with the origin when wrapping text in some cases.
- Decreased number of updates while doing computations which increases overall calculation speed.
- Fixed problem that can cause the program to freeze if the saved settings contain errors.

Changes in Version 1.67

- Improved DXF import for DXF files with some incomplete data.
- Fixed curve fitting upon g-code export. Limited curve fitting angle to avoid curve fitting things that should not be curve fit.

Changes in Version 1.68

- Fixed typo in code introduced in v1.67 that broke curve fitting.

Changes in Version 1.69

- A couple of minor fixes to keep things working in Python 3.x
- Added ability to disable plotting of v-carve tool path and area
- Fixed problem causing v-carve path to go outside of design bounds for very thin design sections.

Changes in Version 1.70

- Fixed a bug introduced in V1.69 that caused v-carving cleanup calculations to fail sometimes.

Changes in Version 1.71

- Changed Potrace version that is distributed with F-Engrave from 1.10 to 1.16
- Fixed problem with cleanup cutting wrong area for some cases

Changes in Version 1.72

- Fixed a bug that resulted in bad cleanup tool paths in some situations
- Explicitly set the font for the GUI

Changes in Version 1.73

- Made importing png images with clear backgrounds work better (works with PNG exports from Inkscape)
- Added PNG and TIF to the image file types that show up by default

For the full history look at the
F-Engrave Change Log


(Right click on the link and select "Save target as" or "Save link as")
Source Code Files
(zip file)
Windows Executable Files
(zip file)
For Mac please see: Packaging of F-Engrave as an OSX Application

If the windows executable does not work right away install the
“Microsoft Visual C++ 2008 Redistributable Package (x86)”. The program I use to create the Windows executables (py2exe) has a dependency to this package.


F-Engrave Setup

F-Engrave V-Carving Tutorial (BMP File Used in Tutorial: Polski_Crest.bmp)

F-Engrave Reference Manual
 K40 Whisperer Manual
(Also available in French thanks to Dirty Marmotte: French Manual)

F-Engrave V-Carve Algebra/Geometry Details

The video embedded below shows the process to make a v-carve inlay using a bitmap file with F-Engrave.


F-Engrave can generate tool paths for v-carving. I posted algebra behind the geometric calculations here:Algebra/Geometry.

V-Carve Pic
Sample v-carve generated using F-Engrave. See the Video

F-Engrave can also generate tool paths for b-carving. What is b-carving? B-carving is analogous to v-carving only the bit used in b-carving is a round nose (ball nose) cutter.

B-Carve Pic
Sample b-carve generated using F-Engrave (pictured with the round nose bit used to cut the letters.)

Mayan/Aztec Pattern pic Tribal Pattern pic
V-carvings made with F-Engrave.

kaitlyn pic
V-carve inlay made with F-Engrave.


- Déjà vu detection (Try not to carve the same place twice)
- More Documentation

Related Links

Utility that converts True Type font (TTF) files into CXF format:
TTF2CXF (Ribbonsoft) (To compile on Ubuntu I had to add "-lm" in the Makefile and "#include <math.h>" in the main.cpp file.)
F-Engrave uses a modified version of TTF2CXF (called TTF2CXF_STREAM) to import TTF fonts on the fly. The source for TTF2CXF_STREAM is available in the F-Engrave source code zip file.
Font File Links:
Hershey Fonts (CXF) (Stick and Outline Fonts) [zip file] [individual cxf files]
CamBam Fonts (TTF) (Stick Fonts, Each line is cut twice for this font set.)
Liberation Fonts (TTF) (Outline Fonts)

Other Text to G-Code Programs:
Engrave-11 (LinuxCNC)
Hershey Text: An Inkscape extension (Evil Mad Scientist)
DeskEngrave (DeskCNC)
StickFont (NCPlot)
DeskEngrave (DesKAM)
PyCAM (PyCAM can do centering and multiple lines of text.)

Another Approach to V-carving:
My method for determining the tool paths for v-carving are detailed in the link above. Another method involves calculating Voronoi diagrams or Voronoi nodes. Here are a couple of links to other peoples work.
Calculating Voronoi Nodes and CNC Projects (Andy Payne)
OpenVoronoi (Anders Wallin)

Scorch Works Home
Scorch Works Home
Scorch Works Blog
@scorchworks On Twitter