Jump to content
Ultimaker Community of 3D Printing Experts

How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?

Recommended Posts

I understand in the general sense how slicer programs create sets of closed-loop polygons to print for each layer. For a given closed loop polygon which needs to be printed, the tool path generator will know the coordinates and which of those coordinates are connected to each other, such that traversing a set of segments in that order will bring the extruder head back to the first coordinate to complete the closed loop.


My question is: By what mechanism does the tool path generator decide which 'direction' to traverse the closed loop? As it is a loop, that loop could be printed "clockwise" or "counter-clockwise", as it were. Any details, and links to further explanations of how Cura determines this is much appreciated.  Extra points for insight into whether other software does it differently.


Thank you.

Share this post

Link to post
Share on other sites

I think it's random.  It slices a layer of STL triangles in to random unconnected line segments (because STL files don't say which triangles are connected).  Then it tries to connect line segments together into loops.  Each loop of line segments is stored in a data structure - basically a linked list.  It prints in the order that they are in the structure probably.  But it doesn't always print starting at the begining of the data structure.  But I think it always prints in the same order.  So when it creates these loops it could start off clockwise or counter clockwise.


So maybe it's controlled by the STL file and what order the triangles are found in there.  The first triangle found in the STL for a given layer starts the loop and then where it finds the first adjoining triangle - that will set the direction.  Most likely.  You could experiment with a simple STL file - maybe a cylinder.  Find the very first triangle in the STL file and it's xyz position.  Find the adjoining (horizontally) triangle and swap them to see if it changes the CW versus CCW travel.

[edit: note: I was wrong.  Correction in next post]

Share this post

Link to post
Share on other sites

gr5 -- Thank you very much for not only providing your best guess, but then going back into the source code itself to check, and then posting again.  I read an academic paper once (https://link.springer.com/article/10.1007/s00170-012-4706-y) which described it in a similar way.  When I have heard this before, I never quite knew if counterclockwise and clockwise were physical path directions in this sense, or some mathematical definition I wasn't aware of.   

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Ultimaker Cura | a new interface
      We're not only trying to always make Ultimaker Cura better with the usual new features and improvements we build, but we're also trying to make it more pleasant to operate. The interface was the focus for the upcoming release, from which we would already like to present you the first glance. 
        • Like
      • 130 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!