Home / Guides / Assay
QA / QC panel

BIMIO Assay

Model quality audit and full inventory in a single scan, with a self-contained HTML report.

Overview

Assay is BIMIO's model quality auditor. In a single scan it sweeps the active model and detects the issues a BIM manager reviews before every delivery: accumulated Revit warnings, in-place families, imported CAD, raster images, purgeable content, RVT links that are unloaded, unpinned or hidden in views, unpinned levels and grids, unenclosed, unplaced or duplicate-numbered rooms, views without a template, orphan views, sheets without a title block or with duplicate numbers, manually hidden elements, per-element graphic overrides, annotation overlaps, dimensions with faked values and models dumped onto a single workset.

Beyond the list of issues, the same scan builds a complete inventory of the project: every sheet, every view, every model element and every annotation, with its worksharing authorship (who created it, who last modified it and who currently owns it). Everything is summarised in a health score from 0 to 100 with a grade from A to F.

Assay only detects: it never modifies the model. You can navigate from each finding to the element in Revit to fix it yourself, and export the results to a self-contained HTML report (it works without internet access) or the list of issues to a CSV ready for Excel.

Who it's for

BIM managers and coordinators who audit models before a delivery or a coordination exchange, and architects or modellers who want to locate and fix the quality issues in their own model.

Requirements

  • Revit 2022, 2023, 2024, 2025 or 2026 with the BIMIO suite installed.
  • An open project document (the scan runs on the active model).
  • To see authorship (Author, Last modified by, Owner) in the inventory, the model must be workshared (worksharing enabled); in non-workshared models those columns show N/A.
  • Purgeable content detection is only available in Revit 2024 or later.

Where to find it

BIMIO tabQA / QC panelAssay button

You can leave the window open while you work in Revit (it is modeless). If you click the button again, the same window is reused instead of opening another one.

The window centres over Revit and minimises and restores together with it.

Key concepts 11 terms

Scan
A full run of the audit: nine model health checks plus the inventory, all in a single read-only pass. The result replaces that of the previous scan.
Issue
Each individual finding of the audit: a manually hidden element, a fake dimension, an unpinned link, a Revit warning type, and so on. Each issue has a severity, area, kind, detail and a fix recommendation.
Severity
How serious the finding is, on four levels: Critical (almost certainly hides incorrect data, for example a dimension with manual text), Error (a clear integrity problem), Warning (worth reviewing) and Info (an informational note, often intentional).
Area
Thematic grouping of the issue: Graphics, Annotations, Links, Visibility, ModelHealth, Content, Coordination and Standards. It helps you see where the findings are concentrated.
Kind
The specific type of finding (HiddenInView, FakeDimension, RogueLink, ModelWarning, InPlaceFamily, DuplicateSheetNumber, etc.). You can filter by kind in the side panel.
Inventory
An exhaustive listing of what the project contains: sheets, views, model elements and annotations, each with its category and its worksharing authorship. It does not flag problems: it catalogues.
Placed view
A view placed on at least one sheet. The per-view sweeps (annotation overlaps, hidden elements, overrides, fake dimensions, hidden links) only visit placed views: they are the ones that get printed and therefore the ones that matter for the delivery.
Orphan view
A view that is not placed on any sheet. In the inventory it is marked with Yes in the Orphan column; it is usually a working view, not necessarily a defect.
Fake dimension
A dimension whose visible value is manual text (Value Override) instead of the real measurement. Assay shows what the dimension says and what it actually measures, and flags it as Critical. Chained dimensions are checked segment by segment.
Model health score
A number from 0 to 100 with a grade from A to F. It starts at 100 and subtracts capped, severity-weighted penalties: Critical findings weigh more than Errors, Warnings are softened with a square-root curve and KPIs in Poor or Watch status subtract a little more. Info does not penalise.
Health metrics
Quantitative KPIs of the model (number of Revit warnings, in-place families, imported CAD, raster images, links, unpinned datums, sheets, etc.) with a Good, Watch or Poor traffic light. They are included in the HTML report.

