Fillet
A 2D fillet rounds the corner where two sketch edges meet: the edges are trimmed back and a tangent arc fills the gap.
In the viewport
- Click Fillet on the sketch toolbar. The Fillet dialog opens docked on the right with a Selection slot and a Radius field.
- Click the two edges that share the corner — or every edge whose corners you want rounded. Picks accumulate as chips; click a picked edge again, or a chip's ✕, to drop it. The dialog counts what it found (4 corners will be filleted) and previews the arcs in blue.
- Type the Radius and click Apply.
The tool does not write a fillet() call. For each corner it writes a real arc() plus the constraints that make it a fillet: two coincident (the arc's ends onto the trimmed edges), two tangent, one radius dimension on the first arc and equal across the rest. In the same edit, each edge's corner end moves to where the arc touches it and the corner's old coincident is removed.
Constraints that held the corner itself are kept on a point() left at the corner and held on both edges, a virtual sharp. This covers a corner pinned to the origin or an axis, a width measured corner to corner, and a rectangle centred through its corners. A rectangle drawn from the origin keeps that corner there, and its width and height still measure the sharp outline. Rounding never changes the shape's size or position. The arc and its radius stay editable afterwards: drag the arc or change the radius label.

The code behind it
By hand the derived form is shorter: one fillet(radius, ...lines) call rounds every corner the listed lines share. It is written after the constraints, like every derived operation.
import { sketch, line, circle, fillet } from 'fluidcad/core';
import { coincident, horizontal, vertical, fix, distance, diameter } from 'fluidcad/constraints';
sketch("xy", () => {
// A mounting plate, 100 × 60, with two screw holes.
const b = line([0, 0], [100, 0]);
const r = line([100, 0], [100, 60]);
const t = line([100, 60], [0, 60]);
const l = line([0, 60], [0, 0]);
coincident(b.end(), r.start());
coincident(r.end(), t.start());
coincident(t.end(), l.start());
coincident(l.end(), b.start());
horizontal(b);
vertical(r);
horizontal(t);
vertical(l);
fix(b.start(), [0, 0]);
distance(b.start(), b.end(), 100);
distance(r.start(), r.end(), 60);
const h1 = circle([20, 30], 8);
const h2 = circle([80, 30], 8);
diameter(h1, 8);
diameter(h2, 8);
// The derived form: one call rounds every corner the listed lines share.
// The lines are trimmed and a tangent arc of radius 12 fills each corner.
fillet(12, b, r, t, l)
})
By hand
fillet(radius, l1, l2) // one corner
fillet(radius, l1, l2, l3, l4) // every corner the lines share
Outside a sketch, fillet() rounds the edges of solids — the 3D counterpart on the Fillet page.