[request for feedback] Gcode sending through easel

Continuing the discussion from Easel as a Gcode sender:

Hi Everyone,

We are interested in gathering more information about how a “G-code Import” feature would need to work in Easel. The following is a potential list of requirements. We’re looking for help from the people on the forum to flesh this list out based on their requirements for how they’d need to import and run g-code in Easel.

G-code verification
There are a lot of ways g-code can be generated from a lot of different programs. Some g-code may not be compatible with the controllers that Easel supports, so Easel will need need to do some analysis/checking of the code before running it.

G-code Generation
What programs do you use to Edit g-code?

G-code Editing
Does Easel need to let you edit your g-code?

Does Easel need to help you home your machine when importing g-code?

Should Easel walk you through turning on and raising your spindle? Will these commands already be in the g-code you are importing?


currently i’m using Fusion 360 for my complex 3D parts alloing me to create detailed tool paths and types of tool paths.
i use notepad to edit the gcode adding in Z raise at the beginning of the file.
All of my parts start at the beginning of the material so homing isn’t really an issue however i’m super interested in setting the Z 0 using a probe.
as for the spindle the raise and start are embedded already in the Gcode.

hope this helps.

I am planning on upgrading my x-carve controller to Linux CNC due to the additional features it provides such as true limit switch support and probe support.
additional hardware is required.

Easel will not work with linux CNC because it only communicates with Grbl based machines.

One of my main concerns about sending gcode is exactly this type of thing, there is ambiguity in where the gcode file “starts”.

1 Like

my biggest reason for even bring LinuxCNC into the conversation is the features it allows for out of the box. probe, limit switches etc. i know you guys are working on those and thats great, and important. but generating parts and gcode in fustion or other applications gives me more controle on complex projects.
I DO USE EASEL: for my more basic txt or svg signs or carvings. it works great for the more basic stuff and i really enjoy it in that i dont have to do anything complex just click and go. thumbs way up.

here is the start of one of my files generated in fusion with my custom Shapoko.CPS post process file which basicaly just adds a Z raise to 0.5in before the spindle starts and the first move happens

(T1 D=0.125 CR=0 - ZMIN=-0.2281 - flat end mill)
G90 G94
G0 Z0.5 <------------------------------------------------------------------------ Z raise

(2D Adaptive1)
T1 M6
M3 S18000
G0 X0.57 Y0.5892
G1 Z0.1201 F20
G3 X0.5074 Y0.4883 Z0.1136 I-0.0313 J-0.0505

I’m using Vectric Cut2D to generate my toolpaths and GCode. Cut2D can output GCode to a lot of different machine formats.

Editing GCode is not as important for me, but sometimes it’s nice to specify the material size larger than the drawing shows. This helps better represent where the milling will take place of the material when you can size it just as it is in the machine. I find this useful for things like milling connector holes. I can create a drawing for the connector, export to DXF and then drop that into Cut2D. The DXF will only show the “material” as slightly larger than the milling it’self. When in reality, I could be milling this hole in a panel that is 24"x24". I can either go back and change the DXF drawing to reflect this panel size or just change the material size in Cut2D. When I import that toolpath file into Mach3, Mach3 automatically displays it with the proper panel size, not the original DXF “material” size.

For homing, I would like to see a machine coordinates vs. job coordinates panel. Basically I want a way to display and calibrate my spindle to the machine coordinates, but then zero the spindle to any place on the object being cut for the job. I typically work with center origin drawings and prefer to 0,0 my X,Y to the center of the piece. This is only doable if I can tell the machine that I want to regen the spindle to this origin. Having said that, the limit switches are nice to determine the work area automatically, but to properly do it, we really need homing switches on both sides of each axis, to determine the full X,Y,Z travel of the machine. Run the axises each direction, one at a time to determine this.

1 Like

As a newbie I think Easel needs to remain easy to use regardless of add on features.

So if you allowed GCode import/sending, I would really like to see it do the right thing, e.g. Walk through job startup and zeroing as normal.

