UltiMaker Cura 5.8.1: Quick howto for Sidekick 747 with and OctoPrint/OctoLapse

This will probably work with other printers but you will have to be careful and hopefully understand what is going on in the start and end g-code scripts as well as the shell script below.

  1. Launch UltiMaker Cura 5.8.1.
  2. Go to Settings->Printer->Manage Printers.
  3. Click on Add New button
  4. Select Non UltiMaker Printer
  5. Select Add non-networked printer
  6. Type Custom in search box
  7. Select Custom FFF printer
  8. Click Add
  9. Printer Settings: X:232.3, Y: 232.3, Z: 248.0, Build plate shape: Rectangular, Origin at center: unchecked, Heated Bed: Checked, Heated Build volvume: Unchecked, G-code flavor: Marlin.
  10. Printhead settings: X min: -20, Y min: -10, X max: 10, Y max: 10, Gantry Height: 248.0, Number of Extruders: 1, Apply Extruder offsets to Gcode: Checked.
  11. Setup start gcode for printer as follows:
; This section added by bd2022 and subsequently hacked for Cura 5.8.1 per instructions at
; https://github.com/FormerLurker/Octolapse/wiki/V0.4---Automatic-Slicer-Configuration
; Script based on an original created by tjjfvi (https://github.com/tjjfvi)
; An up-to-date version of the tjjfvi's original script might be found
; here:  https://csi.t6.fyi/
; Note - This script is for Cura V5.8.1 and has been modified
; to use <field> instead of {field} for those fields that 
; used to work on Cura 4.2 but don't seem to work anymore.
; This script will require post processing.
; --- Global Settings
; layer_height = {layer_height}
; smooth_spiralized_contours = {smooth_spiralized_contours}
; magic_mesh_surface_mode = {magic_mesh_surface_mode}
; machine_extruder_count = {machine_extruder_count}
; --- Single Extruder Settings
; speed_z_hop = {speed_z_hop}
; retraction_amount = {retraction_amount}
; retraction_hop = {retraction_hop}
; retraction_hop_enabled = {retraction_hop_enabled}
; retraction_enable = {retraction_enable}
; retraction_speed = {retraction_speed}
; retraction_retract_speed = {retraction_retract_speed}
; retraction_prime_speed = {retraction_prime_speed}
; speed_travel = {speed_travel}
;This G-Code has been generated specifically for the LulzBot Sidekick with a Universal Tool Head
G90                                        ; absolute coordinate
M82                                        ; set extruder to absolute mode
G92 E0                                     ; set extruder position to 0
M117 Heating...                            ; progress indicator message on LCD
M140 S{material_bed_temperature_layer_0}   ; Bed temp, but continue without waiting
M109 R<material_soften_temperature>        ; soften filament and wait before homing Z
G28                                        ; Home all axis
G1 E-15 F100                               ; retract filament
M104 S<material_probe_temperature>         ; start extruder heating to probe temp
M190 S{material_bed_temperature_layer_0}   ; wait for bed to reach printing temp
G29                                        ; start auto leveling
G0 X0 Y0 F5000
M109 R{material_print_temperature_layer_0} ; wait for extruder to reach initial printing temp
M117 <file_name>                           ; progress indicator message on LCD
G1 Z2 E0 F75                               ; prime tiny bit of filament into the nozzle
  1. Setup End G-code for printer as follows
;This G-Code has been generated specifically for the LulzBot Sidekick with a Universal Tool Head
M400                                              ; wait for moves to finish
M140 S<material_part_removal_temperature>       ; start bed cooling
M104 S0                                           ; disable hotend
M107                                              ; disable fans
G92 E5                                            ; set extruder to 5mm for retract on print end
M117 Cooling please wait                          ; progress indicator message on LCD
G1 Y-10 Z251.3 E0 F3000                           ; move to cooling position
G1 E5                                             ; re-prime extruder
M190 R<material_part_removal_temperature>       ; wait for bed to cool down to removal temp
G27                                               ; present finished print
M140 S<material_keep_part_removal_temperature_t>; keep temperature or cool down
M77                                               ; End GLCD Print Timer
G90                                               ; absolute positioning
M18 X E                                           ; turn off x and e axis
M117 <PrintCompleteMessage>                       ; print complete message
  1. Select Extruder 1 tab
  2. Nozzle Settings: Nozzle Size 0.5 mm, Compatible material diameter: 1.75, Nozzle offset X: 0.0, Nozzle Offset Y: 0.0, Cooling Fan Number: 0, Extruder Start G-code Duration: 0.0, Extruder End G-code duration: 0.0
  3. Extruder Start G-code: Empty
  4. Extruder End G-code: Empty
  5. Close machine settings
  6. Select Three Bars and rename from Custom FFF printer to Sidekick 747
  7. Close the preferences.

Later, after you have opened and sliced a file of a small design for testing purposes, run this script (only tested with ABS, requires linux or possibly might work under linux subsystem for windows). ./mypost_processing_script.sh. It will give you instructions. This is a simple script that backsup your original .gcode to a .bu file, then it does a bunch of search and replaces of text using sed. Note that the gcode file is assumed to have a .gcode extension, which you do not have to type when running the script. (Just type the base file name without the .gcode).

#!/bin/bash
# This is for Cura 5.8.1
if test $# -ne 2; then
  echo example:
  echo "    Usage:  $0 <material> <filename>.gcode "
  echo "    Where material can be:"
  echo "    o ABS_IC3D_1_75"
  echo "    o POLY_PLA_1_75"
  echo "    o PETG_1_75"
  echo "    o NinjaFlex_1_75"
   exit
fi

PRINT_COMPLETE_MSG="Print Complete; Customize as you like"
case $1 in
  ABS_IC3D_1_75)
    MST=170
    MPT=170
    MPRT=60
    MKPRT=60
    ;;

  ABS_CHROMA_1_75)
    MST=170
    MPT=170
    MPRT=60
    MKPRT=60
    ;;

  PETG_1_75)
    MST=170
    MPT=170
    MPRT=50
    MKPRT=50
    ;;

  POLY_PLA_1_75)
    MST=140
    MPT=140
    MPRT=45
    MKPRT=45
    ;;

  NinjaFlex_1_75)
    MST=180
    MPT=180
    MPRT=0
    MKPRT=0
    ;;
esac
cp $2.gcode $2.bu
sed -i "s/<file_name>/$2/g" $2.gcode
sed -i "s/<PrintCompleteMessage>/$PRINT_COMPLETE_MSG/g" $2.gcode
sed -i "s/<material_soften_temperature>/$MST/g" $2.gcode
sed -i "s/<material_probe_temperature>/$MPT/g" $2.gcode
sed -i "s/<material_part_removal_temperature>/$MPRT/g" $2.gcode
sed -i "s/<material_keep_part_removal_temperature_t>/$MKPRT/g" $2.gcode
sed -i "s/Unknown/Sidekick 747/g" $2.gcode

It would be easy to port the shell script to run as a python post processing script instead. But I am not getting paid, and the shell script method works for my needs. If lulzbot is interested, contact me for a quote. (Or just do it yourselves, it is far easier than maintaining your own version of cura).

Note: You should double check all dimensions and temperatures for your printer. This is working for me but there is plenty of room for typographical errors in this post.