Jump to content
kreeser1

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

Recommended Posts

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

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
Posted · How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?

I think you will find that the walls around a hole are printed in one direction and the walls around the outline of the part are printed in the other direction. This is determined by the part of CuraEngine that constructs the polygons for each layer.

Share this post


Link to post
Share on other sites
Posted · How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?

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
Posted · How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?

From the Cura source code:

/*!
 * Outer polygons should be counter-clockwise,
 * inner hole polygons should be clockwise.
 * (When negative X is to the left and negative Y is downward.)
 */

 

  • Like 2

Share this post


Link to post
Share on other sites
Posted · How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?
7 minutes ago, smartavionics said:

From the Cura source code:


/*!
 * Outer polygons should be counter-clockwise,
 * inner hole polygons should be clockwise.
 * (When negative X is to the left and negative Y is downward.)
 */

 

Nice!

  • Like 1

Share this post


Link to post
Share on other sites
Posted · How Does Cura's Tool Path Algorithm Choose Direction of Print for Closed-Loop Curves?

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

×
×
  • Create New...

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!