Skip to content

Printer profile as source

 3 min I kept my Mini Delta’s slicer profile in Git, with derived settings and calibration changes recorded as diffs.
Published

Dec 25, 2018

A black open-frame Monoprice Mini Delta 3D printer beside a large spool of green filament.

My Monoprice Mini Delta.

I had a Monoprice Mini Delta and treated its slicer profile the way I’d treat any program: a repo, reviewable diffs, and derived values instead of copied constants. mp-mini-delta targets Cura 3.6 and carries the machine definition, the extruder definition, the platform STL, and three quality presets—next to the leveling tool that measured the machine they describe.

A Cura machine definition is a .def.json inheriting fdmprinter with overrides, and the overrides split facts from consequences. Facts get default_value: a 110 mm elliptic bed ("machine_shape": "elliptic", center-is-zero—delta essentials), a 0.4 mm nozzle, the speed and jerk limits. Consequences get value, a live expression re-evaluated when a fact changes:

"line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" },
"material_bed_temperature_layer_0": { "value": "min(55, material_bed_temperature + 5)" },
"speed_layer_0": { "value": "round(speed_print / 2.0, 2)" }

Swap the nozzle and the line width follows; nothing to remember. The quality presets do the same in Cura’s second expression syntax—.inst.cfg values take an = prefix (top_bottom_thickness = =round(layer_height * 3, 2)) where .def.json expressions are bare strings. One repo documents both dialects by containing both. Even the start gcode encodes machine geometry: it primes along an arc—G2 X0 Y55 I-55 J0 E20—because a delta has no straight front edge to wipe on.

Five black 3D-printed printer parts on a white sheet, two fitted with metal bearings.

Parts the Mini Delta printed for itself.

The printer also printed some of its own parts.

The payoff of profile-as-source is that a calibration insight lands as a diff. The repo’s final commit explains the adjustment:

Change default layers heights to multiples of full steps.

Across the three presets it kept:

-layer_height = 0.21875
+layer_height = 0.21
-layer_height = 0.175
+layer_height = 0.14
-layer_height = 0.13125
+layer_height = 0.07

The old ladder was paper arithmetic: 5 down to 1 times the definition’s own 0.04375 mm minimum—five rungs. The same commit rewrote the top three in exact multiples of 0.07 mm and deleted the two finest presets (0.0875 and 0.04375) outright. That made 0.07 mm the lowest shipped preset, not the machine definition’s validation floor; the definition still allowed 0.04375 mm. A month earlier the leveling tool’s step estimate got the commit:

More inline with reality of 40-50 (?) micron Z-steps.

Those are two separate observations. One commit estimates 40–50 micron Z-steps; the later presets move in 70-micron increments. Neither commit explains why the numbers differ, and I no longer remember. The source supports the preset change, but not a claim that 70 microns was a measured mechanical step or the one uniquely correct layer height.

Attribution stayed in the file: the definition’s author field still reads “Brian Corbino”, whose community profile this one grew from—the diffs on top are mine.