The things an engineer wants from Easel

Good day, I’ve had my X-carve running for exactly a week now, and I’ve tried sticking to Easel for everything I do. The good news is that it’s doable, the bad news is that there is still a lot left to be desired. Instead of burying my commentary or not documenting it at all, I’d like to use this topic to just list all the things I’ve come across that I’d like different from an engineering perspective. I don’t personally care about the arts&crafts stuff, other people can address that side.

1. We really, really need a measurement-driven file input, preferably dxf. Whenever toolpath generation gets improved to do full 3D, IGES and/or STEP input would be nice too. If you’re really struggling with those interchange formats, STL is an easy place to start as it’s already got loads of open source meshing programs that you can just pop into Easel without any work on your side.
2. There needs to be an indication of the current tool position during milling.. Especially z-depth would be incredibly useful.
3. There should be a preview of the complete toolpath or if that’s too hard just a place to preview the g-codes you expect to send. Lots of open source g-code visualizers to choose from and just pop into easel, should be pretty easy. Provides a wealth of information on what the thing is supposed to do. Eliminates surprises.
4. Coolant and fan controls. Very simple addition; just add support for the g-codes to turn on coolant and fan.
5. Toolpath generation is kind of dumb. Toolpaths just seem to go in order of the shape that was first added up to the last added shape. This leads to funny situations where the toolpath starts routing out the part, and THEN starts doing all the inside cuts. That is disastrous for a part that would only be clamped on the outside, e.g. in a vise or screw bed. My very first cut had this issue, I’m glad I taped it down:

6. Would be incredibly useful to be able to export SVGs from Easel. Not in the least to be able to interpret what Easel thinks is correct syntax.
7. It would be even usefuller to be able to import other projects into the current project. Right now, it’s pretty hard to impossible to combine multiple projects into one panel.
8. It would be roughly as useful to be able to save as another project during editing, automatically making a copy. For instance, I’ve now done two projects that were longer than my x-carve could make, so I needed to import a drawing, resize it because easel doesn’t correctly interpret millimeters, move it around, cut out the stuff that doesn’t fit, mill it, move the workpiece down 300mm, start a new drawing, do the negative coordinate movement hack, cut out the stuff it can’t mill, do another milling. It would be so much nicer to just export parts or entire projects into a new file, half of this work would not need to happen.
9. Copying things over multiple times to make multiples of your current project should be a g-code export option, NOT a part of the project drawing. It sucks to copy stuff, realize something needs changing and having to change every single copy of your object instead of this just being automated.
10. Would be nice to have a proportional resize checkbox.

1. Can’t enter negative coordinates for shape or part placement in Easel. In order to shift an element or group of elements left or down, I have to put another element at the desired inverted location (e.g. if I want to shift the group to the bottom-left by 100x100mm, I need to put an element at x=100 and y=100) and then move the new top-right corner to coords 0,0 to get the whole thing shifted. So clearly Easel supports negative coordinates, it just doesn’t allow negative number entry.
2. I can’t get easel to step-down more than 0.1mm when choosing the material Aluminium. It can go as fast as I want, but I can’t take deeper cuts. This means Easel is useless to me once I switch to a heavier spindle, which I will.
3. Easel doesn’t accept groups or combinations of paths with coincident endpoints as single objects. If I have an SVG path composed of individual lines with the end with the ends of the lines coincident with each other, e.g. a box composed of 4 individual lines, Easel will not interpret this as a shape but instead as 4 individual lines. This means that inside, outside or filled cuts do not work, only on-line cuts. Easel should just do what every other SVG interpreter does and interpret coincident line endpoints in a single path declaration as a continuation of a path. This alone would save a lot of hassle converting files from dxf to svg.
4. Easel does not correctly apply the declared document units from SVG. If I make a drawing in inkscape that is 100x100mm in size and declare both drawing and document scales to be in mm, it still scales the drawing down to some strange small size in Easel, even though the only unit in the entire svg file is mm, there is nothing else to conclude than that all the coordinates are in mm.
5. The percent complete bar is calculated incorrectly. It uses the remaining number of line segments, not the remaining carving length to gauge completion time. This leads to the hilarious situation that carving out a really big box shape and two tiny holes shows 3% completion after milling out the big box for an hour, then it shoots up in 10% increments as it mills the holes.

