File formats
Each tool gives you three files describing the same shape: an editable 3D design file, a file ready to 3D print, and a file listing every setting you chose.
At a glance
| file | what it is | what opens it |
|---|---|---|
.scad |
An editable 3D design file. Change a number and the shape changes. | OpenSCAD |
.stl |
The same shape, ready to send to a 3D printer. | Any slicer or mesh viewer |
.json |
A list of every setting you chose and every number the tool worked out. | Any text editor |
.scad — parametric OpenSCAD
The geometry expressed as parameters you can change, rather than a frozen mesh. Open it, edit a number at the top, press F5, and the part updates.
Millimetres. Its lengths come out in millimetres, worked out from whole-pixel and whole-layer counts and the pitch and layer height set at its top.
Standalone. The file carries no use<> and no
include<>. Everything it needs is in the one file, so it renders
wherever you put it and does not depend on a library being installed or on any
surrounding directory.
Renders clean. It renders in OpenSCAD 2021.01 with zero warnings.
The design-tool verifiers treat any line of OpenSCAD output containing
WARNING or ERROR as a failure, so a file that warned would
not ship.
view_mode — and why it cannot affect your part
The file has a view_mode parameter with two values:
| value | what you see |
|---|---|
"part" |
The real solid. The thing that gets printed: an opaque block with the fluid network as internal voids. |
"ghost" |
An inspection view. The block is drawn transparent and the fluid network is shown in colour inside it, so you can see the channels you cannot otherwise see. |
Ghost is preview-only. It is guarded by OpenSCAD’s
$preview, which is true in the F5 preview and false in an F6 render. So
F6 and STL export always give you the real part, whatever
view_mode is set to. You cannot accidentally export the inspection view,
and you cannot accidentally export the fluid network as a solid.
This is checked rather than asserted: scripts/verify_scad_ghost.py
renders every case in both modes and compares the exported geometry, its volume, its
bounding box and its Euler characteristic. A guard failure would change all of them.
.stl — the mesh
| property | value |
|---|---|
| Encoding | Binary |
| Units | Millimetres |
| Orientation | Z up |
| Origin | The block’s minimum corner |
Hand-constructed and watertight. The mesh is built triangle by
triangle in the browser from the same geometry the .scad describes. No
CSG library is involved — there is no boolean solver to produce a near-miss
intersection, a sliver face or an inverted normal. Every case the verifiers cover is
asserted watertight, consistently wound and of positive volume, with its volume
checked against a closed-form expression computed independently of the mesh.
Origin at the minimum corner means the part sits in the positive octant, so a slicer places it on the build plate without you having to move it first.
.json — the record
Every input parameter, and every value the tool computed from them, in one file.
Lengths are in micrometres unless a name says otherwise, with the pixel and layer
counts beside them; its units entry says which is which.
It exists for reproducibility. A .stl tells you the
shape but not the intent; the JSON tells you which pitch was selected, what was typed
versus what the grid rounded it to, and what the tool reported back. Keep it beside
the geometry and the design can be reconstructed and re-derived later, including the
parts of it that were a judgement call.
Its asked_and_used entry lists every number box shown when the file was
made, by the name the tool’s address gives it: the number asked for and its
unit (um for a length typed into its µm box), and the number the
files use and its unit. A channel width typed as 301 µm on the BYU grid,
7.6 µm a pixel, reads "asked": 301, "asked_unit": "um", "used": 40, "used_unit": "px",
"used_um": 304; typed as 305 µm, it reads 305 asked and the same
40 px used.
Files attached to library entries
The three formats above are what the generators produce. Entries in the library are a separate matter: each carries its own set of files attached to that entry, and the set varies from entry to entry. What an entry offers is listed on its own page, under Files to download.