A modal WPF editor running on the Revit API execution context — query the live document, preview fetch results, and validate buttons in real time. No round-trips. No reloads.
A full-featured WPF window managing the palette data lifecycle — creation, editing, validation, and delegation configuration.
Left sidebar lists every palette from config.json. Switching palettes animates the content area. Each palette has independent tabs, buttons, and meta settings.
config.json registryCreate tabs as Custom, Doc Fetch, Template Fetch or Folder Fetch. Rename and delete inline. Drag tabs to reorder — order persists to data file.
Drag-to-reorderAdd family buttons, action buttons, separators, or batch-import from a folder. Edit all fields inline. Select rows to reorder within a tab.
Family · Action · Separator · BatchFor fetch tabs, the editor calls the live Revit API (it runs modal on the API thread) to preview exactly which buttons would be generated.
Live Revit API · Cached per-selectionScans all buttons for issues: missing icons, missing source files, invalid action parameters, unresolvable families, and orphaned meta entries.
Per-palette or all · CategorizedScans a folder for .rfa files and auto-creates one button per family with auto-detected label, category, and source path.
Folder scan · Auto-label · Per-version RFTConfigure prime admin, editor password and per-user bypass list, Action Pack trust, and add-to-palette permissions.
Password protect editor · Per-user rolesVisual editor for the Palette Delegation engine. Add, reorder, and configure per-rule palette assignment and document/user criteria.
Priority rules · Criteria builderEvery field tracks its loaded state via CaptureLoadedState(). IsDirty enables Save/Reset. Resetting reverts all fields to the last-saved snapshot.
Per-row dirty tracking · Undo4 light (Hazy Sky, Paper Slate, Sea Mist, Dust Red) + 4 dark (Midnight Blue, Graphite Green, Plum Neon, Charcoal Orange). Auto-matched to Revit's UI preference.
4 light + 4 dark · PersistedDialog shows all available action IDs from built-in and loaded Action Packs. Selecting an action auto-populates the parameters panel.
Action registry · Auto-paramsToggle to enable or disable family on fetch to auto load. When disabled the Editor uses cached families until Reload (F5) is clicked.
Live · CachedEach tab can use a different data source. The editor exposes all configuration fields for each format.
Fully hand-authored button list. Every row is defined directly in the palette data file. Use this for curated, project-specific palettes where you control every label, icon, and configuration. Add a single family or batch of families.
As part of custom tab, run built-in or custom actions directly from palette buttons, not just family placement commands. Each Action buttons have unique parameters dedicated to their purposes.
Queries the active Revit document using configured categories and filters at palette load time.
Auto-scans a template or project file (rte / rvt ) and builds buttons from it
Scans a folder for .rfa family files and builds buttons automatically at load time.
Scans a folder for .rfa family files and builds buttons automatically at load time.
Configuration Fields
The Batch Family Dialog automates bulk button creation from a folder of RFA files.
Click Batch Import in the editor toolbar. The dialog opens and immediately scans the configured folder for .rfa files.
One row per family with auto-detected label, category, and family name. Edit any row before importing.
Optionally specify .rft template paths or enable per-version overrides (template_path_2023 through template_path_2027).
Active Document (already loaded), External Document (from a .rvt), or External Family (from .rfa directly).
Click Import. Rows are appended to the current tab. Changes are dirty-tracked until you click Save.
Scan at any time to find broken buttons, missing icons, invalid parameters, and orphaned meta entries before users encounter them.
The Health Checker is powered by PaletteValidationService. It produces a PaletteHealthReport with categorized issues across all buttons and tabs, scoped to either the current palette or every palette in the config.
4 light + 4 dark themes. Each defines a complete set of surface, accent, text, and border colors. Active theme is persisted and auto-matched to Revit's UI preference.
Light Themes
Dark Themes
The editor follows WPF accessibility conventions and provides multiple ways to interact with every feature.
Every theme defines TextPrimary and TextMuted computed for legibility on its background. Dark themes use desaturated light text; light themes use near-black on white surfaces.
All editor forms are keyboard-navigable. Tab order follows visual layout. Dialogs return focus to the parent window on close.
The editor status bar always shows the result of the last operation — saves, errors, validation results, and fetch preview counts.
Save and Reset buttons are only enabled when a row has pending changes (IsDirty = true). Closing with unsaved changes triggers a confirmation prompt.