Auto-Assign¶
Auto-Assign lets you bulk-assign classifications, property values, or spatial containers to BIM elements based on dynamic filter rules — without manually selecting elements first.
Overview¶
Use Auto-Assign when you need to:
- Assign a classification to all elements matching a filter (e.g., all
IfcWallelements get classificationWand.01) - Set a property value across elements that share a characteristic (e.g., set
LoadBearing = truefor all walls in a specific building storey) - Move elements into a spatial container based on their properties
- Map property values to classifications automatically (e.g., read a "DIN276_Code" property and assign the matching classification)
- Map property values to spatial containers automatically (e.g., read a "Building" property and assign elements to the matching building storey)
Unlike Batch Editing, which requires manual element selection, Auto-Assign discovers elements automatically using filter conditions.
Opening the Panel¶
Click the sparkles button in the toolbar to toggle the Auto-Assign sidebar panel.
The panel opens on the right side and has three sections:
- Filter — define which elements to target
- Assignment — choose what to assign
- Apply — execute the assignment
Building a Filter¶
The filter section uses the same condition builder as the advanced filter panel.
Adding Conditions¶
- Click the + button to add a condition
- Select a field (Category, Name, Status, Classification, Spatial Container, etc.)
- Select an operator (equals, contains, starts_with, etc.)
- Enter a value
Logical Operators¶
Combine multiple conditions with:
| Operator | Meaning |
|---|---|
| AND | All conditions must match |
| OR | Any condition can match |
| NOT | Invert the group |
Click the operator dropdown at the top of the group to change it.
Nested Groups¶
Click the group button to add a nested condition group. This lets you build complex logic like:
AND
Category = "IfcWall"
OR
Name contains "Exterior"
Name contains "Curtain"
Preview Count¶
As you build filters, a live preview count updates automatically (debounced 500ms). This shows how many elements match your current filter, so you can verify before applying.
Note: Preview is limited to 1000 elements. If more match, the count shows "1000+ (max 1000 shown)".
Assignment Types¶
Classification¶
Assign a classification from a class system to matching elements.
- Select Assignment type: Classification
- Pick a System from the dropdown (shows active class systems for the project)
- Pick a Classification from the filtered dropdown
Example — Assign "Wand.01" to all IfcWall elements:
| Step | Action |
|---|---|
| Filter | Field: Category, Operator: equals, Value: IfcWall |
| Assignment | Type: Classification, System: DIN 276, Class: [330] Wand.01 |
| Preview | "847 matching elements" |
| Apply | Click "Apply to 847 elements" |
Property¶
Set a property value in a specific property set for matching elements.
- Select Assignment type: Property
- Pick or type a Property set name (dropdown shows existing psets from metadata)
- Pick or type a Property name (dropdown shows properties for the selected pset)
- Enter the Value to assign
Example — Set "FireRating" to "REI 90" for all concrete walls:
| Step | Action |
|---|---|
| Filter | AND: Category = IfcWall, Description contains concrete |
| Assignment | Type: Property, Pset: Pset_WallCommon, Property: FireRating, Value: REI 90 |
| Apply | Click "Apply to 234 elements" |
Example — Tag elements with a custom property:
| Step | Action |
|---|---|
| Filter | OR: Category = IfcDoor, Category = IfcWindow |
| Assignment | Type: Property, Pset: ENJADE_Tags, Property: Phase, Value: Phase 2 |
| Apply | Click "Apply to 512 elements" |
Classification (by Property)¶
Automatically assign classifications by reading a property value from each element and matching it to a classification name or code in a class system.
This is useful when elements already carry classification information in a property (e.g., imported from an IFC file or spreadsheet) and you want to convert those text values into proper classification assignments.
- Select Assignment type: Classification (by Property)
- Pick the source property set and source property that contains classification names or codes
- Pick the target class system to match against
- Choose Match by: Name (matches the classification display name) or Code (matches the classification code)
How it works:
- Auto-Assign reads the source property value from each matching element
- For each unique value, it looks up the classification in the target system
- Elements whose property value matches a classification get that classification assigned
- Elements with no match are skipped (reported in the result)
Example — Assign DIN 276 classifications from a property:
Elements have a property CustomPset.DIN276_Code with values like 330, 340, 410. The project has a DIN 276 class system with matching codes.
| Step | Action |
|---|---|
| Filter | Category = IfcWall (or no filter to process all elements) |
| Assignment | Type: Classification (by Property) |
| Source | Pset: CustomPset, Property: DIN276_Code |
| Target | System: DIN 276, Match by: Code |
| Result | "Applied to 847 elements, 12 skipped (no match)" |
Example — Map description text to classifications:
| Step | Action |
|---|---|
| Filter | Status = active |
| Assignment | Type: Classification (by Property) |
| Source | Pset: Pset_WallCommon, Property: Reference |
| Target | System: Uniclass, Match by: Name |
Classification (by Classification)¶
Automatically assign classifications by reading each element's existing classification in one class system and matching it to a classification in another system.
This is useful when elements are already classified in one system (e.g., IFC categories) and you want to assign the corresponding classification in a different system (e.g., DIN 276, Uniclass, OmniClass).
- Select Assignment type: Classification (by Classification)
- Pick the source class system (the one elements already have)
- Pick the target class system (the one to assign)
- Choose Match by: Name (matches display names across systems) or Code (matches codes across systems)
How it works:
- Auto-Assign reads each element's classification in the source system
- For each unique source classification, it looks up a matching classification in the target system by name or code
- Elements whose source classification matches a target classification get the target assigned
- Elements with no source classification or no match are skipped
Example — Map IFC classification to DIN 276:
Elements are classified in an "IFC" system with names like Wand, Decke, Fenster. The DIN 276 system has classes with matching names.
| Step | Action |
|---|---|
| Filter | Status = active |
| Assignment | Type: Classification (by Classification) |
| Source system | IFC Classification |
| Target system | DIN 276 |
| Match by | Name |
| Result | "Applied to 1000 elements, 45 skipped (no match)" |
Example — Cross-reference by code:
Elements have Uniclass codes (Ss_25_10_30) and you want to assign the matching OmniClass entries that share the same codes.
| Step | Action |
|---|---|
| Filter | Category = IfcWall |
| Assignment | Type: Classification (by Classification) |
| Source system | Uniclass |
| Target system | OmniClass |
| Match by | Code |
Spatial Container¶
Move matching elements into a spatial container (building storey, space, etc.).
- Select Assignment type: Spatial Container
- Enter the container element ID (the numeric ID of the spatial container element)
Example — Move all furniture to "2nd Floor":
| Step | Action |
|---|---|
| Filter | Category = IfcFurnishingElement |
| Assignment | Type: Spatial Container, Container ID: 4521 |
| Apply | Click "Apply to 67 elements" |
Spatial Container (by Property)¶
Automatically assign spatial containment by reading a property value from each element and matching it to a spatial container name in the project.
This is useful when elements carry location information in a property (e.g., "Building A", "Level 02") and you want to assign them to the correct spatial container.
- Select Assignment type: Spatial Container (by Property)
- Pick the source property set and source property that contains container names
- Auto-Assign matches property values against spatial container element names (case-insensitive)
How it works:
- Auto-Assign reads the source property value from each matching element
- It fetches all spatial containers in the project
- For each unique property value, it finds the spatial container whose name matches
- Elements whose property value matches a container name get assigned to that container
- Elements with no match are skipped
Example — Assign elements to building storeys by property:
Elements have a property ePset_Location.Storey with values like Level 01, Level 02, Roof. The project has IfcBuildingStorey elements with matching names.
| Step | Action |
|---|---|
| Filter | Category = IfcWall |
| Assignment | Type: Spatial Container (by Property) |
| Source | Pset: ePset_Location, Property: Storey |
| Result | "Applied to 523 elements, 8 skipped (no match)" |
Example — Assign rooms to buildings:
| Step | Action |
|---|---|
| Filter | Category = IfcSpace |
| Assignment | Type: Spatial Container (by Property) |
| Source | Pset: ePset_Location, Property: Building |
| Result | "Applied to 142 elements" |
Applying Changes¶
- Verify the preview count matches your expectation
- Verify the assignment configuration is correct
- Click "Apply to N elements"
During application:
- A progress bar shows batch progress
- Elements are updated in chunks of 500
- Each chunk calls the batch update API
After completion:
- A success message shows how many elements were updated
- If any updates failed, a warning shows the failure count
- For mapping modes, skipped elements (no matching classification/container) are reported separately
- The grid data refreshes automatically
Limitations¶
| Limitation | Details |
|---|---|
| 1000 element cap | Each apply operation processes up to 1000 matching elements. For larger datasets, apply multiple times with refined filters. |
| No undo | Changes are applied immediately. Use the element history/catchup panel to review what changed. |
| Single assignment per apply | Each apply sets one classification, one property, or one spatial container. For multiple changes, apply them sequentially. |
Tips¶
- Start with narrow filters — begin with specific conditions and preview the count before applying. Widen gradually.
- Use the preview count — always verify the count matches your expectation. If it shows 0, your filter conditions may not match any elements.
- Chain assignments — apply a classification first, then use that classification as a filter condition to assign properties to the same elements.
- Property psets — the pset and property dropdowns show values from your project's metadata. You can also type custom names for properties that don't exist yet.
- Mapping modes — use "by Property" modes when elements already carry classification codes or location names in their properties. Check the skipped count after applying to identify unmatched values that may need manual attention.
- Case-insensitive matching — both mapping modes match property values case-insensitively. "Level 01" matches a container named "level 01" or "LEVEL 01".