Jump to content
Ultimaker Community of 3D Printing Experts
Sign in to follow this  

Progress update on the new Cura slicer

Recommended Posts

Feature request: varying layer heights.

Try to print the famous owl: http://www.thingiverse.com/thing:18218

With 0.2mm layer height, most of the owl comes out fine. But the top of the head is not nice. With 0.05mm layer height, the top of the head is beutiful, but the total print takes forever.

The user interface for this feature will be tricky though...


This is a pretty cool idea, and hopefully not too difficult to implement.

You could set 2 different layer thicknesses, one for "steep" regions (thicker), and one for "shallow" regions. Then, allow the user to set the limiting angle.

Once layers associated with shallow angles (as measured from the XY plane), the software could switch to that thinner layer height (at least for the perimeter passes).

This would make for really efficient printing, where you would blast through more vertical areas with thick layers, and crank the resolution up where it counts.


Share this post

Link to post
Share on other sites

"I think it would be great (and probably easyish) to have the "bottom" layer optional."

I'm a total noob, just been printing for a few days, but I already see a huge need for this. When printing objects you want to be hollow, you usually don't want the bottom layer, and the only way to do that and get a nice top is to hollow out the object by hand (which is a royal pain given how often meshlab crashes).

What would be even more useful would be the abillity to have the bottom layer be a "lip" that extends in from the model edges by some programmable amount, to facilitate gluing of multipart models. And if you want to get really crazy, add the ability to put in N registration holes equally spaced radially from the center of the model at a specific inset from the edge of the model.


Share this post

Link to post
Share on other sites

I have several ideas to improve the support structures implementation.

- Add a feedrate multiplier for the support structures to print them faster.

- Add an option to print layers of support structures in contact with the part with a 100% fill density. I've modified the raft plugin as I could to add this feature but I am limited by my programming skills : http://ultimaker.ipbhost.com/uploads/gallery/album_43/gallery_5119_43_6280.jpg

Even better, create a solid shell just under the printed part. This option will be unusable with a single extruder. I made a quick example using blender's 3D printing tools add-on to see what it would look like : http://ultimaker.ipbhost.com/uploads/gallery/album_43/gallery_5119_43_221.jpg

Also, for dual extruders, it would be great to have a "filament packing density" setting for each extruders, and a way to insert specific gcode commands to switch each extruder, it may be not useful for the Ultimaker, but it will be for other printers.


Share this post

Link to post
Share on other sites

Hi everyone,

As some people might have read, and others might have not. I'm working on replacing the slow slicing engine behind Cura.

First a bit of history. Cura started about a year ago as a better and easier to use GUI on top of existing slicers. Back then I picked Skeinforge as the engine to use, because I knew how to get good prints out of it. And because it could slice just about anything, only a bit slow. I also left the option to use Slic3r as engine. But because Slic3r is very picky about manifold meshes I never enabled it.

Now a year later, and Slic3r is still picky, crashes on a few models that I tried. And not that much faster then Cura. Skeinforge is running on it's last breath as people are printing larger and larger models. With more and more layers.

And so people are pretty much forced to use KISSlicer or NetFabb for large prints. KISSlicer does a pretty good job. And once you get NetFabb configured it also does a nice job.

So. Now that I work at Ultimaker, and I have more time to actually do stuff. I'm doing what I said I would never do. I'm making my own slicing engine. In C++. And I'm crazy (for the people that didn't know that already).

So, what do I have? I have a working slicing engine. With:

Basics like side walls, with infill, top/bottom filling, sparse insides.

It doesn't do the strange "interface layers" thing that Skeinforge does.

It does do proper bridging like Skeinforge.

It also does retraction, combing and proper path-order-optimization. So it doesn't do a crazy amount of traveling, stays inside the model when possible.

I just added support material today. So that's one thing crossed off the ToDo list.

The thin wall problem? It's solved. Yes, it, is, solved!

There is still a lot of work to be done. It's only partially integrated into the Cura GUI right now, progress bar is not working for example. About all settings in the expert-config are missing. The new "bottom cuttoff" feature (from Cura 13.03) is not implemented yet. Retraction settings are not added (retraction itself is), cooling settings are still missing. Dual-extrusion is missing, as well as project-planner support.

And then there are a bunch of models that do slice with Skeinforge, but not yet with my new engine. So, work, work, work. But I am making awesome progress. And I hope to get a test version out to more people soon. I've send a early version to a few people. And it's been mostly positive responses.

Oh, and did I mention it is fast? I didn't measure the latest version, but so far most things slice in seconds compared to minutes with Skeinforge. So that's awesome :smile:

Finally, this project has gotten high priority at Ultimaker. And it will be open-source once we have a version out. So I hope to see you all slicing at light speed soon :smile:

Also, this would be a perfect place to request features :wink:


hi Daid,

Recently, i research the Cura engine, which is a great work. And i have one question. When merge the redundant point, you use the ' int hash = ((p.x + MELD_DIST/2) / MELD_DIST) ^ (((p.y + MELD_DIST/2) / MELD_DIST) << 10) ^ (((p.z + MELD_DIST/2) / MELD_DIST) << 20);'. Could you tell me the logic of this?

Thanks for all your hard work.




Share this post

Link to post
Share on other sites

It's an optimization. I generate a hash-code for each point, so I can put all points in a hash map to quickly compare them. Points that are near each-other have the same hash-code.

Or, you could see it as I put each point in a 3D grid, which spacing of MELD_DIST in each cube. Every cube has it's own unique ID, which I calculate there.

(Hash collisions can happen, but later code does fine checking of all the points that have the same hash code)

The most important reason why this step happens is to reduce ultra-high quality models, and to get face-edge relations later on to optimize the polygon generation.


Share this post

Link to post
Share on other sites

Hi Daid,

Like everyone else I love Cura and each version gets better and better BUT one thing hasn't changed and that is the print by USB interface Could it be possible to improve this to at least include a dual head option or reconise its a two colour print. I don't get on with the sd card and controller and I'm sure others don't. I don't see any differance in quality between printing via USB and SD card I just find it easier to do it all from one computer.

Way back at cura 12.8 or maybe before it came with printrun which I think is a nice easy to use and see whats going on interface but had plenty of options to tinker with pre printing ( i use it to set up the printer, check its movement etc ) but it also lacks a two printhead option.




Share this post

Link to post
Share on other sites

I'm redoing the whole printing interface code right now in some spare time (no final date on it), as I'm generalizing the code so it can be used for other interfaces next to USB printing (WiFi printing for example)

I'll try to keep multiple extruders in mind.


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
Sign in to follow this  

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