E.g. If I produce a job in F-Engrave (insert any other GCode producing tool here) then import into Easel, I’d still want the 2D and 3D view and control as normal and the Carve button to behave as normal.

If that isn’t possible then the fallback must be simply using Easel as an UGS with some handholding.

Tough one, good luck.




Code Verification
Short answer: Yes
Long answer boils down to: that’s a tricky one

G-code Generation
Aspire (V-Carve Pro), MeshCAM, Fusion 360, are the main ones I use for generating G-code

G-code Editing
Maybe, but not if it is doing the other stuff like homing, zeroing, raise bit and start spindle. This is the only reason I would edit the file, is to check inches or millimeters, and insert the same code that Easel uses to raise the bit and turn on the spindle.

Yes, please.

Yes, please.
Sometimes these commands are ther but usually I have to manually add them.

My two cents
I’m with @IanWatkins on this one. I love that this might be coming down the pipe, and am sure that Inventables will do a great job implementing it, but if any of these features get in the way of ease of use, then my vote is to err on the side of simple “it just works” compared to adding complexity that stands in the way of the new person just starting out. Easel’s current simplicity and walk through style, is definitely what is helping people get interested in CNC. I would even say that Easel and it’s simplicity is leading the charge for many new makers.


you could incorporate a detection system, that detects the type of G code used and controls the machine accordingly. Or offer a drop down list of types? Or just make it absolutely clear what type we need

I use cambam currently

Yes, editing would be amazing, when doing 2 stage cuts I have to manually add a G0 X0 Y0 Z0 before the m30 command to go back to home. If I don’t then the home is reset after the cut.

Yes, homing is one of the things I can’t currently do on my machine and would love.

The spindle isn’t as important, but would be a cool feature

any further discussion on this? If i know it’s gonna happen I’ll get excited :smiley: It will be nice to use my xcarve properly. Currently UGS cuts a perfect circle in the middle of all my designs, returns to zero whenever you click a button and the homing doesn’t work.

I’ve been experimenting with different 3rd party cam systems to try to get a handle on how it would work. I’ll update this probably later this week with some findings / plan.

1 Like

If you need some help feel free to contact me anytime, I’ve tried most of the UGS versions to find the most compatible


Excited to see the ball rolling with this :thumbsup: :thumbsup: :thumbsup:

To start: The forums are a great place to look for this info. It seems like most people just use simple (and more precisely free) 2D g-code generators. Although i only looked through the x-carve and carvey forums, most of the people interested in an improved gcode sender see 3D capabilities as the biggest advantage of using UGS.

With this in mind, I would first concentrate on making/perfecting a post processor for the most popular 3D gcode generators. Autodesk has a huge user base since it’s designed for both modeling and CAM. It uses the same code generator as Inventor HSM, it’s cross platform (Mac and PC), and it’s free for all students (myself), start-ups (like inventables) as well as hobbyists (A good majority of X-carve and carvey users).

Features: As far as editing, goes it’s a big NO.

I completely agree with most of the people on the topic. Ease of use is the absolute best part of Easel. I would call it easel’s “Power Feature”. The sense of reliability for the user (ranging from the beginner to the expert) is most likely the reason why anyone is fed up with UGS and is looking/praying for an alternative. Giving the user a chance to ■■■■ something up in easel would undeniably diminish that sense of reliability.

Similar to the way easel works now, there should be a visualization of the motions being applied to the workpiece. UGS does it, but once again some times it works and other times it doesn’t. If I had a CLEAR visual indication that something is not going to go right, i would stop immediately and re-assess. This goes hand in hand with gcode verification.

If by “homing” you mean setting grbl’s coordinate systems properly, yes.
I would personally like it work in a similar way easel does atm. hit carve, set 0,0,0 , verify bit size, lift spindle an go.

If not, then i’m sure there are many people interested in monitoring their machine while it does a homing cycle, but i think homing is already pretty straight forward if you have limit switches.

