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

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.

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

  • 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]

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

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