The interface

The window (titled BIMIO · Assay) is organised into three bands: a header with the project name, the date of the last scan and the health score; a row of five KPI cards (CRITICAL, ERROR, WARNING, INFO and INVENTORY ITEMS); and the body, split between a filter side panel on the left and the results table on the right. An invisible splitter between the two lets you resize the side panel by dragging.

The Issues / Inventory toggle at the top of the side panel switches between the two tables. Each mode has its own filters, and the search box remembers the text for each mode separately, so you can switch back and forth without losing the state of either. The KPI cards are clickable: clicking a severity card isolates that severity in the table (and clicking it again restores all of them), and clicking INVENTORY ITEMS switches to Inventory mode.

Assay's main window after a scan: header with the health score, five KPI cards with counters, filter side panel in Issues mode and issues table with coloured severity labels.
assets/shots/assay/fig-02.pngAssay's main window after a scan: header with the health score, five KPI cards with counters, filter side panel in Issues mode and issues table with coloured severity labels.
Assay's main window after a scan: header with the health score, five KPI cards with counters, filter side panel in Issues mode and issues table with coloured severity labels.
HeaderShows the Assay title, the project name, the date and time of the last scan with the number of views visited, and the health score (Model health NN / 100 · grade X) coloured green (80 or more), amber (60 to 79) or red (below 60).
KPI cardsFive counters: CRITICAL, ERROR, WARNING and INFO (number of issues per severity) and INVENTORY ITEMS (catalogued items). The first four filter the table when clicked (solo mode); the fifth opens Inventory mode.
Issues / Inventory toggleA two-position pill at the top of the side panel. Issues shows the issues table with its filters; Inventory shows the project catalogue with its own.
Filter panel (Issues mode)Three groups of checkboxes with counts: Severity (Critical, Error, Warning, Info), Kind (finding types present in the scan) and Views (views with findings, with a text box to narrow the list of checkboxes). Each group has All and None buttons to tick or untick everything at once.
Filter panel (Inventory mode)A kind selector with four chips (Anno, Model, Sheet, View, each with its count) and checkbox groups for Category, Family · Type (both with a text box to narrow the list), Author, Last modified by, Owner and Orphan. The Orphan group offers the Yes (orphan) and No checkboxes, which only appear if there are items in that group. All groups have All and None buttons.
Search bar and row counterAbove the table, case-insensitive. In Issues it searches severity, kind, view, element, detail and ID, plus the finding title and the element's Revit category (the Area and Recommendation columns are not searched). In Inventory it searches kind, name, category, authors and ID. On the right, the number of rows visible after the filters is shown.
Issues tableColumns: Severity (coloured label), Area, Kind, View, Element, Detail, Recommendation, Count and ID. You can sort by any column, and resize and reorder columns. Double-clicking a row selects the element in Revit and zooms to it. The context menu (right-click, only in this table) offers Select in Revit, Zoom to and Copy element ID.
Inventory tableColumns: Kind, Name, Category, Author, Last modified, Owner, Orphan and ID. Double-clicking a view or sheet opens it in Revit; double-clicking any other element selects it and zooms to it.
Navigation buttons (side-panel footer)Select in Revit selects in the model the elements of the rows ticked in the active table; Zoom to frames the first of them. Views and sheets are skipped because Revit does not allow adding them to the selection set.
Actions bar (right-hand footer)Export CSV (enabled when there are issues), Export HTML (enabled when there are issues or inventory) and Scan, the primary button that starts or repeats the audit.
Progress dialogA Working… window that appears during the scan: it shows the current phase (scanner name and step), the overall percentage and a Cancel button. The bar starts in indeterminate mode until the first real percentage arrives, and the dialog closes on its own when finished.

Step-by-step workflows 7 workflows

1

Run the model audit

5 steps

