Pin and unpin by category
The Pin / UnPin menus under BimSpeed.GEN → Align set element pinning by category in the current Revit document. They do not limit processing to the current selection or active view.
The ribbon, Pin/UnPin command classes and PinController were reviewed in source. The installed commands have not been exercised in the 23 October 2026 Revit session. The exercises below are proposed checks; no new runtime images, output counts or practice download are claimed.
Run with the intended scope
- Copy your RVT and open the copy for practice.
- Choose the category. For a few individual elements, select them and use Revit's own Pin command; these BIMSpeed commands scan the document.
- Open Pin or UnPin, then choose the category.
- Inspect an element in the active view and another element of the same category on a different level or view. Checking the current selection alone does not establish document-wide success.
Every choice
Pin sets Pinned = true; UnPin sets Pinned = false. Elements already in the target state are left as they are. This controller has no spacing, quantity or level filter inputs.
| Choice | Source scope | Check |
|---|---|---|
| Grids | OST_Grids | Select a grid and inspect pin state |
| Levels | OST_Levels | Inspect a level in elevation or section |
| Sections | OST_Viewers | Inspect the view marker; the technical scope is the Viewers category |
| Elevations | OST_Elev | Inspect an elevation marker |
| Tags | Categories whose names contain Tag | Check tags in multiple views and their state after Undo |
| Sheets | Views returned by GetAllPlacedViews() on every ViewSheet | Check separately; see the limitation below |
| Columns | OST_StructuralColumns | Check structural columns; architectural columns are a different category |
| Framings | OST_StructuralFraming | Inspect framing on multiple levels |
| Floors | OST_Floors | Inspect a floor outside the active view |
| Walls | OST_Walls | Inspect an editable wall |
| Foundations | OST_StructuralFoundation | Check foundations; this does not include every floor |
| Generic Models | OST_GenericModel | Inspect a Generic Model instance |
| Elements Has Volume | Instances with a HOST_VOLUME_COMPUTED parameter | Check actual categories; the condition is parameter presence, not positive volume |
| Rebars | OST_Rebar | Select a Rebar element and inspect pin state |
| Groups | Elements of class Group | Inspect group instances; this does not establish individual member pinning |
| Link / Links | OST_RvtLinks instances | Check the link instance in the host file; linked-file contents are not modified |
Separator is a divider. Although the JSON retains a command value on these entries, RibbonUtils recognizes the Separator name and creates a divider instead of a command button. Some registered tooltips do not match their buttons, so verify the chosen command and installed version.
Sheets limitation
The controller obtains View IDs placed on sheets and sets Pinned on those Views. It does not directly collect Viewport instances. This guide therefore does not claim that the command locks viewport positions. Inspect the actual viewport and use Revit's Pin on that viewport where needed.
Tags and Undo
Tags iterates categories whose names contain Tag and opens a transaction for each category. Several Undo steps may be needed. Inspect the Undo list and representative tags; do not assume one Ctrl+Z restores all tags.
Practice: grids in two views
Prepare two grids visible in different views. Record their initial state, run Pin → Grids, then inspect both. Run UnPin → Grids and inspect again. Source behavior predicts the requested state for editable grids. This exercise has not been completed in the current capture session.
Pinning can be reversed with UnPin; it is not an access-control mechanism. Save the RVT to preserve model changes.
Elements that do not change
Category processing, Groups and Elements Has Volume catch errors per element and continue. Group members, unsupported elements and elements that cannot be edited may be skipped without a detailed result table. Sheets does not have the same per-element exception handling and needs a separate result check.
For an unchanged element, check its category, worksharing editability and group membership. Compare before/after states and Undo behavior before saving the practice copy.