Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions changelog.d/added/1261-conduits-gutters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
- **Conduits, conduit fittings and gutters are exported from their element
records, on every release the exporter reads.** `OST_Conduit`,
`OST_ConduitFitting` and `OST_Gutter` join the recovered categories under
the unchanged RE-21 instance rule, with the record's box as the body and the
Level its record names (a gutter's by its elevation). Against Revit's own
IFC2X3 export of BIM-Speed's Vitoria `ALD26 Before` (Revit 2018), the one
file with an export that holds any of them, all 102 conduits, 74 conduit
fittings and 2 gutters the rule selects are elements of Revit's by `Tag` and
none is outside it: 1,314 of its 1,321 elements are now written (1,136
before), 1,305 of them in Revit's class or IFC4's for its IFC2X3 one
(conduits as `IfcCableCarrierSegment`, their fittings as
`IfcCableCarrierFitting`, gutters as `IfcPipeSegment`, the entities Revit's
own type objects name, with no `PredefinedType`), and 1,251 on Revit's
storey (1,073 before), with every validation finding at 0 and the
properties Revit does not write unchanged at 20. The 7 still missing are 4
panel walls and 3 assemblies. Cable trays and cable tray fittings are not
recovered, since no file with a Revit export holds one, and neither are the
conduit centerline categories Revit's export leaves out. Autodesk's MEP
samples of 2015 to 2027 (19 or 20 conduits and 14 conduit fittings on
`rme_advanced` and `rme_basic`) and Snowdon Towers Electrical (530 conduits
and 322 fittings) now export them too, counted and not scored: no Revit
export of those files exists. See
[RE-319](reports/element-framing/RE-319-conduits-conduit-fittings-gutters.md)
(#1261).
5 changes: 3 additions & 2 deletions docs/evidence.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ The recovery figures in this README compare rvt-rs's export with Revit's own IFC
| Revit 2027 projects | yes; 325 fields of the 2027 schema carry a flag whose meaning is not measured (RE-264) | **experimental (since 0.6.0):** typed IFC entities from each element's record, with the constants the file's schema gives (RE-179); on Autodesk's five 2027 sample projects the same ElementIds and classes as their 2026 copies (20,818 of 20,818), with **no Revit 2027 export measured** | as on 2026 | as on 2026: storeys, rooms (their outline as on 2025, RE-314), doors and windows in their hosts, family and type names, layer sets, wall joins and mullion materials read the same as the 2026 copies; 79 corner mullions are not put in a curtain wall |
| Revit 2023 projects | yes | typed IFC entities (since 0.4.0) from each element's record (RE-81): on two 2023 projects every element of Revit's export (modelo_bim, 37 of 37) or all but the 8 window trims nested in windows (Exemplo_data, 37 of 45), none outside it | the element's bounding box, walls cut back by the walls they join (Exemplo_data 17 of 17 and modelo_bim 4 of 4 as Revit's, RE-120), beams stopped at the faces of the columns they frame into (modelo_bim 8 of 8, RE-122); rooms their outline (RE-102) | ElementId, category, each door's and window's host wall (30 of 30 as Revit's, RE-85), and the storeys of Revit's own Levels with each element on the one its record names, a beam on the one at its top (Exemplo_data 37 of 37 and modelo_bim 37 of 37 in Revit's storey, RE-107, RE-119), each family instance's family and type name (50 of 50 as Revit names them, RE-109), each wall's, floor's and roof's type and system family (24 of 24 with Revit's type, RE-111, RE-112), family instances' materials (44 of 45 as Revit's, RE-113), and layer sets, named by their own or their category's material (RE-114, RE-115): Exemplo_data 36 of 37 and modelo_bim 31 of 37 elements with Revit's materials, and materials with Revit's shading colours (20 of 21, none different, RE-116); no layered or angled joins or IFC export overrides, and the diagnostics say so; on 2016 to 2023, elements in a non-primary design option or outside the export phase are left out since RE-315 |
| Revit 2019 to 2022 projects | yes | **experimental (since 0.6.0):** typed IFC entities from each element's record, which 2019 to 2022 frame as 2023 does, read with the tags each release's schema gives (RE-180); on Autodesk's 2019 to 2022 sample projects every ElementId shared with the 2023 copy has the class it has there (`rac_basic`, `rst_basic` and `rac_advanced` of each release), with **no Revit export of a 2019 to 2022 file measured** | as on 2023 | as on 2023: storeys, doors and windows in their hosts, family and type names, layer sets and materials read as the 2023 copies do, with a few type names and type materials different (RE-180 §6) |
| Revit 2015 to 2018 projects | yes on 2016 to 2018; on 2015, partial: they open on Autodesk's sample projects, and previews and PartAtom are not measured | **experimental (since 0.6.0):** typed IFC entities from each element's record, which 2015 to 2018 frame as 2019 does, read with the tags each release's schema gives (RE-181); on Autodesk's 2016, 2017 and 2018 sample projects every ElementId shared with the 2019 copy has the class it has there (`rac_basic`, `rst_basic` and `rac_advanced` of each release), and on five of its six 2015 sample projects (the sixth is another model), with **Revit's own export measured on one 2015 project and one 2018 project**: BIMcollab's structural example (RE-198, a public download, not redistributable) has all 241 of Revit's elements by ElementId, each in Revit's class or IFC4's for its IFC2X3 one, 3 air terminals Revit's export leaves out (#879), 16 footings on no storey and none of its elements' GlobalIds Revit's (#878); BIM-Speed's Vitoria `ALD26 Before` (2018, CC BY 4.0), most of whose frames carry no ElementId of their own and sit in their element's record (RE-315), has 1,136 of Revit's 1,321 elements by ElementId, 1,127 of them in Revit's class or IFC4's for its IFC2X3 one (9 curtain walls are written as walls), none written that Revit's export leaves out, 1,073 on Revit's storey, and 7 storeys, as many as Revit's; the 185 missing are 178 conduits, conduit fittings and gutters, whose categories are not recovered, 4 panel walls and 3 assemblies, and its held-out sibling writes 1,336 elements and spaces against Revit's 1,520, counts only, none of its elements one that Revit's export lacks (198 were, until the export phase and design options were applied, which the counts cannot tell apart); 2014's element records are read as 2015's are, measured on one local 2014 file only (RE-259, the row below) | as on 2019 | as on 2019: storeys, doors and windows in their hosts, family and type names, layer sets and materials read as the 2019 copies do, but where the files' own bytes differ (RE-181 §6) |
| Revit 2015 to 2018 projects | yes on 2016 to 2018; on 2015, partial: they open on Autodesk's sample projects, and previews and PartAtom are not measured | **experimental (since 0.6.0):** typed IFC entities from each element's record, which 2015 to 2018 frame as 2019 does, read with the tags each release's schema gives (RE-181); on Autodesk's 2016, 2017 and 2018 sample projects every ElementId shared with the 2019 copy has the class it has there (`rac_basic`, `rst_basic` and `rac_advanced` of each release), and on five of its six 2015 sample projects (the sixth is another model), with **Revit's own export measured on one 2015 project and one 2018 project**: BIMcollab's structural example (RE-198, a public download, not redistributable) has all 241 of Revit's elements by ElementId, each in Revit's class or IFC4's for its IFC2X3 one, 3 air terminals Revit's export leaves out (#879), 16 footings on no storey and none of its elements' GlobalIds Revit's (#878); BIM-Speed's Vitoria `ALD26 Before` (2018, CC BY 4.0), most of whose frames carry no ElementId of their own and sit in their element's record (RE-315), has 1,314 of Revit's 1,321 elements by ElementId (1,136 before its 102 conduits, 74 conduit fittings and 2 gutters were recovered, RE-319), 1,305 of them in Revit's class or IFC4's for its IFC2X3 one (9 curtain walls are written as walls), none written that Revit's export leaves out, 1,251 on Revit's storey, and 7 storeys, as many as Revit's; the 7 missing are 4 panel walls and 3 assemblies, and its held-out sibling writes 1,514 elements and spaces against Revit's 1,520, counts only, none of its elements one that Revit's export lacks (198 were, until the export phase and design options were applied, which the counts cannot tell apart); 2014's element records are read as 2015's are, measured on one local 2014 file only (RE-259, the row below) | as on 2019 | as on 2019: storeys, doors and windows in their hosts, family and type names, layer sets and materials read as the 2019 copies do, but where the files' own bytes differ (RE-181 §6) |
| Revit 2011 to 2014 projects | yes: 2011 to 2013 open since RE-259, whose schemas have no GUID lists; measured on local closed-source files only, outside the 1.0 range (2015 to 2027) | **experimental:** typed IFC entities from each element's record, which 2011 to 2014 frame as 2015 does, read with the tags each release's schema gives (RE-259); on a local copy of Autodesk's 2013 `rac_advanced` sample every ElementId shared with its 2015 copy has the class it has there and 62,071 of 62,153 fields agree, with **no Revit export of a file before 2015 measured** and no same-model pair for 2011, 2012 or 2014 | as on 2015 | as on 2015: storeys, doors and windows in their hosts, family and type names, layer sets and materials read as the 2015 copy does, but where the files' own bytes differ (RE-259 §7) |
| Revit 2008 to 2010 projects | yes: they open and report their release, which 2008 and 2009 take from their build date (RE-259); measured on local closed-source files only, outside the 1.0 range (2015 to 2027) | **experimental:** typed IFC entities from each element's record, which 2009 and 2010 frame as 2011 does and 2008 4 bytes shorter (RE-260); on one local 2009 project 8 doors and their wall, on one 2008 project one generic model, with **no Revit export and no same-model copy of any 2008 to 2010 file measured** | as on 2015 | storeys with their names and elevations (RE-260, also on 2011 and 2012), materials named and coloured; type names, layer sets and hosts as on 2015 but not measured |
| Families (`.rfa`) | yes | family metadata, OmniClass, previews; no family geometry | none | a family's types and type parameters as its `PartAtom` stream lists them (`rvt-info`, `PartAtom::family_types`) |
Expand Down Expand Up @@ -72,6 +72,7 @@ On Revit 2024 and 2025 project files, rvt-rs reads each element from its partiti
| Railings, curtain panels, mullions | `IfcRailing`, `IfcPlate`, `IfcMember` | Snowdon Towers 131 railings, every mullion |
| Furniture, casework, plumbing, lighting, equipment | `IfcFurniture`, `IfcSanitaryTerminal`, `IfcLightFixture`, `IfcElectricAppliance`, proxies | RE1 models and Snowdon Towers, every one Revit exports |
| Ducts, pipes, fittings, air terminals | `IfcDuctSegment`, `IfcPipeSegment` drawn as its cylinder where its ends are proven (RE-131), their fittings, `IfcAirTerminal` | RE1 Mechanical and Plumbing, every one; all 69 pipes are Revit's cylinder, its radius, axis ends and length to 0.00001 ft, and so are the BIM4LCA office's 12 (Revit 2024) |
| Conduits, conduit fittings, gutters | `IfcCableCarrierSegment`, `IfcCableCarrierFitting`, `IfcPipeSegment` (gutters), each drawn as its record's box, no `PredefinedType` (RE-319) | BIM-Speed Vitoria `ALD26 Before` (Revit 2018, IFC2X3 export), the one file with an export that holds any: all 102 conduits, 74 fittings and 2 gutters the instance rule selects are elements of Revit's export by `Tag`, none outside it, all 178 on the storey of Revit's (the 2 gutters by their elevation); the boxes of 102 of the 104 conduits and gutters within 0.01 ft of Revit's. Autodesk's `rme_basic` and `rme_advanced` of 2015 to 2027 and Snowdon Towers Electrical export them too, counted and not scored (no Revit export). Cable trays and cable tray fittings are not exported: no export holds one |
| Electrical and mechanical devices and equipment | `IfcAlarm` (fire alarm devices), `IfcElectricAppliance` (data devices), proxies (switches, sensors, receptacles, junction boxes, panels, mechanical equipment) | RE1 Electrical and Mechanical, every one Revit exports and nothing else; the symbols nested in switches and receptacles left out, as Revit leaves them out (RE-79) |
| Structural framing, columns, foundations | `IfcBeam` along its location line, `IfcColumn`, `IfcFooting` | Snowdon structural sample: all 1,078 in the category its VIM export gives them; 923 of 942 beams run along their line, with Revit's own section on 613 of the 839 a later edition kept unchanged, and on 179 more less the top a floor join cuts (RE-49); 377 steel beams and 40 steel columns are their type's I section, Revit's own on all 271 beams and 24 columns the VIM scores (RE-103, RE-104) |
| Site elements, generic models, slab edges, elevators, ramps | proxies, `IfcTransportElement`, `IfcRamp` | Snowdon Towers, every one Revit exports |
Expand Down Expand Up @@ -103,7 +104,7 @@ Across Autodesk's Snowdon Towers architectural sample (Revit 2024), rvt-rs expor

Core Interior and the RE1 models are licensed test files and run in CI. The BIM4LCA office and puzzbobb's Revit 2025 models are fetched by Measure. Snowdon Towers, the 255ribeiro projects, the 2026 house and BIMcollab's 2015 example have no licence to redistribute and are measured locally (BIMcollab's and the holdout pack's summary counts leave Measure's runner), so those figures cannot be re-run by others. By ElementId the exports equal Revit's on Core Interior (970), RE1 Architecture (84), Electrical (49) and Mechanical (74), the 22 R2025 models with an export and the office as built (12,974); RE1 Plumbing writes a water closet tank (442378) and the office at building permit a column (1927742, #792) that Revit's export leaves out, and one office fixture (3095244) is in another IFC class than Revit's (#792) (Measure run 40927543524). Parts Revit's exporter splits one element into under one ElementId (a roof or slab, #323) count once.

All of the above were used to develop the decoder. Three models that were not, Autodesk's Snowdon Towers Plumbing, HVAC and Electrical samples (2024), were measured once as they are against the VIM export of the sample: every exported element the VIM holds is in the expected category (10,385), every VIM instance both hold is exported, and all storeys and GlobalIds agree ([held-out report](../reports/validation/held-out-snowdon-mep-2026-09-27.md), #408). Their bodies are bounding boxes. Six Revit 2018 to 2021 projects with their release's own export were added to Measure on 2026-11-03. On that first measurement both Revit 2018 saves of one building exported no element, and the 2020 and 2021 projects 151 of 151, 199 of 203, 710 of 710 and 1,698 of 1,714 of the elements Revit exports, by Tag (#1261). None met W4, W6 and W7 then, so under W5 all six are used up: they stay in Measure as held-out regression checks, counts only, and are never developed on. One of the 2018 saves, `ALD26 Before`, was spent to find the cause and is now a development file: since RE-315 it writes 1,136 of Revit's 1,321 elements and all 73 of its spaces, and its held-out sibling `ALD26 Project` writes 1,336 elements and spaces against Revit's 1,520, with none that Revit's export lacks ([reference models](reference-models.md)).
All of the above were used to develop the decoder. Three models that were not, Autodesk's Snowdon Towers Plumbing, HVAC and Electrical samples (2024), were measured once as they are against the VIM export of the sample: every exported element the VIM holds is in the expected category (10,385), every VIM instance both hold is exported, and all storeys and GlobalIds agree ([held-out report](../reports/validation/held-out-snowdon-mep-2026-09-27.md), #408). Their bodies are bounding boxes. Six Revit 2018 to 2021 projects with their release's own export were added to Measure on 2026-11-03. On that first measurement both Revit 2018 saves of one building exported no element, and the 2020 and 2021 projects 151 of 151, 199 of 203, 710 of 710 and 1,698 of 1,714 of the elements Revit exports, by Tag (#1261). None met W4, W6 and W7 then, so under W5 all six are used up: they stay in Measure as held-out regression checks, counts only, and are never developed on. One of the 2018 saves, `ALD26 Before`, was spent to find the cause and is now a development file: since RE-315 and RE-319 it writes 1,314 of Revit's 1,321 elements and all 73 of its spaces, and its held-out sibling `ALD26 Project` writes 1,514 elements and spaces against Revit's 1,520, with none that Revit's export lacks ([reference models](reference-models.md)).

## What does not work yet

Expand Down
Loading
Loading