Skip to main content

Goal

Export structured model data from a Speckle version to a CSV file you can open in Excel — door schedules, room lists, or custom property reports.

What you will build

A script that loads a model, finds doors (or rooms), extracts name, level, type, and fire rating from DataObject.properties, and writes door-schedule.csv.

When to use this

Use this when a BIM manager, architect, or engineer needs a spreadsheet report from published model data — schedules, QA lists, or quantity exports. This extends the pattern from Build your first model analysis tool.
  1. Load the latest version with Receive2 (see Automate with scripts)
  2. Flatten() the object graph once
  3. Filter DataObject instances by properties["category"] or similar
  4. Read BIM fields from properties — not from typed C# classes
  5. Write CSV with StreamWriter, escaping commas in cell values
Avoid this unless you need Excel-specific formatting — for most reports, CSV is the simplest path.

Complete example

Complete example

Room schedule variant

Filter on category containing Room and export name, area, and level:
Example
Property names vary by connector and host app. Inspect a sample object in the Speckle viewer or use Find objects by property to discover the keys your model uses.

How it works

Connector-published BIM data is stored as DataObject with semantics in properties. There are no typed Door or Room classes in Speckle Object Model v3 — you filter and read dictionaries. Flatten() gives you every object in one pass. Build your CSV from that list rather than walking the hierarchy manually unless you need parent context.

Common mistakes

Next steps

Find objects by property

Filter, index, and QA checks

BIM data patterns

How connector data is structured

Send analysis results back

Publish QA results to Speckle
Last modified on July 18, 2026