# Revit Context Menu

> Add Autodesk Revit right-click context menu entries with the Nice3point.Revit.Extensions fluent API. USE FOR: registering context menu items, submenus, and separators bound to command classes during application startup. DO NOT USE FOR: ribbon panels and buttons (use revit-ribbon).

- Skill: `nice3point/revit-context-menu` (Agent Skill)
- Install (CLI): `npx skillmds@latest add nice3point/revit-context-menu`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nice3point/revit-context-menu/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- License: MIT
- Author: nice3point (https://skillmd.com/u/nice3point)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nice3point/revit-context-menu

---


# Revit Context Menu

`ConfigureContextMenu` (from `Nice3point.Revit.Extensions`) wraps the raw context-menu registration into a fluent call.
Register the menu once during application startup.

## When to use

- Adding entries to Revit's right-click context menu, bound to command classes.

## When not to use

- Building ribbon panels and buttons — use `revit-ribbon`.

## Workflow

### Step 1: Configure the menu

`AddMenuItem<TCommand>` binds a menu item to a command type; `AddSeparator` inserts a divider; `AddSubMenu` nests a `ContextMenu`.

```csharp
application.ConfigureContextMenu(menu =>
{
    menu.AddMenuItem<AnalyzeCommand>("Analyze selection");
    menu.AddSeparator();

    var exportMenu = new ContextMenu();
    exportMenu.AddMenuItem<ExportCommand>("Export selection");
    menu.AddSubMenu("Export", exportMenu);
});
```

Use the `ConfigureContextMenu(title, configuration)` overload to title the menu group.

### Step 2: Verify

Right-click in Revit and confirm the items and submenu appear and each invokes its command.

## Validation

- [ ] The menu is configured once during application startup.
- [ ] Items bind to command types via `AddMenuItem<TCommand>`.
- [ ] Submenus are built as a `ContextMenu` and added with `AddSubMenu`.

## Common Pitfalls

| Pitfall                                            | Correct approach                                                  |
|----------------------------------------------------|-------------------------------------------------------------------|
| Registering context menu items through the raw API | Use `ConfigureContextMenu` with `AddMenuItem<TCommand>`.          |
| Expecting `AddSubMenu` to take a lambda            | Build a `ContextMenu` and pass it to `AddSubMenu(name, subMenu)`. |
| `ConfigureContextMenu` not found                   | The `Nice3point.Revit.Extensions` package is not referenced.      |

