Jump to content

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


kreeser1

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
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 7 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...