Skip to content

Gel Printing: Pre-sliced and Custom Toolpath ​

Overview ​

This guide walks you through printing gels using a pre-sliced model or direct toolpaths with a syringe extruder on a Science Jubilee machine.

Before You Begin ​

  • Clear any items off the build plate.
  • Ensure the Z-Offset is calibrated for your syringe.
python
from science_jubilee.Machine import Machine
from science_jubilee.tools.SyringeExtruder import SyringeExtruder

m = Machine(address="192.168.1.2")

To home the machine (if needed):

python
# m.home_all()

Tool Setup ​

Ensure your tool's index and name match your Duet config.g setup.

python
syringe_index = 10000           # Match your tool index
syringe_config = "10cc_syringe" # Predefined config
syringe_name = "Syringe"

syringe = SyringeExtruder(
    index=syringe_index,
    name=syringe_name,
    config=syringe_config
)
m.load_tool(syringe)

Ask a lab assistant for help prepping the F-127 gel.

Printing a Pre-Sliced Model ​

Pick Up the Syringe Tool ​

python
m.pickup_tool(syringe)

Prime the Nozzle ​

This step ensures material is flowing before printing.

python
m.move_to(z=25)         # Raise bed for clearance
syringe.move_extrude(e=1)  # Repeat until gel starts flowing

Load and Print G-code ​

Helper functions to load and execute .gcode:

python
def load_gcode(file_path):
    try:
        lines = []
        with open(file_path, 'r') as file:
            for line in file:
                lines.append(line.strip())
        return lines
    except FileNotFoundError:
        print(f"File '{file_path}' not found.")
        return None
    except Exception as e:
        print(f"An error occurred: {e}")
        return None

def print_gcode(gcode):
    for line in gcode:
        if line and not line.startswith(';'):
            print(line)
            m.gcode(line)

Start printing:

Note: If you're using a glass plate, remove it while homing and return it before printing begins.

python
gcode = load_gcode("cylinder-20mm.gcode")
print_gcode(gcode)

After Printing ​

python
m.park_tool()

The default slice may not print optimally. Tune speed, layer height, and extrusion settings using your own slicer and refer to the README.md.

Custom Toolpath Printing ​

You can directly script syringe toolpaths for custom prints.

Test Cube with Raised Edge ​

This prints a simple raised-edge cube using manual extrusion.

python
m.pickup_tool(syringe_0)

Set print parameters:

python
z = 0
layer_height = 0.2
z_off = 0

start_x = 150
start_y = 150
side_length = 20

m.move_to(x=start_x, y=start_y, z=z)

Print each layer of the cube:

python
for layer in range(40):
    syringe_0.move_extrude(x=start_x + side_length, y=start_y, z=z, multiplier=1)
    syringe_0.move_extrude(x=start_x + side_length, y=start_y - side_length, z=z + z_off, multiplier=1)
    syringe_0.move_extrude(x=start_x, y=start_y - side_length, z=z + z_off, multiplier=1)
    syringe_0.move_extrude(x=start_x, y=start_y, z=z, multiplier=1)
    z += layer_height
    z_off += 0.1

Pre-release documentation · Internal research use only · Not authorized for redistribution.