Goal. Scan the active model and obtain the list of issues, the inventory and the health score.

  1. Open the model you want to audit in Revit and go to the BIMIO tab.
  2. Click the Assay button in the QA / QC panel.The BIMIO · Assay window opens. If it was already open, it comes back to the foreground with the results of the previous scan.
  3. Click Scan (blue button, bottom right).The Working… progress dialog appears with the current phase and percentage. The quick model health checks run first and the view-by-view sweeps (annotation overlaps, graphics and overrides) last; the inventory closes the pass.
    Progress dialog with the phase Scanning view 12/48 and the bar at 40 per cent.
    assets/shots/assay/fig-03.pngProgress dialog with the phase Scanning view 12/48 and the bar at 40 per cent.
  4. Wait for the dialog to close on its own.In large models the per-view sweep and the inventory can take several minutes. You can click Cancel at any time.
  5. Review the header and the KPI cards.The header shows the scan date, how many placed views were visited and the Model health NN / 100 score with its grade. The cards indicate how many issues there are per severity and how many items the inventory catalogues.
    Header and KPI cards with the health score in amber and the per-severity counters.
    assets/shots/assay/fig-04.pngHeader and KPI cards with the health score in amber and the per-severity counters.
Result. A complete list of issues sorted by severity, the project inventory and a health score from 0 to 100 with a grade from A to F.
  • The scan is read-only: Assay never touches the model, so you can run it with confidence on a workshared model.
  • The per-view sweeps only visit views placed on sheets. If a working view does not appear in the results, it is because it is not on any sheet.
  • If one specific check fails, the rest carry on: you will see an Info row with the text Scanner did not complete instead of losing the whole scan.
2

Review and filter the detected issues

6 steps

Goal. Narrow the list of issues to focus on what matters: one severity, one finding kind or a specific view.

  1. Make sure the side-panel toggle is set to Issues.
  2. Click a severity KPI card (for example CRITICAL) to isolate that severity.The table shows only those issues. Click the same card again to restore all four severities. You can also tick and untick the checkboxes in the Severity group manually.
  3. Narrow by finding kind with the checkboxes in the Kind group.Each checkbox shows its count in brackets. The All and None buttons tick or untick the whole group.
  4. Narrow by view with the Views group.If there are many views, type in the group's text box to filter the list of checkboxes itself and tick only the ones you are interested in. Project-scope issues (with no associated view, such as Revit warnings) are not affected by this filter.
  5. Use the search bar above the table for free-text searches.It searches severity, kind, view, element, detail and ID, and also the finding title and the element's Revit category; the Area and Recommendation columns are not searched. The counter on the right indicates how many rows remain visible.
    Issues table filtered by Critical severity with the search text applied and the row counter.
    assets/shots/assay/fig-05.pngIssues table filtered by Critical severity with the search text applied and the row counter.
  6. Sort the table by clicking any column header.A second click reverses the order. You can also resize and reorder columns by dragging them.
Result. A narrowed view of the issues, ready for triage: each row includes the finding's detail and a specific fix recommendation.
  • The Issues and Inventory filters are independent: you can switch between the two modes without losing the state of either.
  • The Count column groups repeated findings: for example, a Revit warning type that fires 340 times appears as a single row with its count.
3

Locate an issue in the model and fix it

5 steps

Goal. Jump from a table row to the affected element in Revit to fix it.

  1. Double-click the issue's row.Revit selects the element (and its related element, if there is one, as in an overlap between two annotations) and zooms to it, opening a suitable view if it is not visible in the current one. Project-scope rows (for example a purgeable count) have no element to jump to.
    Revit with the finding's element selected and framed after the double-click.
    assets/shots/assay/fig-06.pngRevit with the finding's element selected and framed after the double-click.
  2. To act on several rows at once, select them in the table (Ctrl or Shift + click) and click Select in Revit in the side-panel footer.All the elements of the ticked rows are selected in Revit, ready to pin, move to a workset or fix in bulk.
  3. Click Zoom to if you only want to frame the first of the selected elements.
  4. If you prefer to work with the ID, right-click the row and choose Copy element ID.The Issues table's context menu also offers Select in Revit and Zoom to. Copy element ID copies the IDs of all the selected rows separated by commas, ready to paste into Revit's Manage → Inquiry → Select by ID.
  5. Fix the issue in Revit following the Recommendation column and click Scan again to verify it.The results do not refresh on their own: they are a snapshot of the moment of the scan.
