Skip to main content

Fuse

Fuse joins two or more solids into one. Everything the solids cover between them stays; the walls where they overlap disappear. Use it when bodies were kept apart on purpose — with the New tab, or because they came in from a STEP file — and now have to behave as one piece.

In the viewport

  1. Click Boolean on the toolbar and stay on the Fuse tab.
  2. Click each solid you want to join. Clicking any face or edge picks the whole solid, and each pick lands in the Solids slot as a numbered chip.
  3. Click Apply.
The Boolean dialog on the Fuse tab with two solids picked
  1. 1
    Fuse tab
    Chooses the operation. Switching tabs keeps the solids you have already picked, so you can try one and change your mind.
  2. 2
    Solids
    Takes as many solids as you like — two is the common case. The blue border means this slot is armed, so the next pick lands here.
  3. 3
    The chips
    One per solid, numbered in pick order — that is the argument order in the statement. The grey number is the line the solid was made on; the arrow jumps there, the ✕ drops the pick, and clicking a solid that is already listed drops it too.
  4. 4
    Apply
    Writes fuse(…) and replaces the picked solids with the result. Exit closes the dialog and writes nothing.

Two cubes that share a corner, before and after:

BeforeBefore modetwo solids

Two cubes sharing a corner. Each one still draws its own edges through the other, and the Shapes panel lists two rows.

AfterAfter modefuse(a, b)

One solid, one outline. The faces inside the shared corner are gone and the Shapes panel lists a single row.

The code behind it

The two cubes go in and one staircase-shaped body comes out. Nothing else about the model changes — a fuse only removes the walls where the solids overlapped.

cubes.part.js
import { sketch, line, extrude, fuse } from 'fluidcad/core';
import { coincident, distance, fix, horizontal, vertical } from 'fluidcad/constraints';

// Cube A. The four lines and the constraints that hold them square are what
// the Rectangle tool writes; `fix` pins one corner, the two `distance`s size
// the square.
sketch("xy", () => {
const bottom = line([-30, -30], [30, -30]);
const right = line([30, -30], [30, 30]);
const top = line([30, 30], [-30, 30]);
const left = line([-30, 30], [-30, -30]);
coincident(bottom.end(), right.start());
coincident(right.end(), top.start());
coincident(top.end(), left.start());
coincident(left.end(), bottom.start());
horizontal(bottom);
vertical(right);
horizontal(top);
vertical(left);
fix(bottom.start(), [-30, -30]);
distance(bottom.start(), bottom.end(), 60);
distance(right.start(), right.end(), 60);
});
const a = extrude(60);

// Cube B. The same square, shifted 30 mm along X and Y, so the two cubes
// share a 30 x 30 x 60 corner.
sketch("xy", () => {
const bottom = line([0, 0], [60, 0]);
const right = line([60, 0], [60, 60]);
const top = line([60, 60], [0, 60]);
const left = line([0, 60], [0, 0]);
coincident(bottom.end(), right.start());
coincident(right.end(), top.start());
coincident(top.end(), left.start());
coincident(left.end(), bottom.start());
horizontal(bottom);
vertical(right);
horizontal(top);
vertical(left);
fix(bottom.start(), [0, 0]);
distance(bottom.start(), bottom.end(), 60);
distance(right.start(), right.end(), 60);
});
const b = extrude(60).new();

fuse(a, b);
// One solid out. The faces inside the shared corner are gone; the outline is
// the staircase both cubes together fill.

Code forms

import { fuse } from 'fluidcad/core';

fuse(a, b) // join two solids
fuse(a, b, c) // any number
fuse() // every solid in the current context

The result is a single solid that later features treat as one body. Its new geometry — the faces and edges that only exist because the solids met — is reachable through the feature's accessors:

const f = fuse(a, b)
f.internalEdges() // edges created where the inputs met
f.internalFaces()

Fuse or just let them touch?

You rarely need fuse() for material you are creating right now: the Add tab already merges a new extrusion, revolve or sweep into whatever it touches. That is auto-fusion, and it covers most modelling.

fuse() is for solids that already exist side by side. If two of your bodies should never merge — because they are different components — a part() is the better tool: shapes fuse inside a part and never across parts.