Parametric open-cell gyroid lattice for aquarium bio-media or dog-dish inserts. Bicontinuous channels let water flow while hosting biofilm / catching debris.
Install scikit-image into ./_deps using Blender’s Python (not system Python):
cd ~/Documents/gits/gyroid_filter
BLENDER_PY=/Applications/Blender.app/Contents/Resources/5.2/python/bin/python3.13
"$BLENDER_PY" -m pip install scikit-image --target ./_deps- Open Blender 4.x / 5.x
- Scripting → Open
gyroid_water_filter.py→ Run Script - Press
N→ Gyroid Filter tab → Build Gyroid Filter - Export: File → Export → STL
BLENDER=/Applications/Blender.app/Contents/MacOS/Blender
# Aquarium cartridge
"$BLENDER" --background --python gyroid_water_filter.py -- \
--shape cylinder --radius 40 --height 60 --cell 12 --wall 1.2 \
--export "$(pwd)/gyroid_cylinder.stl" \
--blend "$(pwd)/gyroid_cylinder.blend"
# Dog-dish insert
"$BLENDER" --background --python gyroid_water_filter.py -- \
--shape bowl --radius 55 --height 35 --cell 14 --wall 1.4 \
--export "$(pwd)/gyroid_bowl.stl" \
--blend "$(pwd)/gyroid_bowl.blend"- Add CUSTOM_SHAPE Guide (or create any closed mesh)
- Keep the object named
CUSTOM_SHAPEand sculpt it to your dish / cartridge outline - Build with Shape → Custom — the gyroid is intersected with that volume
| Param | Meaning |
|---|---|
| Cell size | Gyroid period (mm). Larger → bigger pores, freer flow |
| Wall | Shell thickness (mm). Aim ≥ 1.0 for FDM |
| Resolution | Voxel size (mm). Smaller → smoother, heavier mesh |
| Level | Gyroid offset (0 = classic) |
- PETG / ASA / food-safe resin as appropriate for water contact
- Rinse thoroughly before use
- Mechanical / biofilm media only — not a sterilizer