Engraving Tool
Current Tools


Shop Tour

Other Interests

 Hand Engraving Simulation CNC

Tool Path GCode


Arrow Pro



Hand Engraving Simulation CNC Machine  
by Steve J. Lindsay

This software creates GCode for operating a computer controlled machine to run a traditional palm push type graver point in order to simulate hand engraving.  There are also additional helpful functions for generating spiral scrolls and manipulating a group of shading cuts. 

This program is freeware. The code is open AutoLisp.
If you would like to improve or add additional functions, you are free to do so as long as the modified code is made available through the internet for free.  The code with notes for version 15e can be found at
this page link

Frequently ask Question:  What exactly doe this software do? 
This is an AutoLisp program to create GCode to run a converted mill to simulate hand engraving.  The process goes like this: Draw a design in Autocad in polylines and vary the widths of the lines from point to point with lead in and out taper lines as needed for the design.  Next, start the AutoLisp program and select the polylines that make up the drawing. It asks a series of questions, creates the GCode and writes it to a file.  It computes how deep the z axis needs to be for the V width graver being used from one point to the next.  It also figures out which way it is cutting, so that the graver is always pointing forward.  View these videos of the end result.  The hiss in the videos is an air hose blowing the chips away.

Video1 Video2
The overall machine can be seen in this video.  It is a modified MaxNC mill, however any CNC mill would
work if the spindle can be programmable indexed.


Caution: CNC machines are dangerous to equipment and can cause injury or death to an operator.  If you are not familiar with programming a CNC then please educate yourself before attempting to use gcode that this program generates on a machine tool.  There is no warranty of any kind for this GCode creating software or the machine that someone controls or tries to control with it.

The program is written in AutoLisp and runs in the AutoCad environment.  The latest version (15c) was completed Sept 17 2003 and was written for AutoCad 2004. The first version of the program was written in 2000 which had evolved from a 1998 version of ToolPath Gcode that I was selling on the internet at that time. 

Version 10c - Command is "engrave".
Version 15e - Commands are "engrave" and "cutwidth".  Version 15e includes the gcode arc commands G02 and G03.  Version 15e also has an additional function called "cutwidth" that will modify and tweak a group of shading cuts all at once for a bit of artistic control in drawing.  The "cutwidth" function is used while drawing the engraving design to change the taper of cut.  The function does this by adjusting the amount of taper bulge of the cuts and where in the lines the taper or bulge is more pronounced. 
 Notes jotted down that may be helpful.  They were written while working on a project with this cnc engraving machine. 
 Commands are "scroll" and "wave". This is a fun little program that is for drawing perfect scrolls.  The wave function is for making them wavy. 

General instructions... 
Download the above LSP files by right clicking on them and from the popup select "Save Link As".  Save the file on your harddisk where you can find it.  To load the program: In Autocad click on "Tools" "Load Application" and find on your harddrive and select either the file LSP program desired and click "load".   Now draw your tool path in polylines and adjust the widths and the amount of taper of each line using the AutoCad command "pedit".  Or use the "cutwidth" function that is in Engraver15e.LSP program.  To start the program at the AutoCad command type in "engrave" without the quotes.  The program will ask a series of questions to generate the Gcode. 

Engraver10c.LSP:  The "arc" option within the AutoCad pline drawing function can be used to draw smooth flowing lines.  Engraver15e.LSP will divide the arcs up into the segment spacing you tell it and in the gcode file use G01 to go from point to point.  On the other hand when Engraver15e.LSP finds these arcs it will use the gcode arc commands G02 and G03 in the generated gcode file.  This will make the gcode file size considerably smaller as well as the arcs as smooth as your cnc machine is capable of.  

The program will allow the selection of as many engraving cuts at once as desired, however be aware that the order they will be cut will either be the order in which they were drawn or the order in which they were selected during the selection process.  Therefore, if you wish the machine to engrave one area of cuts before another area, select them in the order you would like one by one or by several smaller groups, group by group. 

The X,Y position 0,0 in your drawing will be 0,0 in the generated gcode file. Therefore, move your entire drawing as needed so that 0,0 is where you would like it. 

Modifying the LSP code.  The LSP code is an open source and can be read and edited with a text editor program such as notepad.   There are notes throughout the code that explain what each line of code is doing.  The code and notes can be viewed on the web at this page link.

If the cutter is ground right there isn't a bur. Be careful before starting the machine and have the face of the cutter orientated in direction that the software thinks it is pointed or it will be dragging the cutter backwards rather than cutting forward.  Instead of grinding your own cutter a the corner of carbide insert will also work. 

In the videos note that the MaxNC machine is engraving on a round object and since the MaxNC only has 4 axis, I locked the table on the Y axis and moved that motor over for rotating the part by recalibrating the steps for it to the circumference of the part being engraved. In the software it is still called Y, so it thinks it is moving linear.   The 'A' axis that would normally be a rotary axis is on the spindle to keep the graver pointed in the correct direction.  When engraving on a flat surface leave the X, Y and Z of your mill and make the spindle axis A. 

