Getting started

From download to a repaired, remeshed and verified part in a few commands.

1. Download and install

Get the archive for your system from the download page, check it against SHA256SUMS, unpack it and put betti on your PATH:

sha256sum -c SHA256SUMS --ignore-missing
tar xzf betti-v0.20.0-linux-amd64.tar.gz
install -m 755 betti-v0.20.0-linux-amd64/betti ~/.local/bin/betti
betti version

On Windows, unzip the archive and put betti.exe in a folder listed in PATH. On macOS, if the system refuses to open a downloaded program, allow it under System Settings, Privacy & Security.

2. Find your way

betti help              # every command, by module
betti fix               # a module's commands
betti help fix repair   # a command's usage, flags and examples

Core commands are at the top level, as in betti info; every other module's commands are under its name, as in betti mesh remesh. The docs carry the same text as the built-in help.

3. Sign in

Core commands (info, box, verify, convert, run) are free and need no sign-in. For the other modules, sign in and ask for the ones you need:

betti access login
betti access
betti access request fix mesh -note "preparing parts for CFD"

See access and licensing for more.

4. First commands

See what a file is: its size, parts, holes, crossings and element quality.

betti info part.stl

Repair it into closed, outward-facing solids, then remesh it into even triangles of 1% of its size:

betti fix repair part.stl fixed.obj
betti mesh remesh -size 1% fixed.obj even.obj

Check the result against the input: distances between them, sharp edges kept, and the same topology.

betti verify part.stl even.obj

Have a STEP model? Check it, heal it, or mesh it watertight with each triangle tagged by its CAD face:

betti cad check part.step
betti cad heal part.step healed.step
betti cad mesh part.step part.vtu -size 2

Every command takes -json to print its result as JSON, -q to print nothing but errors, and -v to show its stages and their times. Ctrl-C stops a command within moments, and a file is written whole or not at all.

5. Chain steps with run

betti run runs steps one after another on a mesh kept in memory and writes the last one's mesh. Steps are commands with their flags, separated by +:

betti run part.stl out.obj fix repair + mesh remesh -size 1% + shape defeature -size 2

Put steps in a recipe file, one to a line, with # starting a comment, and run it with -recipe. A save step writes the mesh as it is at that point:

# clean-for-print.txt
fix repair
save repaired.obj
mesh remesh -size 1%
additive place
betti run part.stl ready.3mf -recipe clean-for-print.txt

The steps a chain can take are listed on the run page.

6. File formats

FormatExtensionReadWrite
Wavefront OBJ.objyesyes
OFF.offyesyes
PLY.plyyesyes
Gmsh.mshyesyes
VTK unstructured grid.vtuyesyes
3MF.3mfyesyes
STL.stlyesno
STEP (CAD module).stepyescad heal only

Formats are chosen by extension. STL is read but not written: its single precision can make faces cross. Quads are kept in OBJ, OFF and PLY. Particle and sphere commands write their own formats for SPH and DEM codes; see particles fill, particles clump and particles spheres.

7. Lengths

Lengths are absolute, in the file's units, or a percentage of the part's bounding-box diagonal:

betti mesh remesh -size 2 part.stl even.obj     # edges about 2 long
betti mesh remesh -size 1% part.stl even.obj    # edges about 1% of the part's diagonal

Percentages make a command work the same on parts of any size and unit.