Stage, the control surface

Stage (Visualization subcategory) is the canvas-level hub for working with a toolpath. Drop one, wire your target list into T, and it renders the robot at the last target in the Rhino viewport. But there's much more: double-click it for the Stage form.

Drop the Stage component on the canvas and double-click it to open the form:

The Stage component in Grasshopper: a green node labeled Stage with target and robot inputs on the left (T, All, Real, R, Tm, E, Tl, Tr, Ar, Fr, Pay, Hld) and outputs on the right (M, TCP, Ax, S, T, Tc, Tr)

The form (double-click to open)

The Stage form window: a target scrubber (target 33 of 80) with Play, speed and Loop controls, live TCP and J1 to J6 joint readouts, an all-OK status with a License button, and joint-angle curves plotted against their limits with a scrub cursor

Timeline

Per-joint spark plots

Below the readout, one row per joint shows the joint's trajectory across the toolpath in degrees. Annotations:

For richer analysis (axis flip detection, wrist / elbow / shoulder singularity warnings), click Open Analysis ↗ at the footer , launches the full Analysis form over the same data.

License button

Top-right of the header. Opens the license-activation panel: status (Free / Personal / Educational / Expired), paste-token textbox, Activate / Deactivate buttons, and links to buy or claim educational tier. See Generating code for how the free-tier export cap works vs. licensed output.

Keyboard shortcuts

KeyAction
SpacePlay / Pause
/ Step one target backward / forward
EscClose the form

Canvas-driven scrub (without the form)

You can also drive Stage's scrub from the canvas, wire a Number Slider with range 0.0 .. 1.0000000 into Stage's Time (Tm) input. The value maps to the nearest target index (round(t × (N-1))). Useful for:

Priority when multiple scrub sources are active:

  1. Form open → form's slider wins (canvas Time temporarily ignored).
  2. Else: wired Time input.
  3. Else: Show All input toggled true → overlay all poses.
  4. Else: render last target only.

Opening the form from a canvas with a wired Time input initializes the form's slider at the wired position, no jarring jump. Closing the form returns control to the wired Time, or (if no Time is wired) keeps the form's last scrub position as the persistent render position.

Outputs at a glance