I used this machine for a short time in 2000 and then again in 2003 to engrave flute barrels for Brannen Brothers, however I decided it easier and less stressful to to engrave them by hand rather than using the machine.

These are actual pictures of the engraving it did on one of the flute barrels. The pictures were taken through a microscope.


In the above engraving the angle of the V point cutter was 108 degrees. The cutter is similar to making a common D cutter but with a 20 degree rake. 

Below is an image from the AutoCad drawing that was used for the text of the flute barrels.  I have selected a few of the cuts so that they would be highlighted. Because the cuts overlap, it is hard to see each cut without selecting it.  The serial numbers 0 through 9 were saved as blocks and would generate new gcode four digit serial numbers as needed.   Notice how each cut has a  lead in and a lead out of at least one segment.  Be sure to do this or the machine will dive straight down at the start of a cut and pick straight up at the end of the cut which would make a bur at both ends.  In the selection of the lettering for this engraving I selected all the cuts that make up one letter and then the next letter in the order I wanted them engraved. 

Prompts that the command "engrave" in Engraver15e.LSP requests:

Command: engrave
(type "engrave" at the command prompt to start the program)
Select objects: 254 found
(select your engraving design)
Select objects:
"hit return"
Create a New Gcode file or Append an existing one? ('N' 'A') n
Would you like to use 400 degrees for a circle? (Y or N) n 
(read the notes in the lisp file what this is for.  If you do not need it type "n". )
Enter a polyline width that represents a Z depth of -.005 (enter positive number): .010 
( needed to decide how wide of line it will engrave if it takes the V cutter you are using .005" deep. Requires some trig on your part.) 
Do you want to use G02 and G03 on arcs? (Y or N) y
Enter a Z height for rapiding between cuts: .02
Would you like to unwind the hose to the AirGraver between cuts (Y or N) n
(if using a light machine such as the MaxNC and you would like to engrave deeper than what the machine can handle then an AirGraver attached to the graver will help drive the cutter  though metal.  This function unwinds the AirGraver hose after each cut so that it does not get wrapped up in the spindle.)
Would you like the x y positioned to zero and the spindle raised to .2 (Y or N) y
 (program ends)

Prompts that the command "cutwidth" in Engraver15e.LSP requests:
Command: cutwidth (type "cutwidth" at the command prompt to start the program)
Select objects: Specify opposite corner: 54 found 
(select your engraving design)
Select objects:
"hit return"
Widest width of lines, miNimum width, Location of width, Inc width, Modified
width, Quit: n
Enter a new minimum width for plines: click dist or enter valve <0.0000>: 0
 (enter the minimum width of line for all the polylines, the current is displayed)
Widest width of lines, miNimum width, Location of width, Inc width, Modified
width, Quit: w
Enter a new max width for plines: click dist or enter valve <0.0060>: .01
 (enter the minimum width of line for all the polylines, the current is displayed)
Widest width of lines, miNimum width, Location of width, Inc width, Modified
width, Quit: l
Enter a length percent of the line that is to be the widest place <50>: 65 
(enter where on the lines you would like the widest part to be)
Widest width of lines, miNimum width, Location of width, Inc width, Modified
width, Quit: i
Enter a increment to vary the width from line to line ie. .001 .0005 <0.0000>: 
(this is the increment from one segment to the next)
Widest width of lines, miNimum width, Location of width, Inc width, Modified
width, Quit: q
(quit the program)
(program ends)

Prompts that the command "scroll" in Scroll.LSP requests:
Command: scroll  (type "scroll" at the command prompt to start the program)
Center point:
 (click a place on the screen for the center of the scroll)
Number of rotations: 2 
(how many turns to the scroll)
Growth distance per rotation: Specify second point: 
(Either type in a distance or click two places on the screen, I clicked two places for this example)
Points per rotation <30>:  (how many points or segments do you want it to draw to make up the scroll (the more points, the more smooth the scroll))
Length percent increase per point <0>: 3 
(How much you want the spirals to increase in size each revolution.  I typed 3% for this example)
Would you like it to also spiral in the Z for 3D? yn: n 
(it can spiral up into the 3rd dimension if you would like to make a 3d spiral)
(program ends)
Below is the resulting scroll the program drew. 

I have selected the scroll in the next image.  You can see the 30 segments per revolution selected. 

Note: I just tried the command "wave" in the scroll.lsp file and selecting the above scroll.  It is coming up with an error.  I believe I messed with the scroll.lsp file several years ago.  I was trying to get it to draw in polyline arcs rather than straight segments.   It should be an easy fix.  Feel free to experiment with it yourself.  I can check it out later when I get time and see if I can get it going.  What wave does is use the bulge factor in the polyline segments to make them wave back and forth from a negative value to a positive value.   Here is a link to the Scroll.LSP file.


The code with notes for Engarver15e can be found at this page link

Another CNC GCode program: "Tool Path GCode".