@paulkaplan I suggest you try out using the x-carve or carvey with UGS. If you dont have the time, ask around inventables. i’m sure some one will tell you what they hate about the java app. Concentrate on all the bad things there, find solutions and apply them to easel. You hit the nail on the head with “homing” and gcode verification… not so sure about spindle control. the people who would use UGS, and have spindle control through gcode would know that they must include that M3 command. If easel notices there is no M3 (start) AND Z+ (lift) AND a M5 (stop), make a pop-up which allows you continue with manual spindle control, or cancel operations allowing user to fix the mistake.
It’s hard to give a straight up yes or no answer to having control over your machine.

I hope i gave some good suggestions. In the end, i am not tooooo picky, and i would be utterly content to know there is a simple alternative to UGS or chillipeppr.

Thanks in advance and apologies for any topic where i did not elaborate properly,

p.s carbide motion’s sender for Shapeoko 3 looks pretty good. there would be something to learn there for sure.

edit: another thing that is great about easel and goes completely un-noticed is the materials library.
I pretty often refer to it when picking feeds and speeds on my cam programs. It is a good base conception for what the inventables machines can handle. Having never milled anything but steel in my professional career i was completely lost when i started working with woods and DIY built CNCs. Easel really helped to pinpoint the capabilities of my x-carve. I hope with an interest in advanced usage easel can also support a library for such information.

I completely agree. I mean i’m going as far as learning basic Java to modify UGS to be more compatible with the X carve. It just doesn’t have the features Easel does, it’s ONLY benefit is the fact that I can load up projects from whatever CAM software I choose, unlike easel. I love the way Easel works, but designing complicated parts in it is just something it’s not made to do. Unfortunately, that’s what I want to do :slight_smile:

Just to add some more thoughts here.

How about a built in processor/editor? You could then create a job in Easel, then edit/process/macro the GCode just before it gets sent.

This way you could do stuff like edit the GCode to search and replace the Z moves up and down with spindle on/off commands when using a laser. Or add codes that could trigger dust collection etc.

I’m currently creating jobs in Easel, exporting the GCode, editing in a text editor then having to use Chillipepr to send it. If I could do it all in Easel it would be a great help.



Hi Jason,

What do you mean by “regen the spindle to this origin?” Does this mean moving the spindle to the specified origin? Or are you referring to regenerating the g-code based on a different origin point than it was generated with? Or do you mean something else?


Hi Jamie,

Why does it cut a perfect circle? What doesn’t work as far as homing?

Why does home get reset? Wouldn’t you be able to issue a “G0 X0 YO ZO” or click “return to 0” button in UGS?


Nevermind. I answered my own question. It looks like grbl does a soft reset when it receives an M30. Makes sense why you’d need to return home before that for a 2-stage job.

I would probably continue to use UGS even it Easel was able to send G-code.


Old post. I upgraded to 1.08 UGS and finally have access to homing and zeroing the machine :slight_smile:

I’ve used a couple of G-code senders for 3D printers, but haven’t been able to get UGS to cooperate on my Mac yet. So these comments are based on my 3D printing experience…

  • no need to edit, but a visualization would be helpful, and a way to specify per-machine “header and footer” g-code that would be run every time for that specific machine would be great (many 3D peeps have a few machines, not necessarily all operative)
  • visualizing where the job is at would be helpful, plus current x y z positions
  • I like Easel’s step-you-through so a way to step through the setup would be nice. As a result, the setup might not need a g-code header as much as a bunch of questions to step through the homing.
  • jog dials and a way to “remember” the current position will help multi-file runs especially when you zero over something that gets removed :smile: - I may need to raise the bit a few inches to change it, or move things away to flip a piece of material over.
  • ditto an easy way to stop and start the spindle when pausing.
  • you’ll probably need a way to automatically identify the pre- and post-cut commands in a file and ask the user if they want to run them or skip them (or give them a machine setup to cover some of that)
  • some kind of history of runs, and notes that you can add, would be handy, plus a way to save each g-code file and add notes.

The best piece of software I’ve used for running g-code on a 3D printer was Octoprint, nice especially that you could run it on a Raspberry Pi and access it from your browser over the network. Put something like that in your new controller, and you’ll have an awesome product.