Note: This article may be outdated now that CreawesomeMod has been merged into Cura.
I recently got a Creality3D Ender 3 printer. It has been amazing so far, considering it was only $250. I can easily see why the 3D printing community loves this printer so much.
Since I am relatively new to 3D printing, I decided to use Cura as my slicer for this printer. I quickly noticed that Cura’s time estimates for print jobs were 15-25% shorter than they should have been.
I dug around for a while. It turns out that Cura, while it supports other brands of printers, is biased towards Ultimaker printers. Cura’s time estimates are based on the acceleration and jerk that Ultimaker printers are capable of.
That said, Cura does have acceleration and jerk settings for a small handful of other brands of printers. This includes some Creality3D printers as well. Unfortunately, the Ender 3 is not one of those printers. The good news is that it is relatively easy to put those settings into Cura… just not as easy as I would like.
I use the TH3D Unified Firmware on my Ender 3, so I searched the source code for all the acceleration and jerk settings used for that printer. These settings are below line 1316 in Configuration_backend.h
in TH3D Unified U1.R2. Some of the acceleration values are in arrays of 4 numbers. These are values for the X, Y, Z, and E axis. The jerk values are all in separate variables, so I’m not sure why acceleration settings are in arrays. Eh, whatever.
Note: In the stock Creality3D Ender 3 firmware source at https://github.com/Creality3DPrinting/Ender-3, the settings are in Configuration.h
They are slightly different than the settings used in the TH3D Unified firmware. That is something you will need to keep in mind if you want to stay on the stock Creality3D Ender 3 firmware.
I made a list of all the values I needed and then figured out what variable names are used for this data in Cura’s configuration files. The configuration file I used as a reference was /resoures/definition/creality_cr-x.def.json
. I wasn’t quite ready to get involved in modifying Cura’s source code, so I decided to play around with Cura’s external configuration files.
Cura automatically generates an external configuration file when you set up a printer. On my Linux machines, this file was at .local/share/cura/4.1/definition_changes/Creality+Ender-3_settings.inst.cfg
in my home directory. These configuration files are in a slightly different format than the JSON format used in the source code, but the variable names are all the same.
The configuration file originally looked like this:
|
|
After adding all the data for the Ender 3:
|
|
After making those changes and restarting Cura, print time estimates were much more accurate. On average, the estimates were off by only seconds instead of minutes. I am definitely happy with the end result!