This is all of the stuff I documented as I went along in the last week or so. My mill has now done about 36 hours of milling, all aluminum except for a single MDF try. I’m very impressed by the plug&play nature of the whole package. As much as I find Easel to be a very incomplete CAM package that needs serious work to get taken seriously in light of an almost 100 year old industry, it does what it says on the tin. It works, I’ve never had it crash outside of my own fault, I’ve never had wrong g-code generated, it works fine with my custom GRBL board. This is the first time (after owning 3 3D printers and helping with 3 bigger mach3 mills in the past) I was able to buy a machine, put it together in a few hours and start milling what I had prepared before. Truly excellent out of box experience. It is certainly a machine and toolchain that is 100% usable for engineering purposes.

So I’d love to contribute to this at least by documenting stuff I do and problems I find. I hope this is useful to you.


Thank you so much for the detailed feedback. This is the type of feedback that makes Easel better. I’m going to go through each point here and write a more detailed response. Just wanted to let you know that I read it (in fact, we sent it around to the whole company) and really appreciate that you took the time.

I’ve got follow up questions and stuff, but I want to collect it into a full response so that none of your points get lost in a spitfire of questions.


I’ll be using my workflow quite heavily in the coming weeks (as I’ve got a lot of projects lined up from before I had my own milling machine) so I’m more than happy to follow up on stuff with practical examples if you want. I’m invested in this machine for at least a year or two, so I’m more than happy to contribute if it makes my life better as well.

All great points.

Point #-8…Does the file–> save a copy. Not work for you? While editing you can make your copy. Then edit them differently.

Kinda… it’s not really how it should work though. In practice, it’s clunky in how you’d want iterative design to work.

With all my other work - mostly designing PCBs, writing firmware/software and designing mechanical stuff - I work in a classical version-revision system. I start with a trunk design. When I’m happy with that, I freeze the file and build the design (e.g. MyDesign - version 0 revision 0). I might revise it a couple of times while staying with the same version as I refine the project (–>MyDesign - version 0 revision 4). When I want the same functional design but decide to do something differently, I spin off a new version which starts at revision 0 again (MyDesign - version 1 revision 0). In a complex project, this creates a tree with lots of branches.

The way to do this in any computer-based system is, when you want to spin off a new version, to just start working in your old version, saying ‘save as…’, choosing a new filename with the new version or revision number and just continue working in the file. Pretty much every program in the world supports this, so this makes for a very universal way to organize my stuff. I like to use systems that every program supports, because I tend to hop around a lot of different workflows and really can’t ever use a specific organization or versioning system for long enough to get used to it and get to know all its quirks. I have to rely on general computer knowledge.

Easel obviously doesn’t work with files or folders or anything of the sort. It’s pretty much a flat organization. So I can save a copy and work in the new copy, but this won’t actually create a useful organization. For one, it starts a new instance of Easel in a new tab or window, for two it doesn’t allow me to continue working in the current instance under a new name. It requires a lot of extra clicks.

In an ideal world, project folders can be created that house multiple versions, maybe proper versioning can even be implemented implicitly and automatically and organized visually. That, however, is a bit of a task.

But a simple ‘save as…’ feature - that enables me to continue working in the same instance of Easel but in a new file - would already be a good step on the way to organizing projects that don’t fit in a single file.

This goes for everything, by the way. If I’d have any general advice to give to proprietary software programmers like Inventables then it is: use well-established conventions and practice good conveyance of these conventions in your software. It allows people to easily and intuitively use your software. The single biggest reason for choosing the X-carve over every other DIY CNC solution for me was the fact that I wasn’t forced to use Mach3, which is a program in its own league of shitty conveyance and convention-breaking.

1 Like

Ah. Yes. I dislike it opening a new instance. And I also save multiple copies of the work I’m working on. Easier just to save as.

Also, I don’t like the 3D preview. Personally. I’d like to turn it off.

1 Like

DXF. Yes Please.


@bryansheets you can slide the tool bar in the middle separating the 2-D and 3-D sides all the way to the right and the 3D preview will not be in view. You can then zoom in on the 2D side so it fills the entire screen.

