Repository navigation
feat(ifc): door types' Fire Rating and family types' Manufacturer, read from a family type table's entries (#1185) (RE-354) - #1490
Open
DrunkOnJava wants to merge 18 commits into
Open
DrunkOnJava wants to merge 18 commits into
DrunkOnJava wants to merge 18 commits into
Conversation
…d its Heat Transfer Coefficient are written (#1185) (RE-354)
…urer texts (#1185) (RE-354)
…ntry and written on the type object (#1185) (RE-354)
…ficient and family types' Manufacturer (#1185)
…25 models' exports do not write where the file holds a value (#1185) (RE-354)
…hermal transmittance left out, with its fragment and criteria entries (#1185)
…er diagnostics test (#1185)
DrunkOnJava
marked this pull request as ready for review
November 5, 2026 23:14
…rtifacts from CI run 42128032338 (#1185)
# Conflicts: # research/witness/magnetar-2024-core-interior-slim/observations/rvt-rs.json # research/witness/magnetar-2024-core-interior/observations/rvt-rs.json
… block mark lies between, copies must agree, and a Manufacturer goes only on IfcElement types (#1185) (RE-354)
DrunkOnJava
enabled auto-merge (squash)
November 6, 2026 01:09
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1185. Its done-when is met on what it names:
FireRating,ManufacturerandLoadBearingare written and equal on both office files,IsExternalon type objects and a door type'sThermalTransmittanceare left out with their evidence, and the criteria page says what is written. The residuals have their own issues: #1507 (windows'FireRating), #1496 (the RE1 Plumbing tank) and #792, where the office's one type-objectPset_SanitaryTerminalTypeCommon.Referencethat Revit's export omits stays (unchanged frommain, and not one of #1185's four properties).Summary
u32 n · UTF-16 × n · (u32 0 | ff ff ff ff · u16) · f64 · i64 -1 · i64 BuiltInParameter, RE-185 section 3.3), the text first, in the type's own value block, under -1001206 and -1010108. RE-77's reader takes the parameter id first and never meets them, and RE-289's probe looked for that form alone, so its Manufacturer negative is overturned. The type object, and a door of that type whose ownPset_DoorCommon.FireRatingis empty, carry the Fire Rating; the type object alone carries the Manufacturer, and only where IFC4 appliesPset_ManufacturerTypeInformation(the type of anIfcElement).Manufacturerentries lie more than 100 KB from their mark, up to 3.2 MB; the 12 that match Revit's export lie within 8.4 KB), and a type whose copies disagree, across partitions or with RE-77's form, gets neither and is counted in the diagnostics. The disagreement rule is unexercised on the office, whose entries are all inPartitions/425.ThermalTransmittance(3.7021, thef64 · ff × 8 · i64 -1005430entry of its block) is found and left out: reading it was equal on the office but wrote a value on a door type of each ofr2025-12tor2025-17, whose Revit 25.0.2 IFC4 exports write none, so Revit's exporters disagree (the standing rule). The office's one value stays missing, 18 of 19.224200-FIXT-Rough In Water Closet Tank:Water Closet Tank_M,ManufacturerGeneric: the type of the water closet tank 442378, which rvt-rs writes and Revit's export does not hold (RE-160, RE-169 section 4, RE-262). Every property on it is a value Revit does not write (two already counted). It is not the class difference of BIM4LCA office: fixture 3095244 is IfcSanitaryTerminal where Revit writes IfcFlowTerminal, and the permit model writes a column Revit's export leaves out #792, and RE1's export is IFC2X3, counted apart and never a reason to remove a value. The tank is tracked by RE1 Plumbing: water closet tank 442378 is written, and Revit's export holds neither it nor its type #1496.Pset_WindowCommon.FireRatingstays missing with the same counts before and after (4 on each ofr2025-12tor2025-17, 13 on each of the held-out 2024 to 2027 models, 11 on each of the held-out office 2024 to 2027 models): R2025's0.5hare table entries under family-parameter ids 12482 and 12220, not -1001206. Filed as W7: windows' Pset_WindowCommon.FireRating is read from family-parameter table entries (R2025 models 12 to 17, held-out models) #1507 (0.16.0).attach_type_text_parametersalso copies the type's two texts as Text onto every element of the type in rvt-rs's own non-Pset_set, so "the instance gets none" is aboutPset_sets only.Motivation
#1185's remaining values: the six door types'
FireRating(and the two doors whose rating is that type's-), the one door type'sThermalTransmittanceand the six family types'Manufacturer.probe_re354_door_type_blocks(Measure runs 42115439931 and 42118085660) found the texts of the exported types in their own blocks in this form.Changes
src/research/partition_type_parameters.rs: the table-form scan beside RE-77's, both flag forms, attributed only where no mark of any id lies between the owner's mark and the entry; copies that disagree across partitions or with the id-first form give the type neither.src/reader.rs,src/ifc/mod.rs: the types left out so are counted in the export diagnostics.src/ifc/export_content.rs: the type object's Manufacturer set, for an entity IFC4 appliesPset_ManufacturerTypeInformationto.probes/examples/probe_re354_door_type_parameters.rs,probe_re354_door_type_blocks.rs;reports/element-framing/RE-354-door-type-values-and-family-type-manufacturer.md(and notes in RE-286 and RE-289), the changelog fragment, the addendum todocs/format-reconnaissance.md, thetype-text-parametersrow ofdocs/support-matrix.jsonand the criteria page's and contribution map's entries.Testing
Unfiltered Measure run 42135050819 on head e07349c against
mainat daf3610 (-f base=main -f nordic=true -f r2025=true -f holdout=true -f samples=true -f keep_ifc=true, noifc_flags, every scorer; the office as built and at permit, the 18 held-out models (counts only), the 24 R2025 models, the four RE1 models, Core Interior, Einhoven and the sample projects). Thesame-project gatescheck passes on e07349c, and the full CI passes on it.Pset_DoorCommon.FireRating47 to 55 of 55 equal andPset_ManufacturerTypeInformation.Manufacturer0 to 6 of 6; equal 44,413 to 44,427 and 44,562 to 44,576; different stays 1 and the values rvt-rs writes that Revit does not stay 2 and 7;ThermalTransmittancestays 18 of 19; the quantities are unchanged. The earlier run 42123166507 (before the attribution rule was narrowed) gave the same 55 of 55 and 6 of 6, so the narrowing lost no value the scorer sees;FireRating15 of 15 andManufacturer16 of 16 equal (0 before), different 0, extras 13 unchanged;FireRating16 to 128 of 128 equal, different (44) and extras (512) unchanged;Pset_WindowCommon.FireRatingstays 71 missing (W7: windows' Pset_WindowCommon.FireRating is read from family-parameter table entries (R2025 models 12 to 17, held-out models) #1507);Manufacturergains 11, 3 and 5 equal on Electrical, Mechanical and Plumbing, none different; Architecture's IFC ismain's; the one extra is on Plumbing, above;FireRating;IFCPROPERTYSET6,510 to 6,514 andIFCPROPERTYSINGLEVALUE27,962 to 28,066, which the pins and the witness observations already hold, and the witness replay matches (counts and hash unchanged), so nothing was refreshed;decoded.parameter_value_count4,126 to 4,180, the values counted apart 4,126 to 4,177;rac_basicsamples (2024 to 2027): 23 type objects gain aManufacturereach, unscored;main's: 99 the same, 12 moved (the office files, AA, Core Interior, RE1 Electrical, Mechanical and Plumbing, Snowdon Architectural and the fourrac_basicsamples), each by the properties above and no others; the 24 R2025 models, the 17 other held-out models, Einhoven and RE1 Architecture aremain's;FireRatingare 128 of 128 and 710 of 710 equal);Not measured: the rule on Revit 2015 to 2023, where no model of the run (the 33 samples of those releases and the held-out models of 2018 to 2022 included) has a table-form value that moved; and the copies of a type's entry across partitions on the office (all in
Partitions/425).