Result. The problem element located and fixed in the model, and a new scan confirming the finding has gone.
  • If you deleted the element after the scan, double-clicking simply does nothing: Assay ignores IDs that no longer exist instead of raising an error.
  • Views and sheets cannot be added to the Revit selection; for those, use double-click from Inventory mode, which opens them directly.
4

Browse the project inventory

6 steps

Goal. Explore everything the model contains (sheets, views, elements and annotations) and find out who created and who modified each item.

  1. Click Inventory in the side-panel toggle (or click the INVENTORY ITEMS card).The table switches to the catalogue and the side panel shows the inventory filters.
    Assay window in Inventory mode with the four kind chips and the table of catalogued items.
    assets/shots/assay/fig-07.pngAssay window in Inventory mode with the four kind chips and the table of catalogued items.
  2. Choose which kinds to see with the four chips: Anno, Model, Sheet and View.Each chip shows its count and toggles on or off with a click. The Kind group's All and None buttons switch all four on or off at once.
  3. Narrow by Category or by Family · Type with their checkbox groups.Both groups have a text box to filter the list of checkboxes itself when there are many entries.
  4. Filter by authorship with the Author, Last modified by and Owner groups.They only have values in workshared models. Author is who created the element, Last modified by is who last synchronised it and Owner is who currently owns it.
  5. Use the Orphan group to keep only the views that are not on any sheet (Yes (orphan) checkbox) or to exclude them (No checkbox).
  6. Double-click a sheet or a view to open it in Revit, or any other element to select it and zoom to it.
Result. A filterable catalogue of the project with authorship traceability for every sheet, view, element and annotation.
  • The inventory excludes internal system categories (constraints, automatic sketch dimensions, materials, viewports and the like) so as not to clutter the list.
  • Filtering by Author is the quickest way to answer the classic question of who created all this in the model.
5

Export the HTML report

4 steps

Goal. Generate a self-contained report to share the audit with the team or attach it to a delivery.

  1. With a scan loaded, click Export HTML in the actions bar.The button is enabled when the scan has found issues or inventory.
  2. Choose a folder and name in the save dialog and click Save.The suggested name is BIMIO_Assay_report.html.
  3. Open the file in any browser.It needs no internet access or auxiliary files: styles, charts and data are embedded in a single HTML file. It works on locked-down corporate networks and can be sent by email.
    Assay HTML report open in a browser: health score ring, severity cards and filterable findings table.
    assets/shots/assay/fig-08.pngAssay HTML report open in a browser: health score ring, severity cards and filterable findings table.
  4. Navigate the report's sections: Overview, Health metrics, Issues and Inventory.Overview includes the score with a narrative, a severity donut, rankings by area and by kind and an area × severity matrix. Issues is a table with search, filters by severity, area and kind, and column sorting; it also highlights the views with the most findings. Inventory only appears if there are catalogued items, with filters by kind, category and author and a checkbox to show orphans only. There is a global search and a light / dark theme toggle in the top bar.
Result. A single HTML file with the whole audit, readable offline in any browser and ready to archive or share.
  • The report's tables render 600 rows per filter combination: if you see the first 600 notice, narrow with the filters to see the rest.
  • In huge models the report embeds at most 25,000 inventory rows (it says so honestly as first N of M) so the file size does not balloon.
6

Export the issues to CSV

3 steps

Goal. Take the issues list into Excel or a BIM issue log to assign and track them.

  1. With a scan that has found issues, click Export CSV.The button is only enabled if there is at least one issue (the CSV does not include the inventory).
  2. Choose a folder and name and click Save.The suggested name is BIMIO_Assay_issues.csv.
  3. Open the file in Excel.It is written in UTF-8 with BOM, so accented characters display correctly when you open it directly in Excel. One row per issue with the columns Severity, Category, Kind, View, RevitCategory, Element, Detail, Recommendation, Count, ElementId, RelatedElementId and Author, sorted from most to least severe.
