UltiMaker Community of 3D Printing Experts

# 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 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 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 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.)
*/```

• 2
##### 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!

• 1
##### 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.

## 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

• ### Our picks

• In this stable release, Cura 5.3 achieves yet another huge leap forward in 3D printing thanks to material interlocking! As well as introducing an expanded recommended print settings menu and lots of print quality improvements. Not to mention, a whole bunch of new printer profiles for non-UltiMaker printers!
• 22 replies
• The UltiMaker S7 is built on the success of the UltiMaker S5 and its design decisions were heavily based on feedback from customers.

So what’s new?
The obvious change is the S7’s height. It now includes an integrated Air Manager. This filters the exhaust air of every print and also improves build temperature stability. To further enclose the build chamber the S7 only has one magnetically latched door.

The build stack has also been completely redesigned. A PEI-coated flexible steel build plate makes a big difference to productivity. Not only do you not need tools to pop a printed part off. But we also don’t recommend using or adhesion structures for UltiMaker materials (except PC, because...it’s PC). Along with that, 4 pins and 25 magnets make it easy to replace the flex plate perfectly – even with one hand.

The re-engineered print head has an inductive sensor which reduces noise when probing the build plate. This effectively makes it much harder to not achieve a perfect first layer, improving overall print success. We also reversed the front fan direction (fewer plastic hairs, less maintenance), made the print core door magnets stronger, and add a sensor that helps avoid flooding.

The UltiMaker S7 also includes quality of life improvements:
Reliable bed tilt compensation (no more thumbscrews) 2.4 and 5 GHz Wi-Fi A 1080p camera (mounted higher for a better view) Compatibility with 280+ Marketplace materials Compatibility with S5 project files (no reslicing needed) And a whole lot more
Curious to see the S7 in action?
We’re hosting a free tech demo on February 7.
It will be live and you can ask any questions to our CTO, Miguel Calvo.
Register here for the Webinar
• 18 replies
• Are you a fan of tree support, but dislike the removal process and the amount of filament it uses? Then we would like to invite you to try this special release of UltiMaker Cura. Brought to you by our special community contributor @thomasrahm

We generated a special version of Cura 5.2 called 5.3.0 Alpha + Xmas. The only changes we introduced compared to UltiMaker Cura 5.2.1 are those which are needed for the new supports. So keep in mind, this is not a sneak peek for Cura 5.3 (there are some really cool new features coming up) but a spotlight release highlighting this new version of tree supports.
• 22 replies
×

• #### Activity

• UltiMaker.com
×
• Create New...