Hope that helps.

It is what I do. But I would like to be able to turn it off. As a preference in my user. Be able to turn it back on if there is something I need to see. Idk, I don’t see the need for the 3D preview with what I am making currently. Also, when a new window opens a new file etc. it pops back into existence.

I am perfectly fine moving it. Etc. no complaints just a personal preference.

1 Like

You can click “Show Toolpaths” and it will preview the toolpaths for you in 3d, where you can then hide the material preview to see the toolpaths alone in 3D.

Hm, ok… That actually works. I guess my problem is not that it doesn’t show toolpaths, but that it’s not possible to navigate in the 3D view to view them up close. Zooming in only seems to zoom into the center of the workspace, so if your toolpaths are to the side, it doesn’t show them when you zoom in.

So scratch that point, it’s apparently a problem with navigation. I’ll mull this over and figure out whether this is also a problem with conveyance.

You can pan as well as zoom the 3D view. SHIFT + click and drag in 3D view to pan the view. This allows you to get very close.

1 Like

Ah, that explains it. I did not realize you have to use shift to pan around. Why doesn’t the 3D view use normal 3D navigation controls? Is there a technical reason for this?

Define “normal controls”? There are so many different ways of doing it I would suggest there is no “normal” way of doing it.

I think, on Mac anyway, that mouse wheel click hold and drag does the same.

Standard 3D controls for CAD are:

  • left-click and hold to pan,
  • scroll to zoom,
  • logarithmic zoom proportions (i.e. being far away = zoom faster)
  • ctrl/alt/shift+drag for rotation
  • fit to screen button

Many programs expand on this, but in general this is default controls on everything I’ve ever used.

The controls seemed standard to me. Well they’re the same for all the programs I’ve used

This kind of tickles my interface design buttons, so I’ll expand on why you’d expect certain controls over the other

(big note: all of this doesn’t really matter in the whole discussion, I’m fine with the controls, I’m just talking about this to find out why certain decisions were made for what reasons):

Most of the tasks you perform on a computer are done in 1D or 2D. In 1D situations, the default way of moving something around (panning up and down on a website for instance) is either by using the scroll wheel or dragging your finger. When you move to 2D, it’s not logical anymore to use a 1D control (scroll wheel), but your mouse is inherently 2D so it makes sense to map panning to dragging the mouse. You’re already fundamentally used to moving around stuff in 2 dimensions with the mouse, so this is an intuitive control design. When moving to 3D, you need another axis. Hey, we’ve already got another one-dimensional control on the mouse: the scroll wheel. This makes for a logical and intuitive expansion of controls across dimensions.

That’s not to say there aren’t reasons to deviate from this control scheme. Almost all EDAs (PCB and electronic schematic design stuff) use the scroll wheel to center the screen on where your mouse is right now, then subsequent scroll movements to zoom in/out. There is no dragging, because this would mess up the ability to use the mouse to lay traces while moving around.

So this, ultimately, is why I asked if there was a technical reason to deviate from best practice UI design. In the end, Easel is going to be a niche program used occasionally by specific people, so it really has to try hard to have intuitive controls so people can use it without getting frustrated. This means sticking to convention and ‘the current meta’ as much as possible. It’s not super-easy to do this while trying to be cross-platform (because design guidelines do differ quite a bit between platforms), so I’m very interested in how the UI designer approaches this.

I have experience with 3D printing, but this is my first time doing CNC. I can not support your 1st point enough… I have been struggling to do any precise milling because easel lacks the toolset and anything that creates a SVG is overly complex/expensive.

So far i’ve built it and carved a couple test shapes, but I’ve hit a wall since I lack professional CNC knowledge and software. If you want me (and anyone else like me) to use this thing I need only 2 features added to easel:

  1. Alternative file formats (preferably STL importing)
  2. Precise alignment/measurement tools

SVG - Use Inkscape, it’s free and very powerful. Plenty of tutorials out there to help learn how to use it.

Easel has very precise measurement and alignment tools. I have no problem getting a feature exactly where I want it and an exact size. Can you explain the problems you are having and maybe we can help?

As for STL, not sure whether that’ll be supported in the future as it’s a 3D format and I guess used on 3D printers?