Result. A CSV with every issue from the scan, ready to filter, assign owners and track fixes in Excel.
  • The ElementId column lets you locate each element in Revit again with Select by ID, even weeks after the scan (provided the element still exists).
7

Cancel a scan and scan again

3 steps

Goal. Interrupt a long scan without closing Revit and repeat the audit when it suits you.

  1. During the scan, click Cancel in the progress dialog.The button is disabled and the text changes to Cancelling — waiting for the current step to finish…: cancellation waits for the current step to finish, so it can take a few seconds.
  2. Wait for the dialog to close.A cancelled scan does not load partial results: the table keeps whatever there was from the previous scan, but exporting that scan is no longer available until you complete a new one.
  3. To repeat the audit at any time, click Scan again.Each scan completely replaces the previous one; results do not accumulate.
Result. The scan interrupted cleanly, and the ability to relaunch it when the model is ready.
  • While a scan is running, the Scan, Select in Revit and Zoom to buttons are disabled to avoid crossed actions.
  • The progress dialog cannot be closed with the X: use Cancel.

Options reference 10 options

OptionWhat it does
Issues / Inventory toggleSwitches between the issues table and the inventory table. Each mode keeps its filters and its search text separately.
Issues filters: Severity, Kind and ViewsCheckbox groups with a count per value. Each group has All and None buttons; the Views group also includes a text box to narrow the list of checkboxes.
Inventory kind chips (Anno / Model / Sheet / View)Four toggles with counts that switch each inventory item kind on or off; All and None act on all four at once.
Inventory filters: Category, Family · Type, Author, Last modified by, Owner and OrphanCheckbox groups with counts. Category and Family · Type include a text box to narrow long lists; Orphan offers Yes (orphan) for orphan views and No for the rest.
Free-text searchA box above the table, case-insensitive; each mode remembers its own text. In Issues it does not search the Area or Recommendation columns (it does search the rest, plus the finding title and the Revit category); in Inventory it covers every column except Orphan.
Clickable KPI cardsThe severity cards isolate that severity in the table (click again to restore); the INVENTORY ITEMS card switches to Inventory mode.
Adjustable tablesSorting by any column (click the header), resizable and reorderable columns, and a side panel you can resize by dragging the central splitter.
Export CSVExports only the issues list (not the inventory) to a UTF-8 CSV with BOM. Available when the scan has found at least one issue.
Export HTMLExports the full report (summary, metrics, issues and inventory) to a single self-contained HTML file. Available when there are issues or inventory.
HTML report light / dark themeThe exported report includes its own theme toggle in the top bar, plus a global search and its own filters.

What you get out

  • Self-contained HTML report (BIMIO_Assay_report.html): health score with a narrative, charts by severity, area and kind, an area × severity matrix, KPI metrics with a traffic light, a filterable and sortable findings table, and an inventory table with authorship (up to 25,000 embedded rows). Works offline, with no external resources.
  • Issues CSV (BIMIO_Assay_issues.csv): one row per finding with severity, area, kind, view, category, element, detail, recommendation, count and IDs, in UTF-8 with BOM for Excel.
  • On screen: interactive issues and inventory tables, KPI cards and health score, with direct navigation to the elements in Revit (selection, zoom and opening views).
  • Element IDs copyable to the clipboard from the Issues table's context menu (comma-separated, ready for Revit's Select by ID).

Pro tips 5 tips

Run Assay before every delivery or coordination exchange: the health score is an easy number to communicate and to compare between milestones.
Start with the CRITICAL and ERROR cards: fake dimensions and imported CAD are the findings that do the most damage in a delivery.
Per-element graphic overrides are flagged as Info because they are often intentional: treat them as an invitation to review, not as an automatic defect.
The Model concentrated on one workset row is the classic model dumped onto Workset1: distributing elements across purposeful worksets improves synchronisation performance.
Assay detects and BIMIO Misc acts: use Assay for the diagnosis and the suite's action tools (or Revit directly) for the fix.

