Introduction: Run Easel Gcode on (almost) Any CNC Router

About: Please see this Instructable they refused to list https://www.instructables.com/id/Hammer-Time-Arduino-Hammer-Pendulum-Clock/

I like Easel because it's the easiest way I know to convert an image into an engraving. But Easel is only compatible with GRBL machines such as Inventables' own X-Carve, and my CNC router runs on the RAMPS 1.4 board with Marlin firmware. I converted an Easel file to run on my modified version of Marlin, but I'll make the instructions as general as possible, because in theory it should be possible to use Easel - generated G-code on any CNC machine.

This Instructable does require you to mess around with the G-code a bit, but shouldn't require any actual coding knowledge.

You will need

  • A G-code file generated by Easel
  • A G-code file which runs on your CNC machine (generated by another program, such as LazyCam, Cam.py or SketchUCam)
  • A plain text editor: Notepad on Windows, and Editra on Mac, will work well.

2:59 Export G-code from Easel: In Easel, click on Machine->Advanced, click Generate G-code, then download the G-code.

3:18 Open both G-code files in a plain text editor.

4:31 Identify the 'header' and 'footer' of each file. These are the blocks of G-code before the first movement command, and after the last movement command. Those movement commands are usually something like G1 Z5.0000 in router G-code.

6:33 Copy the 'header' and 'footer' sections from the file which wasn't generated by Easel, and paste then in place of the 'header' and 'footer' in the Easel G-code.

7:25 Look at the file that wasn't generated by Easel. If it contains feedrate commands (if it has something like F456.78 on the end of each G0 / G1 line) - skip this step. If that file doesn't have feedrate commands, you need to remove those from the Easel G-code. Use the Find / Replace function in your plain text editor to replace them with empty space. That shouldn't take long because Easel usually only defines two different feedrates.

9:35 Check if the file that wasn't generated by Easel contains negative Z values. If it does have negative Z values, skip this step. If it doesn't, you'll need to replace all the negative Z values in the Easel file with Z0. Then use a G92 command in the header to set the depth of the engraving or cut. For example, G92 X0 Y0 Z1 will result in the machine cutting 1mm deep into the material in a single pass. This is fine if you're cutting shapes or engraving a flat image, but if you are cutting a 3D shape, this process won't work very well, because you'd have to change all the different Z values in the Easel file. Also, the Z values in the Easel file which weren't negative now define the Z safe travel height, so they should all be set to a value higher than the Z value in the G92 line. For example, if my file had G92 X0 Y0 Z1, I would choose a safe travel height of at least Z2.

13:03 Save the modified Easel file and load it in your favoured G-code sender. I use Pronterface on Mac, because it works well with Marlin.

13:27 You're ready to cut! Because I use Marlin with the G92 X0 Y0 Z(cut depth) command, I set the machine up with the router bit touching the surface of the workpiece, at the point that I want to treat as the origin (X0, Y0) of the cut.