Exporting Models
How to export Revit model groups to the Alpha platform
Exporting Models
The add-in provides three ways to export model groups from Revit to the Alpha platform, all found in the Export panel of the Alpha ribbon.
Export Selected Groups
Use Export Selected Groups to export specific model groups you have selected in the Revit viewport. Each group is uploaded to the type-level product coverage matching the group's name; use this for shared per-type models (interiors, kitchens, bathrooms) that are reused across every project that uses the type. Groups whose names don't exist as a coverage row are exported to disk only.
Workflow
- Select one or more model groups in the Revit viewport
- Click Export Selected Groups in the Export panel
- A progress window appears showing each group being exported
- When complete, a summary dialog shows the results
What Happens During Export
For each selected model group, the add-in:
- Validates that the element is an exportable model group
- Exports the group in the enabled formats (GLB, RVT, IFC, PDF)
- Saves files to the configured export output directory
- Uploads files to the Alpha platform (if upload is enabled)
Progress and Cancellation
The export progress window shows:
- Current group name and number (e.g., "Group 2 of 5")
- Current export step
- Any warnings encountered
Click Cancel at any time to stop the export. Files already exported remain on disk, but the remaining groups are skipped.
Export Summary
After export completes, a summary dialog shows:
- Number of groups exported successfully
- Number of failures (if any)
- For each group: file sizes and upload status
- Total elapsed time
Export Visible in View
Use Export Visible in View to export model groups from the active 3D view without manually picking each one.
Workflow
- Open a view that contains the model groups you want to export
- Click Export Visible in View in the Export panel
- A dialog appears listing the model groups found in the document
- Select the groups you want to export
- Click Export to begin
This is useful when you want to export many groups at once without manually selecting them in the viewport. Exports and uploads work the same as Export Selected Groups; only the source set differs.
Export As Project Variants
Use Export As Project Variants to export selected groups as project-specific models instead of shared type-level coverage. This covers two cases: project-level overrides of CONCEPT models, and variant facade models.
Workflow
- Select one or more model groups in the Revit viewport
- Click Export As Project Variants in the Export panel
- A picker dialog appears: choose the target type and project (the selection is saved as the default for next time)
- Each selected group is exported, and the upload destination is auto-routed by matching the group's name against the project's model catalogue
Upload Routing
For each exported group, the add-in matches the (cleaned) group name against the project's concept and variant models:
| Match | Destination |
|---|---|
| Group name matches a CONCEPT model | GLB, RVT, and thumbnail are uploaded as a project-level concept model override (POST /projects/{projectId}/concept-model-overrides/{treeId}/{name}) |
| Group name matches a variant facade model | Files are uploaded to the type-level coverage row for that variant (POST /type-product-coverages/upload/{typeId}/{name}) |
| No match | The group is exported to disk only; a warning is shown and no upload happens |
When the same product name exists as both a concept and a variant model, the variant model takes precedence.
Export Summary
The completion dialog shows, per group, the upload target (CONCEPT or VARIANT with the variant ID), file sizes, upload status, and duration. Failed groups list their error, with an option to copy error details to the clipboard.
Variants from List
Variants from List does exactly the same export as Export As Project Variants, but you pick the model groups from a searchable checklist instead of selecting them in the view. On a document with dozens of groups, hand-picking in the viewport makes it easy to miss one; the checklist makes the whole set visible at once.
Workflow
- Click Variants from List in the Export panel: no selection needed
- Tick the model groups to export (anything already selected in the view is pre-ticked)
- Click Continue
- From here the flow is identical to Export As Project Variants: pick the target type and project, and the upload destination is auto-routed per group
Narrowing the list
The search box filters the list as you type. By default it matches anywhere in the name; tick Starts with to anchor it to the beginning:
| Term | Starts with | Matches |
|---|---|---|
keuken | off | any group whose name contains "keuken" (case-insensitive) |
A_ | off | A_woning and TYPE_A_woning |
A_ | on | only A_woning |
Starts with matters when you search by type number: without it, A_ also pulls in TYPE_A_... groups of another type. (Typing ^A_ does the same thing if you prefer a keyboard shortcut.)
Collecting groups across several searches
The selection is a running total; it is not reset when you change the search. That lets you build up a set in passes:
- Search
^A_, click Add N matches - Search
^B_, click Add N matches - Tick Only selected to review everything collected so far
While a filter is active the buttons name the number of rows they affect (Add 12 matches / Remove 12 matches) and act only on the visible rows; groups hidden by the search keep their state. The counter on the right always reports the total across the whole document, not just the visible rows.
SHIFT-click selects a range. Click one row, then SHIFT-click another to tick everything in between. SHIFT-clicking a row that is already ticked clears the range instead.
Attached Detail Groups
Model groups often carry attached detail groups: 2D annotation groups (dimensions, labels, hatches, room tags) that an author attaches to a model group and shows in specific floor-plan views. The add-in exports these together with the model group and re-creates them when configuring houses, blocks, and option-sales drawings (optieverkooptekeningen).
Because an attached detail group is anchored to a view (and through it, a level), getting it to survive the export → configure round-trip depends on two things lining up: the view names and the vertical position. Both are handled automatically, but they are the source of every detail-group pitfall below.
How it works
The round-trip spans three pieces of code: ExporterService (template + orchestration), GroupCopyService (the cross-document copy), and AttachedDetailGroupHelper (capture + re-show):
- Template resolution (export uses the same template as configuration).
ExporterService.ResolveTemplatePathbuilds the export document from the same.rtethe configuration/samenstellen flow uses, resolved from the backend in this order: project template blob → tenant default template (tenant.configuratorSettings.revitTemplate) → localExportTemplatePath→ per-version default. Honors theUseLocalTemplatedeveloper override. This guarantees the exported RVT contains the same floor-plan views (and view names) the configured house will, which is what makes the name-based re-show below succeed. - Capture (on export).
AttachedDetailGroupHelper.Extractrecords, for each attached detail group, the detail-group type name and the floor-plan view it is shown in. The detail-group types are copied into the exported RVT (so it is self-contained), and the same mapping is serialized into the product's metadata (attachedDetailGroups) for the placement side to read back. - Vertical handling (on copy).
GroupCopyService.CopyGroupWithDependenciescopies the model group to the project origin in plan (XY only, Z is preserved), then normalizes the group to elevation 0 by shifting every level in the exported document down by the group's source floor height, not by moving the group itself. This matters for groups authored on an upper floor: a vertical move of a group only drags its free members (the group instance and point-hosted families, whose Offset-from-Host absorbs the move), while level-constrained members (walls, rooms) and the level-bound plan views that carry the 2D annotations stay pinned to their level. Moving the group would therefore split an upper-floor group across a storey (the family at z=0 withOffset from Host = -<floor height>, the walls/rooms/tags still at+<floor height>). Shifting the levels instead moves the level-hosted members, the level-constrained members and the annotation views together, so the whole group, geometry and detail-group annotations alike, lands at elevation 0 with every per-member offset intact. Configuration placement re-derives level-hosted members from the target document's levels by name + offset, so the shifted export elevations never affect per-floor stacking. - Re-show (on export and on configure).
AttachedDetailGroupHelper.Applyre-shows each detail group in the same-named floor-plan view of the target document (Group.ShowAttachedDetailGroups). On configure this runs after each model group is placed, reading the view mapping from the product metadata. Matching is purely by view name; an unmatched view name is logged and skipped, never fatal.
Pitfalls
Re-export required. Attached detail groups only appear on content exported with the add-in version that introduced them, or later. Older exports carry neither the detail-group types nor the view mapping, so they must be re-exported. Existing exports keep working; they simply place no detail groups.
- Template parity is everything. Re-show matches floor-plan views by exact name. If the export template and the configuration template differ (e.g. a stale local
ExportTemplatePath, orUseLocalTemplateleft on), a view such asVK eerste verdiepingmay be missing on one side and the detail group is silently skipped (Target document has no floor plan named '…'; skipping). Keep the tenant default template authoritative and leaveUseLocalTemplateoff in production. Showed 1/1does not mean visible.ShowAttachedDetailGroupsreporting success only means the show call ran. The annotations can still be invisible if they fall outside the floor plan's view range, which is exactly what the level-shift in step 3 prevents (it keeps every annotation at the same elevation as the geometry it describes). When debugging, check the element's Z, not just the log.- Room tags depend on their rooms. A detail group made of room tags only reads correctly if the tagged rooms travel with the model group (they must be members of the exported group). Rooms whose bounding walls belong to neighbouring units that aren't part of a single exported option will render
vloeropp. Not Enclosedeven though the tag itself is correct. - View name = level anchor. The captured view name implicitly pins the detail group to a level. Renaming floor-plan views in the authoring model without re-exporting, or templates that name the same level differently, will break the match.
Output Formats
| Format | Extension | Description |
|---|---|---|
| GLB | .glb | Binary glTF format for 3D visualization in the Alpha platform |
| RVT | .rvt | Native Revit file for archival and downstream use |
| IFC | .ifc | Industry Foundation Classes for BIM interoperability |
.pdf | 2D drawings exported from the model |
Enable or disable formats in Settings.
Output Directory Structure
Exported files are organized by group name:
%UserProfile%\Alpha\exports\
└── GroupName\
├── GroupName.glb
├── GroupName.rvt
├── GroupName.ifc
└── GroupName.pdfUploading to Alpha
When Upload Outputs is enabled in settings, exported files are automatically uploaded to the Alpha platform and linked to the corresponding type coverage. You can verify the upload by checking the coverage status in the Missing Coverage view.
Tips
- Run a Health Check before exporting to catch common model issues
- Use Rename Group to ensure group names match Alpha product type names before exporting
- Check Missing Coverage after exporting to verify all types are covered