Good to know

The per-view sweeps (annotation overlaps, manually hidden elements, overrides, fake dimensions, hidden links) only visit views placed on sheets; working views without a sheet are not audited view by view.
Annotation overlap detection compares the 2D bounding boxes of text notes, tags, dimensions, spot elevations, grids and callouts; two grids against each other or two dimensions against each other are not compared (they are chained on purpose). Because it uses bounding boxes, false positives can occur with diagonal elements.
The purgeable content count only works in Revit 2024 or later; in 2022 and 2023 that metric does not appear.
Inventory authorship (Author, Last modified by, Owner) requires a workshared model; in models without worksharing it shows N/A, and for elements not yet synchronised, Not Synced.
The workset check only runs in workshared models with at least two user worksets, and warns when a single workset concentrates 60 per cent or more of the elements.
The CSV exports only the issues; the inventory only appears in the HTML report, and that report embeds at most 25,000 inventory rows in very large models.
The HTML report's tables (findings and inventory) show 600 rows per filter combination; you need to narrow the filters to see more.
Results are a snapshot of the moment of the scan: if the model changes, you need to click Scan again. IDs from an old scan that no longer exist are ignored when navigating.
Select in Revit and Zoom to do not work with sheets or views (Revit does not allow selecting them); for those, use double-click, which opens them.
After cancelling a scan, the table keeps the previous scan's results but they can no longer be exported: you need to complete a new scan.
Assay is strictly read-only: it does not fix, purge or delete anything.
The window's interface is in English (Scan, Export HTML, Issues, Inventory...).

FAQ 8 questions

Does Assay modify the model when it scans?
No. The whole scan is read-only: it opens no transactions, purges nothing and deletes nothing. The suite's doctrine is that inspection tools detect and action tools act. You can run it safely on a workshared model in full production.
Why does a view with obvious problems not appear in the results?
The view-by-view sweeps only visit views placed on at least one sheet, because those are the ones that get printed and delivered. If the view is a working view and is not on any sheet, it is not audited individually (although it does appear in the inventory, marked as orphan).
Why do the inventory's Author and Owner columns say N/A?
That information comes from Revit's worksharing. If the model is not workshared, there is no authorship to read and Assay shows N/A. In workshared models, an element that has been created but not yet synchronised appears as Not Synced (and its Owner as None (Free)).
What exactly does the health score mean?
It starts at 100 and subtracts capped penalties: each Critical finding subtracts 9 points (up to 45), each Error 3 (up to 30), Warnings subtract along a square-root curve (up to 20) and metrics in Poor or Watch status subtract a little more (up to 10 and 5 respectively). Info findings do not penalise. The grade runs from A (90 or more) to F (below 60). It is a deliberately simple, interpretable model, designed to be quoted at a coordination milestone.
Does the HTML report need an internet connection or attached files?
No. It is a single, fully self-contained file: no CDNs, no web fonts and no external images. The charts are SVGs drawn inline and the data is embedded as JSON inside the HTML itself. It looks the same offline and on locked-down corporate networks.
Why is the Export CSV button disabled if the scan finished successfully?
The CSV exports only the issues list, so it is enabled only when the scan has found at least one. If the model came out clean of issues but you want to keep the inventory, use Export HTML, which is also enabled with inventory alone.
Why can I not see the purgeable elements metric?
The API that calculates what Purge Unused would remove only exists from Revit 2024 onwards. In Revit 2022 and 2023 that metric and its associated finding are not generated; the rest of the audit works the same.
I double-clicked a row and nothing happened — is that a bug?
Probably not. There are two normal causes: the row is a project-scope finding with no specific element to jump to (for example a grouped warning type or the purgeable count), or the element was deleted after the scan and Assay ignores IDs that no longer exist. Click Scan again to refresh the results.