098 Find Painted Elements

Chris McKeown / July 1, 2025

Painting

~6 min read1,275 words
0 views

Overview

Find Painted Elements scans every element in the selected scope and checks whether any of its geometry faces are painted. Matching elements are listed in a grid with their ID, name, category, and level. From the grid, you can isolate specific elements in the active view or bulk-remove paint from all faces — including sub-faces created by split-face operations. This is the essential cleanup tool for removing unwanted paint, auditing what has been painted, and preparing models for handover or coordination.

98 Find Painted Elements dialog — grid of painted elements with controls

Table of Contents


Key Features

  • Scans elements for painted faces including split-face sub-regions (face.GetRegions())
  • Grid columns: Id, Name, Category, Level, Select
  • Three scope options: Current View (default), Current Selection, Entire Project — scope changes auto-reload the grid
  • Select Selected — toggles the Select state of highlighted rows
  • Select All / Select None — bulk check/uncheck
  • Isolate — isolates selected elements temporarily in the active view (transaction: "Isolate")
  • Filter (Isolate grid) — hides unselected rows from the grid for focused review
  • Reset — reloads the grid
  • Remove Paint button — removes all paint from faces of selected elements (transaction: "Remove Paint")
  • Remove Split Faces checkbox — when enabled, also removes paint from face.GetRegions() sub-faces
  • Progress bar with Cancel — cancelling on Remove Paint performs a full rollback of unpainted changes
  • Export CSV / Export Excel
  • Completion message: "X passed. Y failed."

Requirements

  • Must be run in a project document (not a Family document)
  • The selected scope must contain elements with solid geometry faces
  • A valid Kiwi Codes Bonus Tools licence must be active

Running the Tool

Launch

Find Find Painted Elements on the Bonus Tools Ribbon or use 115 Search Tools.

Bonus Tools Ribbon — Find Painted Elements highlighted


Step 1 — Set the scope

Choose which elements to scan:

OptionBehaviour
Current ViewScans elements visible in the active view (default) — grid reloads automatically
Current SelectionScans only elements in the current Revit selection — grid reloads automatically
Entire ProjectScans all elements in the model — may take longer on large projects

The grid populates automatically when you change the scope selection.

Find Painted Elements — grid populated with painted elements


Step 2 — Review and select elements

Each row in the grid represents one element that has at least one painted face. Columns:

ColumnDescription
IdRevit element ID
NameElement name
CategoryRevit category of the element
LevelLevel the element is associated with
SelectTick to include this element in operations

Use the helper buttons to manage selection:

  • Select Selected — toggles the Select state on highlighted rows (click a row then click this button)
  • Select All / Select None — checks or clears all rows
  • Isolate (grid) — removes unchecked rows from the grid display to focus on your selection
  • Reset — reloads the grid from the current scope

Step 3 — Isolate in view (optional)

Click Isolate to temporarily isolate the checked elements in the active view. This uses Revit's Isolate Elements Temporary mode (transaction: "Isolate") so you can visually inspect the painted elements in context.


Step 4 — Remove paint

Enable Remove Split Faces if you want to remove paint from sub-faces created by split-face operations in addition to the primary faces.

Click Remove Paint. The tool processes each selected element using a SubTransaction per element:

  1. Iterates over all solid faces of the element
  2. Calls RemovePaint on any face where IsPainted returns true
  3. If Remove Split Faces is enabled, also calls RemovePaint on each sub-face from face.GetRegions()

The outer transaction is named "Remove Paint". If Cancel is clicked during processing, the entire transaction rolls back — no partial changes are retained.

When complete: "X passed. Y failed."

If the transaction could not be committed due to a worksharing conflict: "Paint Rooms failed. Gain ownership of elements and try again."


Tips and Best Practices

  • Use Current View scope for targeted cleanup. Open a view that shows only the elements you want to clean, run the tool, select all, and remove paint — without touching the rest of the project.
  • Enable Remove Split Faces when cleaning up after split-face workflows. The Split Face command creates sub-regions on faces that may be painted independently. Enable this checkbox to catch all painted sub-faces.
  • Use Isolate in view before removing paint. Confirm visually which elements will be affected before clicking Remove Paint. The temporary isolation lets you check the element set in context.
  • Cancel is fully safe. If you accidentally start a Remove Paint run, clicking Cancel will roll back all changes, leaving the model exactly as it was.
  • Export the grid before cleaning. Export CSV/Excel to create a record of which elements had paint before the cleanup — useful for audit trails or if you need to re-apply paint later.

Common Use Cases

Cleaning up paint before model handover — Run on the Entire Project scope, select all, and remove paint to deliver a clean model without remnant paint from development work.

Auditing painted elements in a received model — Open a consultant model, run on Entire Project, and review the grid to understand what faces have been painted and why.

Removing stale Room Paint Bomb results — After room layouts change and boundaries shift, old paint may remain on boundary faces that are no longer relevant. Find Painted Elements locates them all so you can clean up efficiently.

Checking for accidental paint on structural elements — Filter the grid by Category or Level to identify structural elements with unexpected paint that might cause rendering or quantity takeoff discrepancies.

Split face cleanup — After a design change, faces that were split and painted no longer match the design intent. Enable Remove Split Faces and run to remove both primary and sub-face paint in one pass.


Troubleshooting

Grid is empty after loading No elements in the selected scope have any painted faces. Try switching to Current View or Entire Project scope, or check that Room Paint Bomb has been run.

Some expected elements are missing from the grid Elements must have solid geometry faces accessible via the Revit geometry API. Some system family elements or abstract elements may not expose solid geometry and will not appear even if they have paint.

"Paint Rooms failed. Gain ownership of elements and try again." A worksharing conflict prevented the Remove Paint transaction from committing. Gain ownership of the affected elements using Revit's SWC/Relinquish workflow, then re-run.

Paint is removed from some elements but not others after running Each element uses a SubTransaction. If a specific element's SubTransaction fails (e.g. read-only element), that element's paint is not removed but others succeed. Check the Output log for red entries identifying which elements failed.

"Operation Failed." An unexpected exception occurred outside the SubTransaction handling. Check the Output log for details. Try running on a smaller scope or a single element to isolate the problem.