Skip to content
Amygdal
Engineering5 min read

BIM Software Development: IFC, Revit APIs and Web Viewers

IFC parsing, Revit add-ins, browser model viewers and data pipelines — what building software for BIM involves, and where AI earns its place.

Building Information Modelling has moved most of the construction industry's knowledge into digital models, but the software around those models is often a patchwork: desktop authoring tools, exported spreadsheets, and a lot of manual checking. Much of the value in BIM software development is in the gaps — getting model data out, checking it, connecting it to other systems and showing it to people who do not have a Revit licence.

We have done AI and software development for BIM, and this guide is a practical overview of the main building blocks, the tools we reach for, and where AI genuinely helps.

IFC: the open format you will end up parsing

IFC (Industry Foundation Classes) is the open, vendor-neutral schema for exchanging building models. Whatever authoring tool a project uses, IFC is usually how models move between disciplines and into anything you build. Working with it well means understanding a few things that surprise newcomers:

  • It is a graph, not a table. Elements, property sets, spatial structure and relationships are linked entities. Flattening too early loses meaning.
  • Schema versions differ. IFC2x3 and IFC4 are both common in the wild, and exporters interpret them differently.
  • Property sets vary by author. Standard Psets are only part of the story; most projects carry custom properties that matter to the client.
  • Geometry is expensive. Parsing semantics is fast; tessellating geometry for display or clash checks is where time and memory go.

For server-side work, IfcOpenShell is the mainstay for Python pipelines. In JavaScript, web-ifc (from the That Open Company ecosystem) parses IFC in WebAssembly in both Node.js and the browser.

import ifcopenshell
import ifcopenshell.util.element as el

model = ifcopenshell.open("model.ifc")
for wall in model.by_type("IfcWall"):
    psets = el.get_psets(wall)
    fire = psets.get("Pset_WallCommon", {}).get("FireRating")
    print(wall.GlobalId, wall.Name, fire)

Revit and Autodesk APIs

When a workflow lives inside Revit, the Revit API is the way in. Add-ins are written in C# against .NET and run inside the desktop application, which gives full access to the model but ties you to Revit's threading model, transactions and release cycle. Each yearly Revit version is a compatibility check.

Keep add-ins thin. The Revit-specific code should read from and write to the model; validation rules, classification logic and anything you might want to run elsewhere belongs in a separate library or service. That way the same rules can run inside Revit for a designer and in a cloud pipeline for a whole portfolio of models.

For cloud workflows, Autodesk Platform Services (formerly Forge) provides model derivative translation, data management, and Design Automation, which runs Revit and other engines headlessly in the cloud. The trade-off is familiar: desktop add-ins are closest to how designers work, cloud APIs are easier to scale and integrate. Many good systems use both — an add-in for in-context actions, a cloud pipeline for everything batch.

Web-based model viewers

Most people who need to see a model — clients, site teams, facility managers — will never open an authoring tool. A web viewer brings the model to them. The main open options we work with:

  • That Open Engine (formerly IFC.js) — built on web-ifc and Three.js, good for loading IFC directly in the browser and building custom tools on top.
  • xeokit — a WebGL SDK designed for large models, with strong performance on big federated scenes and a precompiled model format.
  • Autodesk Viewer — the natural choice when models already live in Autodesk Platform Services.

For anything beyond a small model, convert IFC on the server into an optimised format and stream that to the browser, rather than parsing raw IFC on the client. Users notice load time long before they notice anything else. A modern web development stack around the viewer — search, filters, issue tracking, property panels — is usually where most of the product work is.

Model data pipelines

The highest-value BIM software is often invisible: pipelines that pull model data out on every revision, validate it and push it somewhere useful. A typical pipeline looks like this:

  1. Ingest a new model revision from a common data environment or upload.
  2. Parse elements, properties and spatial structure into a relational or document store.
  3. Run rule-based checks — required properties, naming conventions, classification codes.
  4. Diff against the previous revision to show what changed.
  5. Publish results to dashboards, cost tools or facility management systems.

Storing extracted data in PostgreSQL alongside the original files keeps queries fast and makes revision history straightforward. Geometry-heavy work runs in background workers so uploads never block on it.

Two things make these pipelines trustworthy. First, stable identity: IFC GlobalIds are what let you say an element changed rather than was deleted and recreated, so pipelines should check that exporters preserve them between revisions. Second, rules written as data, not code — a list of required properties per element type that a BIM manager can read and change — so the checks reflect the project's standards rather than a developer's interpretation of them.

Where AI fits in BIM

AI is useful in BIM where the work is reading, classifying and searching — and much less useful where exact geometry or code compliance is at stake. The areas where we have seen it help:

  • Classification and mapping — suggesting classification codes or mapping inconsistent property names to a standard, with a person confirming.
  • Natural-language querying — asking a model "which fire doors on level 3 are missing a rating?" and translating that into a structured query over extracted data.
  • Document retrieval — connecting specifications, standards and project documents to model elements using RAG.
  • Data quality triage — ranking which issues in a large model are most likely to matter.

The rule we follow: AI suggests, deterministic checks verify, and a person approves anything that affects design or compliance. We cover this in more detail in AI in BIM.

Working with us on BIM

BIM software development sits between construction knowledge and ordinary good engineering. If you need IFC pipelines, a Revit add-in, a web viewer or AI on top of model data, see our AI for BIM service or contact us.

BIMIFCRevitAIAEC

Frequently asked questions

What is the best way to parse IFC files?

IfcOpenShell is the standard choice for Python pipelines. In JavaScript, web-ifc parses IFC in WebAssembly in both Node.js and the browser.

Should I use That Open Engine or xeokit for a web BIM viewer?

That Open Engine is a good fit for custom IFC tools built on Three.js. xeokit is strong for very large federated models. For big models, convert on the server and stream an optimised format either way.

Can AI check BIM models for code compliance?

AI can help classify elements, search documents and triage issues, but compliance checks should be deterministic rules, with a qualified person approving the results.

Keep reading

Have a project in mind?

Tell us what you are building. You will hear back from an engineer — not a sales team — within one business day.

Email us