3D printing, Rust
Arachnid
A slicer for STL, OBJ and 3MF that optimises for wall-clock print time rather than for nominal speed numbers.
- 8m 23s
- For the reference Benchy, against 19m 10s from Bambu Studio 2.8.
- 25,203
- Moves in that file, where Bambu Studio emits 73,000.
- 1.35 s
- To slice it.
Why it exists
Measuring a real Bambu A1 print, instead of trusting the slicer's estimate, shows that at full speed only about half the wall-clock time is spent moving at the commanded feedrate. The rest is cornering, ramping and travel.
Raising the outer wall speed from 200 to 400 mm/s then changes almost nothing if the head never reaches 200. What does change things is emitting fewer, longer, smoother moves, so Arachnid spends its effort on path shape.
| Bambu Studio 2.8 | Arachnid | |
|---|---|---|
| Estimated time | 19m 10s | 8m 23s |
| Filament | 6.88 g | 7.13 g |
| Moves | 73,000 | 25,203 |
| Travel | 26.2 m | 12.9 m |
| Time at commanded feedrate | 51% | 39% |
| Slicing wall time | 4 s | 1.35 s |
3DBenchy, 225,706 triangles, 0.24 mm layers, 1 wall, 6% infill, Bambu A1 profile. Both files were scored by the same motion simulator, which reproduces Bambu Studio's own estimate for its own file to within 0.4%.
The real toolpath
Layer viewer
The same file the 3D model at the top of this page is built from: benchy_xF.gcode, sliced by Arachnid 0.1.0. Drag the slider to step through all 186 layers.
- Layer
- 0
- Height
- 0
- Bead on this layer
- 0
How the paths are shaped
- Arc fittingA curve emitted as 700 tiny segments is 700 junctions for the planner to slow down at. As one G2 move it is a single junction.
- SimplificationPaths are simplified before arc fitting, at a tolerance well under one extrusion width.
- Infill along the long axisSolid infill runs along the longest axis of the region instead of a fixed 45 degrees, because a diagonal raster in a narrow pocket is all turnaround and no cruise.
- Monotonic serpentineRaster lines are ordered so consecutive lines connect end to end instead of hopping.
- Morphological openingA near-vertical wall leaves a hair-thin ring of false solid when each layer is subtracted from the next. On a Benchy, rasterising that noise was two thirds of the print time.
- Acceleration where it paysM204 flushes the planner. Declaring travel acceleration before a two millimetre hop cost more than it saved: 18,000 flushes on a quality Benchy.
Why a faster number often changes nothing
Volumetric ceiling
Every speed is clamped so the flow stays inside what the hot end can melt. Change the numbers and watch the feed that reaches the file.
- Feed that reaches the file
- 0
- Ceiling
- 0
- Bead cross section
- 0
Presets
| Preset | Layer | Walls | Top and bottom | Outer speed | Benchy |
|---|---|---|---|---|---|
| xspeed | 0.28 | 1 | 1 and 1 | 500 | 5m 41s |
| speed | 0.28 | 1 | 2 and 1 | 450 | 8m 29s |
| standard | 0.20 | 2 | 2 and 2 | 250 | 16m 39s |
| quality | 0.16 | 3 | 6 and 5 | 110 | 39m 57s |
| xquality | 0.12 | 3 | 8 and 6 | 80 | 57m 16s |
| quiet | 0.16 | 3 | 6 and 5 | 60 | 82m 27s |
Layer height in millimetres, speed in millimetres per second. xspeed is the only tier that makes no trades: everything that costs time and buys surface finish is off.
Beyond planar slicing
- Non-planar infillOver a receding patch, one tilted pass whose Z climbs with XY replaces a stack of planar infill layers. Walls stay planar. A tilt is rolled back if it would put back less bead than it deletes.
- Nothing prints in mid airEvery extrusion begins on ground and ends on ground. Where a void has no ground, a web of struts is built across it first.
- SeaportConsecutive printing on one plate: the bed cools, the finished part is pushed off by the body of the toolhead, and the next part starts on a different patch of sheet. Parts that cannot be pushed safely are refused with the reason.
- Strength modeTell it which way the part is loaded and it chooses the print orientation, points the infill along the load and places the walls on the load path.
- MulticolourA flush matrix works out how much of the old colour to purge from the two colours involved. On a plate that alternates black and white, that is 78 mm of purge in one direction and 277 mm in the other.
- SendingJobs go to the printer over the local network by FTPS and MQTT, with no cloud account needed.
Studio
Arachnid Studio is the graphical front end, a fork of Cura. Its engine backend is replaced outright and shells out to the Arachnid binary. The settings panel is rendered from a table in the bridge code, so a setting added to the engine appears in the interface without anyone editing QML.