Terrain Slicer

Terrain Slicer

The slicer needs a wide screen to be usable — the parameter column and the sheet preview sit side by side. Open this page on a desktop or laptop, or download the desktop application further down.

Open anyway

The whole application runs inside your browser — the terrain you load never leaves your computer, and nothing is uploaded to a server. The first start takes a few seconds while the Python runtime is fetched and cached; after that it is instant.
Getting started: click load demo terrain. The scale is set so the model fits a sheet; from there, change the material thickness or the number of boards and the sheets redraw as you type.


Terrain Slicer turns a digital terrain model into laser-ready DXF files for a stacked cardboard contour model — in the browser, or as a desktop application.

Open source (GPLv3) · no GDAL, no paid software · everything runs on your own machine

Building a physical terrain model by hand means tracing every contour, cutting every layer, and hoping the stack lines up. This tool does the geometry: you load an elevation raster, set the scale and the material thickness, and it returns the sheets to cut and a report telling you what to glue where.


The method

The output follows the horizontal contour model (offset method) — the workflow documented on this site and previously built in Grasshopper. The idea is that a contour model does not need solid slabs at all.

Contours from the raster

The contour interval follows from the material: board thickness × scale, adjusted for any vertical exaggeration. Slice from the lowest point or from 0 m altitude.

Distributed over N boards

Every board is the full footprint of the model and is cut in place. Board k carries contour levels k, k+N, k+2N and so on.

Each contour cut exactly once

One cutline serves two purposes: it is the back edge of one ring and the outer edge of the ring above it. The pieces come off as rings rather than slabs, which is where the material saving comes from.

Glue references scored, not cut

A lighter score marks where the next ring lands, so the stack self-registers during assembly. The app reports the narrowest glue strip in the model so you can pick the lowest workable number of boards.

Numbered where the number disappears

Layer numbers are engraved into the glue zone, so they are readable while you assemble and hidden once the next ring is on top.

The green glue-reference score isolated on a single board, the other passes faded out
The green pass scores where the next ring lands — a reference, never cut through.
The magenta inner-cut pass isolated on a single board, the other passes faded out
The magenta pass cuts. Each line is both one ring’s back edge and the outer edge of the ring above it.
Diagram of the glue strip: the hatched band between the green score line B and the magenta cutline C2, with widths dimensioned
Between the two lies the glue strip — the band between reference B and cutline C₂. The app reports the narrowest one.
Four boards of one contour model side by side, each carrying every fourth contour as magenta cutlines with green glue-reference scores
One model over four boards, sliced from the demo terrain by this tool: magenta cutlines, green glue references. Each board is the full footprint and carries every fourth contour, so no board is a solid slab.

What comes out

One DXF per material sheet, plus a cutting report listing the parameters, which board sits on which sheet, the contour elevations and the narrowest glue strip. The layers are named and coloured for a laser cutter’s pass list — run them top to bottom, cutting last:

PassLayerDoes
1DLF-01_score_lightContour numbers and blue feature lines
2DLF-02_score_mediumGlue references and green feature lines
3DLF-03_score_strongCyan feature lines
4DLF-04_cut_innerContour cutlines
5DLF-05_cut_outerBoard outline — always last

Input: GeoTIFF elevation rasters and OBJ meshes, plus optional shapefiles for hatched areas, line features and point features.


Download the desktop version

The desktop build is the same application without the browser: it handles larger terrains and bigger files, starts instantly, and needs no Python installation.

Windows, macOSLatest release

Pick the file for your system on the release page: windows‑x64 for Windows, macos‑arm64 for Macs with Apple silicon, macos‑x64 for Intel Macs — not the “Source code” archives GitHub lists alongside them. Unpack and run; no installation. The macOS builds are produced and tested automatically but not yet hand‑checked on a physical Mac.

Download — GitHub Source & licence →

Disclaimer

Terrain Slicer is provided as is, without warranty of any kind — see the GPLv3 licence for the full warranty and liability terms.

Verify before you cut. Always check dimensions, scale, contour interval and sheet layout in the exported DXF files and the cutting report before sending anything to a laser cutter. A wrong parameter can waste a full run of material.

Laser safety is the operator’s responsibility. Operating a laser cutter, choosing safe materials (no PVC or other chlorinated plastics), fume extraction and fire watch are entirely the responsibility of the machine operator and their workshop rules. This software only produces drawings.

Terrain data. You are responsible for having the right to use the elevation data and shapefiles you load. All processing happens locally on your machine, or in your browser in the web version; the software collects and transmits no personal data.

Built on open source, with thanks to the people who maintain it: Python, NumPy, Shapely, ContourPy, tifffile, ezdxf, FastAPI, Pyodide, three.js, the Hershey stroke fonts, and the Source Sans 3 and Quattrocento Sans typefaces. Developed by Digital Landscapes with AI assistance.