Skip to main content
A body is a node in the document that holds a shape. There are three kinds. The constructor takes a kind, its parameters and options:

Identity

Each body has an ogId. Pass your own in the options, or let the SDK make one. Use it to find the body again, for example in a picking result or a STEP report.

Inputs stay separate

An operation reads its inputs when you call it. The result does not follow them later:
  • The wire that you extruded stays a separate body. Changing it later does not change the solid.
  • The tools of an operate call stay separate, live solids. Moving or disposing a tool later does not change the target.
  • A body is drawn only if you add it to the scene.

Shapes, copies and instances

A body points to a shape. Two ways make a second body from the first: getInstanceCount() gives the number of bodies that share the shape. makeUnique() gives a body its own copy, so you can edit it alone. Instances are cheap: the kernel stores the shape and its display mesh once.

Edits

Shape edits change the body in place and give its shape a new revision:
  • solid.operate(...): booleans and shell.
  • body.rebuild(kind, params): new parameters. A wire stays a wire and a solid stays a solid. An earlier operate result is gone, so call operate again after it.
  • body.mirror(plane): a reflection across a plane.

Dispose

Call dispose() on a body or an assembly that you no longer need. A disposed body throws Disposed on every call. If a mark is live, a rollback can bring the body back. clone() gives a display copy for Three.js only, with no kernel shape. copy() throws; use duplicate().
Last modified on November 10, 2026