We finally put a carbon number on every BIM object — here is what it cost the studio
NBS and Circular Ecology's new guide puts A1-A5 embodied-carbon factors on BIM objects — geometry-led. What it means for a working studio's model.
This week NBS, the specification platform now part of Hubexo, partnered with the environmental consultancy Circular Ecology to publish the NBS Guide: Embodied Carbon Calculations — a practical framework for attaching upfront carbon data (Modules A1–A5, per BS EN 15804) directly at the BIM-object level. As AEC Magazine reported, it sorts the building model into four object types — Layered Items (insulation, brickwork), Layered Assemblies (cavity walls), Items (a washbasin, a radiator) and Composite Assemblies (reinforced concrete) — and for each one gives a recipe: quantity × emission factor, with density as the bridge between the two. “Every design decision made without embodied carbon data is a missed opportunity,” said Dr Lee Jones of Hubexo, one of the authors. We read it from the office’s side of the desk and recognised an old ghost.
The ghost is fragmentation. We have lived the version of this where the embodied-carbon number arrives at the end — a sustainability consultant’s spreadsheet, delivered after the slab schedule is frozen, when the only honest answer to “can we cut this” is “not this round.” What the NBS guide does that matters is geometry-led: it puts the factor on the object, not on a parallel document. That is a practice-management decision dressed as a methodology. It decides who owns the carbon number — and for the first time it can be the same person who owns the model.
←TODAY: A 14-person Swiss office can now carry an A1–A5 carbon factor on every Archicad object instead of in a consultant’s late spreadsheet. →3012: By the Zurich-3012 horizon, an object with no embodied-carbon property is as unbuildable as one with no fire rating. Fulcrum: The number only becomes a design lever when it lives where the geometry lives — the moment quantity take-off and carbon take-off are the same query.
The System part is the standard. BS EN 15804 and the A1–A5 module split are not new — what the guide does is translate them into something that survives a real BIM workflow. We have read enough of the academic lane to know the principle is settled: PAZ’s own corpus carries the Malaysian single-storey LCA study (Yang et al., Advanced Materials Research) and the prefabrication life-cycle work in Science of the Total Environment, both of which prove BIM-based embodied-carbon accounting works in a lab. The gap was never the science. It was the seam between the model and the factor — the same interoperability seam the IFC structural-engineering assessment in Applied Sciences keeps flagging: data is correct in one tool and lossy across the round-trip.
Atelier: On our desk the win is mundane and large — once a wall’s carbon factor is a property, not a footnote, our model-based quantity take-off becomes a carbon take-off for free, and the early-stage trade-off (heavier insulation vs. thinner cavity) becomes a number we can defend to the client in the same coordination meeting where we defend the cost.
The risk, stated plainly: an object-level factor is only as honest as the density and the EPD behind it, and a geometry-led method makes a wrong factor invisible because it now looks like a clean model property. Garbage with a confident BIM badge is worse than garbage in a spreadsheet someone still distrusts.
Hack: This Hack teaches you to walk an IFC model and total embodied carbon by element, so the carbon number rides the same round-trip as the geometry. Map your A1–A5 factors (kg CO₂e per unit) to IFC types once, then let IfcOpenShell read the quantities you already export.
import ifcopenshell, ifcopenshell.util.element as el
FACTORS = {"IfcWall": 110.0, "IfcSlab": 135.0, "IfcColumn": 145.0} # kg CO2e / m3, A1-A5
model = ifcopenshell.open("competition_model.ifc")
total = 0.0
for t, f in FACTORS.items():
for e in model.by_type(t):
qto = el.get_psets(e).get("Qto_" + t[3:] + "BaseQuantities", {})
vol = qto.get("NetVolume") or qto.get("GrossVolume") or 0
total += vol * f
print(round(total / 1000, 1), "tonnes CO2e (A1-A5)")
Run that on the competition model and on the execution model and the delta tells you exactly what the Ausführungsplanung cost the planet — the same hour we usually only measure in fee.
PAZ Takeaway: The fragile part of this is keeping your factor table in sync with the model across the Grasshopper↔Archicad round-trip — exactly the missing-seam problem the PAZ Grasshopper↔Archicad Library exists to fill. A practice that wants object-level carbon as a durable property, not a one-project spreadsheet, can lean on that bridge to push EPD-backed factors onto objects and read them back without the lossy export the IFC literature keeps warning about.
Download the NBS guide, pick one wall type in your current project, and put a real A1–A5 number on it this week — then make your next material choice with that number open.
SOURCE · ↗
PAZ Kaffi · multidisciplinary editorial, led by PAZ Academy