"Depth first" carving optimization

This is Ruwan from the Inventables software development team. I’m really excited to share with you some toolpath optimizations we’ve just released for Easel!

  1. Object by object carving - Up until now, Easel would carve all shapes in a “layer by layer” approach, moving from one shape to the next until all shapes at a given depth were carved completely. With our new changes, all shapes that intersect each other are grouped and carved at all layers before starting the next group. Shapes within each group are carved one layer at a time.

    Before(left) and after(right) optimization

  2. Continuous open path carving - Prior to these changes, while carving an open path (an outline that did not form a fully closed shape), each layer always started from a single end. This could cause unnecessary tool return movements. Easel now avoids this by being able to carve an open outline in either direction, starting from whichever end point is closest.

    Before optimization

After optimization

*Note the reduced rapid movements (red lines)

In addition to these changes, we have some of the following tool path improvements in store:

  1. Optimizing rapids between groups, so that the total rapid distance
    is minimized.
  2. Optimizing rapids within a group, so that the total rapid distance is minimized within a group.
  3. Within a single object/group, finish a shape before moving to the next shape. Update: Nested object-by-object carving is now supported!

We’d love to hear what you think about these changes.

Ruwan and the rest of the Easel team


@Ruwan - I am very impressed with the new optimizations! I noticed the improvement immediately in a job I was running a few days ago. Last night I was running a very complex (probably way to complex) project to carve a photo. As I was watching it run, I was simply amazed at how intelligently Easel was grouping sections of the photo to mill that really reduced the number of tool lifts. Easel now seems to have a global “understanding” of the total project instead of just seeing a random set of vectors.

This change will save the X-Carve/Easel community thousands of hours!

Thank you.

Hey @AllenMassey, thank you for your kind words. The optimizations we are referring to in the above post were deployed about 40 minutes ago. So I believe the optimizations you are referring to might be due to some other changes we did a while back. We are always working on improving the tool path logic.

Great. Thanks Easel team.

I’m trying to cut text with a drag knife on vinyl. Sometimes, the tool doesn’t quite fully make it around a letter, so it’s not completely cut out. I think this has more to do with my knife or setup more than software.

Anyhow, my solution is to make two passes over each letter. I set the cut depth to 0.0305, with a max depth per pass of 0.0300. With the toolpath optimizations mentioned above, this should work, so that the knife goes around each letter twice, without raising the bit. I’m not seeing this though. It’s going layer by layer. So one pass around one letter, then the next letter, and then it will go back and do another pass letter by letter.

Here’s what I just cut: http://easel.inventables.com/projects/GgTIYxy-uBzNdcrwT5rrlQ

@SpencerShepard, you are right, apparently the whole word is considered as one object. We are looking into solving this now. Thank you.

I imported the same text as an svg from Inkscape. This separates the letters into their own objects. When I make the cut, it behaves as I’d like, going around each letter twice…except the letters with interior features (a, b, d, g, e, o, etc). It will do one pass on the letter profile, then one pass over the interior feature, repeat.

I went back to Inkscape, broke apart the letters so that interior features were their own path. On import into Easel, I can confirm that the interior features are separate objects. However the result is the same.


About interior features, it is expected behavior for now. It is noted as 3rd point in tool path improvements in store. We will be working on that.

Alright, I will be patiently waiting. :smile:

1 Like

@Ruwan, you and the Easel team rock!

Constant improvement and innovation is what is going to set Easel apart from other CAM type software.

Keep up the great work.


Hi @AllenMassey What about a picture of the job.

Has anyone else tested the optimization yet?

I am running a job right now with a fresh restart, but I don’t notice any of the changes mentioned above… I have many objects cutting in the material all at the same depth and they are each going down all in the same layer at a time. Should I be seeing something different?

Do the objects intersect?

Ah, I didn’t think that they did, but I had an object around them all that was set to 0 depth so I forgot that it was there. After deleting it, they tool paths re-rendered the new way.

I can share the Easel project if it helps… ?

1 Like

@EbenStrydom - Here is a very bad time lapse video of the machine cutting the photo. This was my first attempt at trying to convert a photo to a wood carving and as a result I made the vector image way to complex (like an order of magnitude to complex). This is where a estimated time to complete would be helpful in Easel. After about 4 hours the job was showing 10% complete, so I stopped it.

I basically just imported the jpeg photo into inkscape and converted it to grayscale and then vectorized that.
The plan was to take advantage of Easel’s ability to control the Z axis based on the grayscale of the vector. And that was working really well, If I had been able to let it run for 40 hours I think it would have done a really good job.

It was also nice to see that Easel could handle what must have been many thousands (or millions) of lines of Gcode without any trouble.

If anyone has suggestions for the vector parameters that are needed to produce a manageable size please let me know,

1 Like

It sounds like you figured out what was going on. The optimization only currently works for separate groups of objects. If they are nested, it will use the old approach. We’ll be addressing that in the future.


Can’t wait to put Easel to use with the updates this wkd! Thx, Easel team!

I quickly threw together a project to test (my first ‘depth through material’) and I got this gwarbled mess of lines on the 3D view. I removed the object thinking it was that and it still created weird cut lines. When I clicked ‘carve’ it tried to cut the path in the 3D view. Any ideas on what I should try?

1 Like

Try refreshing the page. That is odd behavior.