# How to 3D print an object with variable printing speed?

I have a object to print for which I want the base to be printed very rapidly because it's just a cube but as the print reached around 70 % a complex circular structure needs to be printed at a slower speed. Is there any way I could control the speed at the given percentage of job done?

I want the cube to be printed at 50 mm/s and the complex circular structure at 40 mm/s.

Printer Type - FDM

• What printer? What slicer? Aug 18, 2016 at 6:57
• @TomvanderZanden I use Cura. I don't think this is a printer specific feature because the speed can be changed for RAFT and the object itself. The question could also lead to a suggestion of a software which could alter the printing as required by some parameters or a way to modify the gcode to alter the speed at a certain point. Aug 18, 2016 at 7:29
• It's printer specific in the sense that you hadn't even mentioned whether you have a FDM, SLS, DLP,... printer. Aug 18, 2016 at 9:41
• You know, 50 and 40 are nearly the same speed... even more so when you factor in firmware acceleration slowdowns around complex shapes. How much real print time are you saving by printing the cube part a little faster? Aug 18, 2016 at 19:53
• @RyanCarlyle Around 30-40 minutes. I would want to go even faster in some cases so I wanted a general solution. Aug 19, 2016 at 5:05

Simplify3D has the ability to create more than one process, to be applied to the model at specific layers. It appears that feature fits perfectly with your requirements. As an example, you might create a process within S3D for layers 1 to 500 at the desired 50 mm / sec along with any other modifications you wish. The second process would specify layers 501 to 800 to be printed at 40 mm / sec.

The preview mode of S3D allows you to identify layer numbers in order to provide the necessary precision.

• Can you also set, say, a 'pause' between layer groups? I'm thinking of a case where one might want to change filaments. Aug 19, 2016 at 16:36
• It would depend on the controller within the printer, but many devices support a pause g-code. This link is specific to reprap, but other printers as well as CNC devices have capability: reprap.org/wiki/G-code#M226:_Gcode_Initiated_Pause Aug 19, 2016 at 22:43

As @fred_dot_u mentions, Simplify3D has the capability to do this, but you can achieve the same effect by slicing the file twice, once at 40 mm/s and once at 50 mm/s, and then manually combining the generated G-code using a text editor. You should be able to find the point where it transitions from printing the cube to printing the circular structure by looking at the Z-height, and you can simply copy-paste the G-code from that point onward from the 40 mm/s file into the 50 mm/s file.

For instance, you might look for a point like this in the G-code (Cura):

G1 F3600 X113.543 Y94.098 E105.96969
;LAYER:25
G0 F7800 X113.743 Y91.369 Z2.700


or this (Simplify3D)

G1 X175.981 Y74.019 F2880
; layer 25, Z = 1.869
; inner perimeter
G1 X162.982 Y57.870 F7500
G1 Z2.069 F900


Note that the both include a comment line (a line that starts with ;) to indicate the layer. Everything before that you should copy from one file, everything afterwards from the other.

• This is a neat tip. Could you show a quick example on what a person should be looking for? Aug 19, 2016 at 10:21

Cura has a plugin called "Tweak at Z" that lets you change the speed at a specific layer/height, I used it when printing an object that's basically a curved box for 100 mm and then has tiny features in the last 10 mm and it worked very well.

• Tweak At Z is no longer supported in the latest versions of Cura, 4.7 Sep 1, 2020 at 8:18
• @AlvinStroyny There is now a plugin called ChangeAtZ that will do that.
– 0scar
Sep 1, 2020 at 12:04