Resolve the common IfcRoot-family display attributes (GlobalId, Name,
Description, ObjectType, Tag) from an entity's raw attribute array.
These are mapped by schema-derived attribute name, not fixed index. The
fixed indices [0],[2],[3],[4],[7] only hold for the IfcElement layout: for
a spatial element attrs[7] is LongName (not Tag), and for a resource entity
like IfcMaterial attrs[0] is Name (not GlobalId). Name-mapping keeps all of
these correct for every entity type, returning '' for attributes the type
does not declare.
For types the schema registry does not recognise (e.g. an IFC4x3 infra leaf
outside the codegen pin, or a vendor extension) we fall back to the canonical
IfcRoot/IfcElement positions so we never regress vs. the old fixed-index path.
Resolve the common IfcRoot-family display attributes (GlobalId, Name, Description, ObjectType, Tag) from an entity's raw attribute array.
These are mapped by schema-derived attribute name, not fixed index. The fixed indices
[0],[2],[3],[4],[7]only hold for the IfcElement layout: for a spatial elementattrs[7]is LongName (not Tag), and for a resource entity like IfcMaterialattrs[0]is Name (not GlobalId). Name-mapping keeps all of these correct for every entity type, returning '' for attributes the type does not declare.For types the schema registry does not recognise (e.g. an IFC4x3 infra leaf outside the codegen pin, or a vendor extension) we fall back to the canonical IfcRoot/IfcElement positions so we never regress vs. the old fixed-index path.