Move fixtures under a grouping fixture (or back to the top level)
gma3_patch_moveMoves fixtures into a grouping fixture's children or back to the stage top level while preserving FIDs, addresses, names, groups, presets, and 3D placement.
Instructions
Moves fixtures into a grouping fixture's children (parent: its FID), e.g. the rig under the MA Show Start's grouping fixtures FID 1-8, or back to the stage's top level (parent: "root"). FIDs, addresses, names, groups and presets are kept. The console asks how to keep the 3D placement: position "absolute" (default) keeps each fixture's place and rotation in the world; "relative" keeps its offset from the parent (the fixture moves with the parent's position and rotation). With a parent at the origin and unrotated both are the same. Pre-checks (nothing sent on failure): every FID exists, holds no fixtures itself, all share one parent (the top level or one top-level grouping fixture) in one stage, and the target is another top-level grouping fixture of that stage (type Grouping) or the top level. Move fixtures with different parents in one call each. In the copy: Cut, ChangeDestination, Paste, and the console's "Move Fixtures" dialog answered by the bridge, each step checked before the next (a failure cancels the dialog). The isolation check compares fixtures without their list positions, because a move renumbers the fixtures after the moved ones. Runs one patch session through the patch edit copy, never a dialog: read-only pre-checks (command line at Root, the copy closed, so nobody is in the Patch menu, no modal open, plus the tool's own checks), then enter the copy, apply the change there, an isolation check, commit, and read back. Requires exclusive: true. Patch changes need exclusive use of the console: the isolation check compares fingerprints of the copy and the live patch, left out the touched FIDs, over several seconds. It is best-effort detection of someone else's changes, not a guarantee, and on a mismatch nothing is committed and the copy is left open for the operator. A committed patch change has NO UNDO (Oops does not revert it). Takes about 10 s (mostly the isolation check). When a session cannot be finished, the copy is closed again only if it provably holds no change; otherwise the result says copyLeftOpen: true and the command line stays inside the edit patch with no Patch window open: the operator keeps the copy by typing ChangeDestination Root at the console (no way to discard it without the Patch menu is known). Needs bridge 0.19.0; a session in a stage with a Name needs bridge 0.45.0. verify compares each fixture with its state before the session: parent, address, name, its groups, and its 3D pose (absolute: in the world; relative: to the parent). A clean success lists each fixture as {fid, parent: [before, after]} in items (detail: true for the poses, groups and rows). Needs bridge 0.42.0.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fids | Yes | Fixture IDs to move (1-256), all with the same parent. | |
| detail | No | Return the full result on a success too: every step's detail and each fixture's state before and after (default false: a clean success, committed and read back matched or not requested, lists one entry per fixture in items; anything else is always returned in full). | |
| parent | Yes | FID of the target grouping fixture, or "root" for the top level of the stage. | |
| verify | No | Read the patch back after the commit and compare (default true). | |
| position | No | How the 3D placement is kept (default "absolute": the place and rotation in the world). | |
| exclusive | No | Required, must be true: confirms nobody else uses the console while this runs (see the description). Without it the call is refused and nothing is sent. |