Skip to main content

Grounded

A grounded instance does not move. It is the reference frame the solver places everything else against — the part you would bolt to the bench. Ground exactly one instance per mechanism; the joints carry the rest.

In the viewport

  • Right-click an instance's row in the Parts panel and choose Toggle grounded. A ground glyph appears on the row and .grounded() is chained onto its insert() statement. Toggling another row moves the glyph — and the chain — there.
  • A grounded instance ignores the transform gizmo and every mate: it stays where its .translate() / .rotate() put it.

Grounded base plate with a standoff fastened to one hole

The code behind it
grounded-example.assembly.js
import { assembly, insert, mate } from 'fluidcad/core';
import { plate } from './asm-plate.part.js';
import { standoff } from './asm-standoff.part.js';

export const groundedExample = assembly('grounded-example', () => {
// Exactly one thing is grounded: it is the frame everything else is
// solved against. Ground the part you would bolt to the bench.
const base = insert(plate).grounded();

// An ungrounded instance is free until a mate places it. The pose
// written here is only where it starts.
const post = insert(standoff).translate(0, 0, 40).name('Front-left standoff');

mate('fastened', base.connectors.hole1, post.connectors.foot);
});

Why one

Mates are relative. With no grounded instance the whole cluster is free and the solver leaves it where the inserts placed it; with two grounded instances joined by a mate the mate has nothing to move and reports a conflict. A base with a hinged lever grounds the base; a lever hinged to a free frame grounds nothing and hinges to an assembly connector instead.

Sub-assemblies

Inside an assembly() body, .grounded() marks the anchor of that body's frame. Whether the anchor is fixed in the world depends on the parent:

Parent statementResult
insert(sub)The occurrence is free; nothing inside it is world-grounded.
insert(sub).grounded()The occurrence's frame is pinned; the instances it declared grounded are pinned with it.
A body with no declared anchor, inserted groundedIts first instance is pinned as a fallback.

Grounding therefore reads top-down: a sub-assembly says "this is my base", and each parent says whether that base stands still.