Repository navigation
fix(saved-graphics): a light source's filter is left out of the body instead of keeping its fixture's box (#1247) (RE-300) - #1255
Merged
Conversation
…t keeps most partial saved meshes as boxes (#1247) (RE-300)
…longer keeps its element's box, and a polymesh's per-vertex normals are read (#1247) (RE-300)
…ch GImposter, with polymesh normal bindings (#1247)
…shape that draws it, is left out of the body instead of keeping its element's box (#1247) (RE-300)
…or light-source filters (#1247)
DrunkOnJava
enabled auto-merge (squash)
November 3, 2026 00:51
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.
Summary
Saved meshes leave a light fixture's light source out of its body, instead of keeping the fixture's box. The light source is saved as a
GFilterof its own. It holds aGImposter(a transform and a renderingAssetof scalar properties, no surface) with theGeometry, curves and sometimesGPolyMeshthat draw the light. Revit's export draws none of it. The traversal now leaves that filter out, as it leaves out a filter of curves (RE-300).Motivation
#1247: a light fixture of 18,944 triangles in v0.6.1 is a 12-triangle box in v0.12.0. Reproduced on our files: Snowdon Towers electrical went from 1,420 saved meshes to 907, with 511 light fixtures kept as boxes by RE-224's partial gate.
GImposteris the class behind 1,813 of the 3,020 partial meshes in the census (Measure 41540910235). The maintainer chose (2026-11-02) to keep boxes for meshes that do not decode whole and to close decoder gaps instead; this closes this gap without drawing anything partial.Changes
src/research/native_graphics_traversal.rs: aGFilterholding aGImposterand otherwise only leaves (Geometry,GPolyMesh, curves) is a branch with no surface. All 281 observed filters are such. A filter with any other child, and aGImposteranywhere else, are walked as before (a decode failure, so the element keeps its box).probes/examples/probe_re300_graphics_imposters.rs,reports/element-framing/RE-300-light-source-filters.md, the reconnaissance addendum,changelog.d/fixed/1247-light-source-filters.md.Testing
Unit tests are banned in this repository: do not add them. Show the change working end to end on real files instead.
tools/check-local.sh: CI.mainat a8ad9dd, which reads left-handed cylinders since fix(saved-graphics): mesh a cylinder whose saved basis is left-handed, its normal turned as on a plane (#1247) (RE-301) #1252,--saved-meshes):--saved-meshesexport passes 30 MB, so IfcOpenShell's full validation skips it, as for any export over that size.GImposter(Measure 41544207306) drew the light's shape with the fixture, at 12 times Revit's volume on the office's exit signs. It is withdrawn; RE-300 §2 records it.mainat a8ad9dd, default flags, unfiltered, with the office, R2025, held-out models and samples): all 103 exports byte-identical and the scorer diff empty. No door or window's saved graphics on these files holds a light source, so the change shows only with--saved-meshes. 41549448369, at 6afb244, was cancelled when the rule was narrowed. The commit after 6689533 (1f9bb08) changes the report, changelog and addendum only.mainwith RE-301;--saved-meshes;Audit-honesty checklist
changelog.d/Legal and contribution hygiene
Contributor declaration (CLEANROOM.md): based on the saved graphics' own records read from public files (the MIT RE1 models, the CC BY-SA BIM4LCA office, Autodesk's published sample projects) and Revit's IFC exports of them; no Autodesk SDK source, disassembly or NDA material.
Breaking changes
None.