Design generators
Three tools that turn numbers you type into a shape you can 3D print. They run on your own machine and send nothing anywhere. They check that the shape can be built, not that your printer can build it.
The discipline all three share
This is the thing that makes these tools different from a CAD package, and it is worth understanding before reading any of the sections below.
Every dimension is entered on a grid of whole pixels and whole layers — widths and lengths in pixels, heights in layers, at the pixel pitch and layer height you choose. A pixel is the smallest step the printer can draw in X or Y: on the BYU printer, one pixel of its projected image (DLP); on the Phrozen Sonic Mighty 12K, one pixel of the LCD screen that masks its UV light. A layer is one Z step of the stage. You choose the grid first, because every number after it is expressed in that grid.
On the BYU preset the grid is the printer’s own; on a Phrozen preset it is the printer’s along one axis only. The BYU printer’s pixels are square, 7.6 µm. The Phrozen 12K’s are not: 19 µm in X and 24 µm in Y. A maker uses one pitch for X and Y alike, so the channel and chamber makers offer the Phrozen as two presets, 19 µm and 24 µm. Each matches the printer’s pixel along one axis; along the other, the printer rounds each length to its own pixel, by up to half a pixel (±9.5 µm in X, ±12 µm in Y). The droplet maker offers the BYU preset and Custom only.
Nothing off-grid is silently accepted. Each dimension has a
µm box as a convenience. Type a real-world value into it and the tool rounds to
the nearest whole pixel or layer, writes the rounded value back, and tells you what it
did; the .json records the number you typed beside the one the files use.
You never end up with a stored dimension the printer cannot address, and you are
never left guessing which number the tool used.
What you type stays as you type it. The results follow a box only once it holds a number it takes: within its range, and whole where it counts pixels or layers. Until then they keep the last number it took, and the line under the box says so. Leave the box, or press Enter, and an empty box gets back the number it held, a number out of range is set to the nearest end of the range, and a fraction in a whole-number box is rounded; the line under the box says which.
Each file has its own units. The .stl is in millimetres.
The .scad is in millimetres too: it builds each length from its whole-pixel
and whole-layer counts and the pitch and layer height set at its top. The
.json gives lengths in micrometres, unless a name says otherwise
(block_mm), with the pixel and layer counts beside them; its
units entry says which is which. When the part is sliced, the printer
rounds every length to its own pixels and layers. See
Hardware and process for the pitches and what
follows from them.
Nothing produced by any of these tools has been printed. Each tool says so on its own page. They are geometry and arithmetic; they have no fabrication result behind them, and no output of theirs has been printed, fluidically tested or measured.
Straight Channel Maker /design/channel/
What it makes. A rectangular block containing one straight rectangular channel running port-to-port at mid-height, or an array of N identical parallel channels on a pitch. By default the ends are closed, with round ports through the roof; the ports can be square instead, and each sits at the very end of its channel so that no channel runs on past a port. Tubing can go into the chip, through a socket cut down from the top face over a narrower round port; into a raised socket, a boss standing on the top face; or over a slip-on post. No tube port or raised connector has been printed or tested. The ends can also be left open at the block faces.
What you enter. Pixel pitch and layer height; channel width and length in pixels and height in layers; wall, floor and roof thicknesses; the number of channels and their pitch; port mode, port shape and port size, and for tubing its diameters, the socket's depth, and a raised connector's height and wall.
What it computes. Cross-section, internal volume, hydraulic resistance, pressure and flow, and Reynolds number, live as you type. For an array it separates the per-channel figure from the total and labels which is which.
What it checks. Geometric self-consistency — whether the solid
you described can exist — and one process rule, h < w, which
comes from the h.r.3.3 PDK’s rectangular-channel component document. That rule
is the validity condition of the flow model, not a printability rule; see
Process limits. On the BYU grid it also compares
the block with the image BYU publishes for the OS1, 2560 × 1600 pixels
(19.5 × 12.2 mm, BYU’s rounded figure; the OS1’s Specs
page, read 2026-09-30), in pixels, either way round, and flags a block bigger
than that both ways without refusing the files. BYU’s figures for the OS1 are on
Hardware and process.
What it refuses to check
Listed by the tool itself, in these words:
- Minimum printable channel width or height for this pixel pitch
- Whether a wall this thin survives printing, washing and handling
- Whether uncured resin will clear from a channel this long and this fine
- Port sealing, connector fit, or tubing interface
- Exposure bleed / Z over-cure closing the channel
- Warp, shrinkage and dimensional accuracy after post-cure
- [on the BYU grid] Whether the finished block fits the BYU printer itself: the comparison above is with the OS1’s published build area
- [on any other grid] Whether the finished block fits the printer’s build area: on this grid no build area is compared, so no size limit is applied here
- Flow distribution across the array: the model assumes every channel is identical and fed equally, and ignores the inlet and outlet manifolds that would actually split the flow
Chamber Chip Maker /design/chamber/
What it makes. A chip carrying up to eight tapered hexagonal chambers, either in series on a single path or as N independent parallel paths. Each chamber opens out over a taper, runs flat at the chamber width, and closes back down over a second taper.
What you enter. The grid; channel and chamber dimensions; taper and flat lengths; chamber count and layout; whether the channel meets the chamber roof, floor or centre; port geometry. Or a target volume in µL, and the tool solves the chamber’s flat length for you.
What it computes. Per-chamber and total volumes, dead-volume fraction, laminar pressure and flow, residence and fill times, and the diffusion time across the chamber depth.
What it checks. Geometric self-consistency, the connectivity the
chosen layout claims, and h < w on the channel. The volume solver
refuses rather than clamping when a target is smaller than the tapers alone
can hold, and says what the minimum reachable volume is. On the BYU grid it also
compares the block with the image BYU publishes for the OS1, 2560 × 1600 pixels
(19.5 × 12.2 mm, BYU’s rounded figure; the OS1’s Specs
page, read 2026-09-30), in pixels, either way round, and flags a block bigger than that both ways without refusing the files. BYU’s figures for the OS1 are on
Hardware and process.
The unsupported chamber roof span is displayed prominently but deliberately not gated: the design kit gives no span limit to gate it against.
What it refuses to check
Listed by the tool itself, in these words:
- Unsupported chamber roof span — whether a [chamber width] mm ceiling on [N] layers will sag, print or fail
- Whether this taper length is sufficient to avoid trapping air on fill
- How far the printed taper wall departs from the true trapezoid once the slicer stair-steps the sloped edge onto the pixel grid
- Whether a wall, floor or roof this thin survives printing, washing and handling
- Minimum printable feature width or height for this pixel pitch
- Whether uncured resin will clear from chambers and channels of this size
- Port sealing, connector fit, or tubing interface
- Exposure bleed / Z over-cure closing the channel or filling the chamber corners
- Warp, shrinkage and dimensional accuracy after post-cure
- Mixing, recirculation or dead zones inside a chamber — residence time here is volume over flow rate, which assumes plug flow that a real chamber does not produce
- Flow distribution across a parallel array: the model assumes every path is identical and fed equally, and ignores the manifolds that would actually split the flow
- [on the BYU grid] Whether the finished block fits the BYU printer itself: the comparison above is with the OS1’s published build area
- [on any other grid] Whether the finished block fits the printer’s build area: on this grid no build area is compared, so no size limit is applied here
Droplet Generator Maker /design/droplet/
What it makes. A planar droplet junction in a rectangular block: either a T-junction, or a flow-focusing cross with a narrow orifice. Every channel is the same depth, every expansion is abrupt, and the junction is an explicit box each arm abuts, so the void volume stays an exact sum of parts.
What you enter. The grid; junction type; arm widths and lengths; orifice width and length; block and wall dimensions; port geometry; and the two flow rates.
What it computes. Nozzle width in µm and pixels, what one pixel of cure error would be worth on it as a percentage, the flow ratio, the capillary number, the Reynolds number and the per-arm channel resistance. A table shows where the reference product line’s catalog sizes — 10, 38, 80 and 140 µm — land on your pitch, with the arithmetic shown and no row labelled pass or fail.
What it checks. Geometric self-consistency and the connectivity the
junction type claims, plus h < w per arm and for the orifice. On the BYU
grid it also compares the block with the image BYU publishes for the OS1, 2560 × 1600 pixels
(19.5 × 12.2 mm, BYU’s rounded figure; the OS1’s Specs
page, read 2026-09-30), in pixels, either way round, and flags a block bigger than that both ways without refusing the files. BYU’s figures for the OS1 are on
Hardware and process.
It does not predict droplet size, frequency or monodispersity, and draws no dripping/jetting verdict. It also states plainly that the PEGDA resin is hydrophilic, so water-in-oil generation is expected to fail by wall wetting in an untreated part, and that no geometry setting fixes that. This tool offers the BYU 7.6 µm preset and Custom only.
What it refuses to check
Listed by the tool itself, in these words:
- Minimum printable feature width — whether a [nozzle width] µm nozzle ([N] px) prints at all on this machine
- Whether uncured resin will clear from an orifice this narrow and this long
- Surface roughness at the orifice, and what it does to pinch-off
- Droplet size, frequency and monodispersity — not predicted by this tool, and no regime (dripping, jetting, squeezing) is classified anywhere on this page
- Whether one pixel of cure error actually occurs: the ± [N] % figure says what a pixel is WORTH on this nozzle, not that a pixel of error happens
- Whether a wall, floor or roof this thin survives printing, washing and handling
- Port sealing, connector fit, or tubing interface
- Exposure bleed / Z over-cure closing the orifice
- Warp, shrinkage and dimensional accuracy after post-cure
- [on the BYU grid] Whether the finished block fits the BYU printer itself: the comparison above is with the OS1’s published build area
- [on any other grid] Whether the finished block fits the printer’s build area: on this grid no build area is compared, so no size limit is applied here