Guides
Guides are construction geometry: drawn and constrained like everything else, visible in the viewport, but left out of the profile when the sketch becomes a face. Use them for layout circles, centre lines, mirror lines and anything you constrain against but do not want extruded.
In the viewport
- Latch the Guide button on the sketch toolbar.
- Draw as usual — every shape committed while the latch is on is written with a
.guide()suffix and renders in the construction style. - Unlatch to go back to profile geometry. The latch also releases when the toolbar hides.
An existing shape can be turned into a guide by adding .guide() to its statement in the editor.

The code behind it
plate.part.js
import { sketch, circle, line, origin } from 'fluidcad/core';
import { coincident, equal, fix, diameter } from "fluidcad/constraints";
// A hex nut outline: a hexagon laid out on a guide circle, with the bore.
sketch("xy", () => {
// The circumscribing circle is a guide — it sizes the hexagon and
// stays out of the profile.
const layout = circle([0, 0], 100).guide()
coincident(layout.center(), origin());
diameter(layout, 100);
const s1 = line([50, 0], [25, 43.30127]);
const s2 = line([25, 43.30127], [-25, 43.30127]);
const s3 = line([-25, 43.30127], [-50, 0]);
const s4 = line([-50, 0], [-25, -43.30127]);
const s5 = line([-25, -43.30127], [25, -43.30127]);
const s6 = line([25, -43.30127], [50, 0]);
coincident(s1.end(), s2.start());
coincident(s2.end(), s3.start());
coincident(s3.end(), s4.start());
coincident(s4.end(), s5.start());
coincident(s5.end(), s6.start());
coincident(s6.end(), s1.start());
// Every vertex rides the guide circle …
coincident(s1.start(), layout);
coincident(s2.start(), layout);
coincident(s3.start(), layout);
coincident(s4.start(), layout);
coincident(s5.start(), layout);
coincident(s6.start(), layout);
// … and equal sides make it regular.
equal(s1, s2);
equal(s2, s3);
equal(s3, s4);
equal(s4, s5);
equal(s5, s6);
fix(s1.start(), [50, 0]);
// The threaded bore.
const bore = circle([0, 0], 50);
coincident(bore.center(), origin());
diameter(bore, 50);
})
By hand
circle([0, 0], 100).guide()
line([0, 0], [100, 100]).guide()
Constraining against guides
A guide is a full solver entity. The hexagon above rides its guide circle through coincident(s1.start(), layout); a centre held somewhere along a construction line is:
sketch("xy", () => {
const diag = line([0, 0], [100, 100]).guide() // construction line
const c = circle([30, 30], 20) // real geometry
coincident(c.center(), diag) // centred somewhere on the diagonal
})
Alignment reference

The code behind it
plate.part.js
import { sketch, circle, origin } from 'fluidcad/core';
import { coincident, diameter, equal } from "fluidcad/constraints";
// A three-bolt flange: the holes sit on a guide pitch circle.
sketch("xy", () => {
const rim = circle([0, 0], 110);
const bore = circle([0, 0], 36);
coincident(rim.center(), origin());
coincident(bore.center(), origin());
diameter(rim, 110);
diameter(bore, 36);
// The pitch circle is a guide: visible for layout, excluded from the profile.
const pitch = circle([0, 0], 80).guide();
coincident(pitch.center(), origin());
diameter(pitch, 80);
// Three bolt holes, each centred on the pitch circle.
const h1 = circle([40, 0], 12);
const h2 = circle([-20, 35], 12);
const h3 = circle([-20, -35], 12);
coincident(h1.center(), pitch);
coincident(h2.center(), pitch);
coincident(h3.center(), pitch);
diameter(h1, 12);
equal(h1, h2);
equal(h1, h3);
})
Guides and the other tools
- A target-less
offset()skips guides; pass them explicitly to offset them. - Text along a path usually follows a guide, so the path does not end up in the extrusion.
- A guide line is the natural mirror line.
- Projections are marked
.guide()for the same reason: the reference outline stays out of the profile.