Model workbench
A React block (a whole screen) in Beamline's Research & design app.
A CAD model's workbench around a large isometric scene of its bodies, each shaded from its material's appearance with a soft ground shadow and an axis triad. History is the feature timeline (each step's glyph, what it made and its value); choosing two or more steps opens a merge that previews its impact (steps that become one, the sketches they use), asks whether to keep or delete those sketches, warns that undo will stop at the merged step and marks it, and leaves history untouched when the engine fails. Transform docks on the scene: move the selection by a numeric offset, or in copy mode leave a copy at each placement, with the ghost and the offset drawn; a copy with no offset is refused and Cancel adds no step. Project draws a body's outline onto a sketch, linked to the source or independent, said before and after; a sketch on the same body is refused and an engine error is reported. The inspector shows the selection's material, size, volume, mass and position; bodies can be hidden; the material library shows lit spheres of the materials visible bodies use (a material used only by hidden bodies leaves that list, never the catalogue) or all of them by category, keeps its filter across the Design and Visualize workspaces, and shows the preview rendering after a material is given.
Use it for
- Panels around a CAD or 3D scene: history with merge, transform with copies, projection and materials.
- Showing what a modelling operation will change before the engine runs it.
Not for
- A 2D drawing canvas (drawing-board).
- Generating images (image-studio).
Anatomy
- bar: the document with body and step counts and the total mass; tool (Select, Transform, Project); workspace (Design, Visualize)
- history: the feature timeline, each step with its number, kind glyph, what it made, its kind and its value; a projection's link or independence; where undo stops; the footer's Merge n steps (with Clear) opens the impact, keep or delete sketches, the undo warning, Cancel and Merge
- scene (the focal object): an isometric grid with each body shaded from its material, a soft ground shadow, the selection edged in the accent, a transform's ghosts dashed with the offset drawn; the view and units, the selection and whether a material is rendering, the axis triad
- transform (docked at the scene's foot): Move or Copy, X, Y, Z offsets in millimetres, how many copies were placed, Cancel and Place a copy or Move
- project (docked at the scene's foot): the source outline, Onto sketch, Stay linked to the source with what that means, Project, linked or independent said
- inspector: the selected body's material sphere, name, finish, size, volume, mass and position
- side: bodies with their material swatch, mass and a visibility eye; materials Used in view or All, by category, as lit spheres with how many bodies use them
States
- history chosen, impact preview, keep or delete sketches, merging, merged (undo boundary), engine failure, merge cancelled
- move mode, copy mode, ghost preview, copy placed, numeric offset, cancelled, copy with no offset refused
- projection source chosen, target chosen, linked preview, independent preview, invalid target, committed, engine error
- materials used in view, all, by category, a body hidden takes its material out of Used in view, rendering after assigning
- narrow room: the scene leads, then the docked tool, the inspector, bodies, materials and history
Keyboard
- Tab reaches every step, body, tool and material; Space or Enter chooses a step for the merge and selects a body
Motion
Ghosts and selections ease their opacity; a history row's choice and hover ease their fill. Nothing runs at rest.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
name (required) | string | — | The document's name. |
bodies | Body[] | — | |
defaultBodies | Body[] | — | |
onBodiesChange | ((bodies: Body[]) => void) | — | |
history | HistoryNode[] | — | |
defaultHistory | HistoryNode[] | — | |
onHistoryChange | ((history: HistoryNode[]) => void) | — | |
sketches | Sketch[] | — | |
defaultSketches | Sketch[] | — | |
onSketchesChange | ((sketches: Sketch[]) => void) | — | |
materials (required) | Material[] | — | The library; give each an `appearance` colour so the scene shades bodies as the material, and a `density` for mass. |
defaultSelected | string[] | — | |
defaultTool | "project" | "select" | "transform" | — | |
defaultWorkspace | "design" | "visualize" | — | |
onMerge | ((nodeIds: string[], keepSketches: boolean) => Promise<unknown>) | — | Merges history steps; resolve when the engine has; reject (an engine failure) to leave history as it was. |
onProject | ((sourceBodyId: string, sketchId: string, linked: boolean) => Promise<unknown>) | — | Projects the source body's outline onto a sketch; reject on an engine error. |
onAssignMaterial | ((bodyIds: string[], materialId: string) => Promise<unknown>) | — | Assigns a material; resolve when the preview has rendered. |
locale | string | — | |
className | string | — | Classes on the documented visual root; no override by default. |
style | CSSProperties | — | Inline styles on the documented visual root; no overrides by default. |
ref | Ref<HTMLDivElement> | — | Receives the documented native target or imperative handle; omitted by default. |
defaultTransform | TransformDraft | — | The transform's mode and offset when the tool opens. |
Built from
- segmented-control
- checkbox
- popover
- radio-group
- number-field
- select
- switch
- button
Dependencies
lucide-react
Import
import { ModelWorkbench } from "@beamline/model-workbench";
Get it
Model workbench is part of Beamline UI. Install the parts you need in your React app as compiled packages or editable source. Get Beamline · Connect your agent
More in Research & design
- Research synthesis: A research study turned into evidence in one place. Transcripts: passages marked as accepted highlights or as the assistant's suggestions (dashed)…
- Study setup: Set up an unmoderated test and its screener. Test: what's tested (a website, a prototype by its share link, an app by its store page), who takes it…
- Study flow: A study's blocks in order, each with where people go next. A block that routes by its answer (multiple choice, scale, open question, prototype task) has…
- Participant review: One participant's session, answer by answer, beside the list of everyone who took the study. The list filters (finished, left early, with a recording)…
- Click heatmap: One screen of a usability task as it looked (your prototype's frame or a page built from your parts, scaled into a phone) with where people clicked over…
- Tree test: A tree test: build a navigation tree and read where people went. Build: pages added at the top or under any page, indented under the page above or moved…
- Prototype task: A prototype task in a study. The linked prototype refreshes from the design keeping the task and paths (a start screen gone from the new version said, a…
- Task results: A usability task's results, from headline outcomes down to paths and screens. Outcomes (direct success, indirect success, gave up) say their share and…
- Matrix question: A matrix question and the participant's side of it, side by side. Rows (up to ten) share one set of choices (two to seven); Enter adds a row, several…
- Prototype review: Reviewing a design file's clickable prototype. Present: the board on a stage with its wireframe, the flow chosen (an unavailable one can't be), Back…
- Report builder: Build a chart from your metrics without code: choose metrics, how to group them over time, an optional breakdown, filters, the range and the chart, see…
- Report library: A business's reports in one place. The directory: reports by topic and group with search, each with what it answers; one this person can't open says why…
- Review page builder: Building the page reviewers use to go through records one by one. The queue of records (one with no title shows its id instead of a blank); the record as…
- Database builder: What a database does for the people who use it, built in one place. Templates: starting values per property (a relation default points at an existing…
- Workflow builder: Automation rules for a SaaS without code: a trigger, conditions built with the query builder that branch into Yes and No, actions and waits, drawn as a…
- Workflow library: The automation library: every automation as a row (what starts it, whether it's live, a draft or paused, who owns it, when it last ran, and its runs this…
- Drawing board: A whiteboard a team already knows how to use, like FigJam: tools in a floating bar at the bottom (Select V, Hand H, Sticky note S, Shape R/O/D, Connector…
- Component properties: A design system component from three sides. Its variants as a matrix on two chosen properties, the others filtering it, each cell drawing the variant; a…
- Slot editor: Slots in a design system component, from making to filling. The main component's layer tree with a checkbox per layer: a nested frame converts to a slot…