Revolute
A revolute mate is a hinge: the two connectors share an origin and a Z axis, and the second part is free to rotate about it. It is the joint of a lever on a pivot, a door on its hinge, a wheel on an axle.
| Free motion | rotation about Z |
|---|
In the viewport
- Click Revolute on the assembly toolbar and pick the two connectors — the fixed part's pivot first, then the swinging part's.
- The part snaps onto the pivot. Drag it in the viewport and it swings about the axis.
- Rotate sets the rest angle in degrees (30° in the picture); Limits bound the swing (degrees); Offset shifts the hinge point in the driver's frame — any axis, so a lever can hinge beside a connector rather than on it.
- Click Apply. The joint's row in the Joints panel offers Animate…, which sweeps the angle between the limits — see Animating a joint.

The code behind it
The lever's pivot frame is a plane connector at its pivot hole, facing down like the underside it lies in, so it meets the plate's upward bore frame face-to-face and the lever sits flat on the plate. The pin is a second, fastened mate:lever.part.js
pin.part.js
import { assembly, insert, mate } from 'fluidcad/core';
import { plate } from './asm-plate.part.js';
import { lever } from './asm-lever.part.js';
import { pin } from './asm-pin.part.js';
export const leverAssembly = assembly('lever-assembly', () => {
const base = insert(plate).grounded();
const arm = insert(lever).translate(0, 0, 40);
const pivotPin = insert(pin).translate(0, 0, 70);
// Revolute leaves one degree of freedom: rotation about the shared Z.
// The lever's pivot frame lands on the plate's bore frame, so the lever
// lies on the plate and swings about the bore. .rotate() sets the rest
// angle and .limits() bounds the swing, both in degrees.
mate('revolute', base.connectors.bore, arm.connectors.pivot).rotate(30).limits(-45, 45);
// The pin is fastened to the lever, head seated over the hole — it
// swings with the lever.
mate('fastened', arm.connectors.pinSeat, pivotPin.connectors.head);
});
Options
mate('revolute', base.connectors.bore, arm.connectors.pivot)
.rotate(30) // rest angle, degrees about the shared Z
.limits(-45, 45) // swing bounds, degrees
.offset(0, 0, 2) // lift the hinge 2 along the driver's Z
.flip() // hinge from the other side
The pivot axis
The axis is the connectors' Z. A face connector on the face the part rests on gives a hinge perpendicular to that face — the usual case. For a hinge along an edge, put the connector on the edge itself: a straight-edge frame has Z along the edge, a circular-edge frame has Z along the circle's axis.