Skip to main content

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

  1. Latch the Guide button on the sketch toolbar.
  2. Draw as usual — every shape committed while the latch is on is written with a .guide() suffix and renders in the construction style.
  3. 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.

A hex nut outline laid out on a guide circle

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

A three-bolt flange: holes on a guide pitch circle

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.