The related objects of an entity's structural relationships — never the
IfcRel* entities themselves:
voids — the IfcOpeningElements that void this element
(IfcRelVoidsElement, host → opening).
fills — the IfcOpeningElement this element fills
(IfcRelFillsElement, filler → opening).
groups — the IfcZone / IfcGroup / IfcSystem it is assigned to.
connections — the elements it is joined to.
The field names are deliberately not EXPRESS names, and #2422 resolved to
keep them. IFC's own names for these traversals (HasOpenings, FillsVoids,
HasAssignments, ConnectedTo / ConnectedFrom) are INVERSE attributes
holding the IfcRel* entity, which is not what these arrays contain — so
"use the exact EXPRESS name" has no name to offer here. Renaming voids to
openings is not a fix either: voidsandfills both hold
IfcOpeningElements, and only the voids/fills pair — buildingSMART's own
vocabulary for the two directions — tells them apart. Pinned by
packages/parser/test/relationship-field-semantics-2422.test.ts.
The related objects of an entity's structural relationships — never the
IfcRel*entities themselves:voids— theIfcOpeningElements that void this element (IfcRelVoidsElement, host → opening).fills— theIfcOpeningElementthis element fills (IfcRelFillsElement, filler → opening).groups— theIfcZone/IfcGroup/IfcSystemit is assigned to.connections— the elements it is joined to.The field names are deliberately not EXPRESS names, and #2422 resolved to keep them. IFC's own names for these traversals (
HasOpenings,FillsVoids,HasAssignments,ConnectedTo/ConnectedFrom) are INVERSE attributes holding theIfcRel*entity, which is not what these arrays contain — so "use the exact EXPRESS name" has no name to offer here. Renamingvoidstoopeningsis not a fix either:voidsandfillsboth holdIfcOpeningElements, and only the voids/fills pair — buildingSMART's own vocabulary for the two directions — tells them apart. Pinned bypackages/parser/test/relationship-field-semantics-2422.test.ts.