2021/05/01: 0.0.7: support legacy Cura and --binary=.. to change binary name
2021/03/24: 0.0.5: public release
I’m a great admirer of the Ultimaker Cura slicer since years, yet I predominantly have been using CuraEngine on the command-line via Print3r, which hides all the tedious configuration. But it came the point (2021/03) when I needed to have a simpler interface than CuraEngine – hence I wrote Cura CLI Wrapper, the executable cura-slicer looks like prusa-slicer or slic3r and has similar usage.
Speciality is to query all the settings from cura-slicer directly:
and with -v switch you even get a more descriptive output:
% cura-slicer --help brim -v
== acceleration_skirt_brim (Skirt/Brim Acceleration) ==
The acceleration with which the skirt and brim are printed. Normally this is done with the initial layer acceleration, but sometimes you might want to print the skirt or brim at a different acceleration.
acceleration_skirt_brim = 3000 [mm/s²] (default)
== brim_gap (Brim Distance) ==
The horizontal distance between the first brim line and the outline of the first layer of the print. A small gap can make the brim easier to remove while still providing the thermal benefits.
brim_gap = 0 [mm] (default)
== brim_line_count (Brim Line Count) ==
The number of lines used for a brim. More brim lines enhance adhesion to the build plate, but also reduces the effective print area.
brim_line_count = 0 (config)
== brim_outside_only (Brim Only on Outside) ==
Only print the brim on the outside of the model. This reduces the amount of brim you need to remove afterwards, while it doesn't reduce the bed adhesion that much.
brim_outside_only = 1 (default)
Essentially it makes Cura and CuraEngine easy to use on the command-line and provides a way to learn of the hundreds of settings available.
USAGE Cura-Slicer 0.0.7 aka Cura-CLI-Wrapper (CuraEngine 4.4.1): [<opts>] <file.stl> ...
-v or --verbose increase verbosity
-vv or --verbose=2 " "
--version display version of this program and exit
--load=<config> load config file
--load <config> " "
--output=<fn> set output filename
--output <fn> " "
-o <fn> " "
--binary=<exe> set executable of CuraEngine (default: CuraEngine)
--version=<v> set version of CuraEngine (default: 4)
--<k>=<v> set CuraEngine settings (keys with '-' will be converted to '_')
-h or --help display all settings
-h or --help <term> .. display settings matching term
cura-slicer --help retract
cura-slicer -hv retract
cura-slicer overhang.stl --output=sample.gcode
cura-slicer overhang.stl --layer-height=0.1 --support-enable=true -o sample.gcode
The user settings reside in ~/.config/cura-slicer/base.ini and will not be overwritten when upgrading Cura-CLI-Wrapper, make your changes there.
The system-wide settings reside in /usr/share/cura-slicer/base.ini and should not be be changed as it will be overwritten when upgrading Cura-CLI-Wrapper.
2021/03/11: starting write-up with basic illustration
I thought to compose a summary of the features of 3 types of 3D printers I currently work on, and its relations to print 90° overhangs – main motivation to go beyond 3-axis 3D printing:
a 5-axis printer PAXhas the same features as a 4-axis printer RTN and 3-axis printer plus it can print at any tilt angle, printing 90° or more overhangs
a 4-axis printer RTN prints conic- or angled sliced models so it can print 90° overhangs in all directions (conic slice) from a central point or single direction (angled slice); the tilt angle is fixed at 45°; Z sliced horizontal layers must be post-processed1) to be printable in acceptable quality but good quality cannot be achived in my opinion
a 3-axis printer by default cannot print 90° overhangs without support (unless it’s tilted 45° as for belt-printer, then only in one direction), but may printconic sliced models with 20-25° cone angle, henceprint 90° overhangs from a central point, and behave partially like a 4-axis printer
a suitable Zrot must be calculated and added to extrusion commands of the G-code, see this example.
Printing an Conic Sliced Overhang
Conic Sliced on 3-axis
A well tuned and well designed part-cooler is prerequisite to print conic-sliced models at cone angle of 20-25°, and currently there is no conic slicer which can properly segment sub-volumes yet (2021/03) to switch from horizontal- and conic-slicing (with two modes of outside/inside cone) where suitable.
and nearly the same with PAX90 (tilt angle 0..90° only) with shorter arm:
A 5-axis Penta Axis (PAX) supports other slice methods than horizontal-, angled- or conic-sliced, but any variable build-orientation, but will make the slicing software very complex to recognize those sub-volumes suitable for advanced slicing methods.
This also means, a 5-axis PAX slicer with proper settings can produce G-code for 5-, 4- and 3-axis 3D printers with combining the horizontal-, angled- and cone slicing for sub-volumes or segments.
Traditionally Horizontal Layers
Slic3r 1.2.9 and Ultimaker Cura 4.8 as comparison:
2021/03/19: some information on use of slicer4rtn (not yet released)
2021/03/09: removed lengthy “Test Protocol” and extended “Gallery” section a bit
2021/03/08: slicer4rtn at 0.2.4 (still unreleased) resulting in better prints, blog-post linked at hackaday
2021/03/05: 95° and 100° overhangs are printable too, more bug-fixes in slicer4rtn
2021/03/04: fixing various bugs in slicer4rtn as disovered printing more complex pieces, supporting prusa-slicer as well aside slic3r, pushing the limits with overhangs
2021/03/02: documenting my findings, a few photos, some early conclusions (not even one day old), conic sliced and tilt sliced.
It has been target of many efforts to print 90° overhangs without support on 3-axis 3D printers as with ordinary Z slicing, each layer requires a support underneath; hence, every overhang then needs a support structure if the model itself doesn’t provide it.
While reflecting on the output of the 4-axis conic sliced models, I thought what if I simply make the cone angle flatter than 45° but 15-25° so the vertical nozzle can print it?
Conic Slices Simulation
A simple overhang model (nr 3) conic sliced at 25° for 0.4mm nozzle, 0.2mm layer height:
Tilted Slices Simulation
The same overhang model (nr 3) tilt sliced at 25° for 0.4mm nozzle, 0.2mm layer height (like with belt printer):
Conic Slices Print Tests
And on the afternoon of March 1st 2021 I ran my G-code for the first time on an ordinary 3-axis printer, a cheap CTC DIY I3 Pro B (Prusa-i3 like), in the attempt to print 90° overhangs, with a conic sliced overhang model:
Wow – it seems to have worked! There were still some issues, like the nozzle without extrusion moved into the print as I forgot map linear motions without extrusion also to conic coordinates as well, and some other minor things.
You may consider this a “backport” of 4-axis slicing procedure back to a 3-axis 3D printing procedure.
Next Day Attempts
The print is still pretty ugly due to the obvious under-extrusion, but the geometry seems to work overall. The overhang on the left-front isn’t evenly, as the outer wall print speed is still too high.
Very clean print so far but the overhang is limited to one direction (see below of overall considerations).
Well,it works, but here are some limitations of using non-planar slicing:
more complex pieces need to be volume decomposed or segmented, e.g. some sub-volume sliced ordinary vertically Z-wise, others conic sliced where needed – this is part of my research on 4-axis and 5-axis printers; and I was hoping some of the findings can be applied to 3-axis 3D printer as well (as this post shows)
the printhead geometry with heatblock sock, part-cooler, LED light they quickly come into way with larger pieces and larger overhangs
this might look minor, but part coolers play significant role for quality prints, so they need to be optimized for non-planar printing
15° works, sufficient space around the nozzle, but on the edge for overhangs, better surface quality
20° works better, layers more stable beneath the overhang
25° works too, but is the limit on my E3D V6 clone, poorer surface quality, but overhang prints better
print quality is sub-optiomal, as the nozzle runs over its own extruded filament and any “flat” surface becomes jittery as it’s not longer flat (toward Z) printed
single direction angled slice like with belt-printer
only one direction overhang possible, but good quality
25° works good, yet, the heatblock comes into the way rather quickly with my sample overhang model
Conic vs Tilted Slices
Issues to Resolve
more beautiful prints
fine tune extrusion rate: the current slicer4rtn does a simple/poor interpolation causing rough top surfaces (under- vs overextrusion)
fine tune outer wall of overhangs, slow them down
support more slicers
Slic3r: supported since slicer4rtn 0.0.1
Prusa Slicer: supported since slicer4rtn 0.1.2 (0.1.1 was broken) but often refuses to slice model, e.g. cube fails in inverted cone space
Trying out an overhang model which extends -Y and Y (as side-ways the part-cooler comes into the way)
There are still inconsistencies with extrusion calculation, but the prints getting cleaner.
4-sided overhang model nr 6 (conic sliced)
Sample print comes soon as I need to redesign my part cooler so I can print this piece.
1-sided long 4mm thick overhang model nr 3 (conic sliced)
Long 40mm overhang, just 4mm thick extending nose . . .
1-sided long 2mm thick overhang model nr 3 (conic sliced)
Long 40mm overhang, just 2mm thin extending nose, let’s push the limits of what’s possible:
OK print so far, better than anticipated, but still a way to improve it. Reprint with a newer version of slicer4rtn (0.2.3):
better surface, no stringing anymore
faster print speed but also more geometric inconsistency like bending up
underside is more uneven but also cleaner than all the previous (pre- 0.2.0 of slicer4rtn)
1-sided short 2mm thick 95° overhang model nr 3 (conic sliced)
Just trying more overhang, let’s see.
Obviously there is more than 95° overhang possible, so let’s try …
1-sided short 2mm thick 100° overhang model nr 3 (conic sliced)
Even steeper overhang, let’s see.
This is truly promising, up to 100° overhangs printable with vertical nozzle as mounted on most 3-axis 3D printers . . .
As of the publication of this blog-post (2021/03) no slicer is available but slicer4rtnwill be made available soon which was released 2021/03/22.
Caution: you need to be an experienced 3D printing enthusiast to proceed, you need to know and realize what you do:
pay close attention of the printhead geometry, such as the nozzle and heatblock, and the part cooler which limits the non-planar printing
depending on the angle, and the direction of extrusion more or less extrusion distortion will occur
--angle=20 is a good start, you may go as low as 15°, and perhaps at max at 30° depending on your nozzle and heatblock, if you aim to print 90° overhangs
--layer-height=0.2 is a good start too, the thinner the layers the better overhangs can be printed
if you have trouble with over- or under-extrusion and your printer otherwise well tuned, then use --erate=f as extrusion-rate tuning, whereas f = 0.5..1.5 or so, if you have to go below or above, something else is wrong.
conic slicing is complex(er), you need to think in new terms:
the slicing procedure requires a conic slicing center
to and from that center overhangs can be printed well
if you have multiple centers, slicer4rtn does not yet support volume segmenting to support multiple centers
slicer4rtn requires manually entered conic slicing center
it requires fine-grained faces so the slicing works well, use --subdivide=5 or higher for simple pieces, e.g. like a cube or low-poly models in generals
Tuning 3-axis 3D Printer
Following changes are recommended:
increase Z axis speed: within the start G-code the line M203 Z.. (replace .. with an actual number) to increase speed of Z-axis
depending on the pitch of your Z-lead screw or threaded rods, you may set it to Z4, Z6, or higher, so the motion speed comes close to X- and Y-axis to improve print quality
if it’s set too high, your stepper motor will block and not move at all
my setup with M6 threaded rod for Z (200 full steps = 1mm):