Goal
Understand how walls, doors, rooms, and other BIM elements appear in SpeckleSharp so you can filter, extract, and report on connector-published data.What you will learn
How v3 stores BIM semantics inDataObject.properties, why there are no typed Wall classes, and where proxies fit in.
When to use this
Read this before writing filters or CSV exports on data from Revit, Rhino, ArchiCAD, or other connectors. If you only need a working script, start with Build your first model analysis tool and return here when property names are unclear.Recommended approach
- Receive with
Receive2 - Treat elements as
DataObject— checkproperties, notspeckle_type, for BIM meaning - Use
Flatten()for model-wide queries - Resolve proxies when you need levels, groups, or instances — see Working with Proxies
Complete example
How it works
v3 object types
In Object Model v3, connectors emit generic containers:| Type | Role |
|---|---|
DataObject | BIM element with name, properties, displayValue |
Collection | Hierarchy (building → level → category) |
Geometry (Point, Mesh, …) | In displayValue or nested properties |
Proxies (GroupProxy, LevelProxy, …) | Organisation metadata at the root |
properties — category, family, type, level, fire rating, Revit parameters, and custom fields.
Deep nesting
Properties can nest several levels:No typed BIM classes
There is noWall or Column class in SpeckleSharp for connector data. Use property checks:
Proxies and hierarchy
Revit levels and groups often appear as proxies at the root, not as parent nodes in the tree. See Working with Proxies and Find objects by property.Common mistakes
| Mistake | Fix |
|---|---|
Looking for speckle_type == "Wall" | Filter properties["category"] |
| Expecting Revit parameter names in UI language | Inspect properties keys on a sample object |
| Ignoring proxies for level-based reports | Index by applicationId and resolve proxies |
Using obj["category"] on all objects | Prefer DataObject.properties for connector data |
Next steps
Find objects by property
Traversal and filter recipes
Working with Proxies
Levels, groups, and instances
Export model data to CSV
Door and room schedules