More on Materials
Introduction
In ifcJSON (for Ifc<5), the link between the IfcBuildingElement (Wall, Slab, Column, Beam, Door, Window, Covering, ...) and the Materials is made via the IfcRelAssociatesMaterial relationship where the relatedObjects are the concerned IfcBuildingElement and the relatingMaterial is expanded on the relationship itself and not as a distinct elements with a GlobalId (GUID).
In IFC5, this will apparently change, with Material becoming an 'object' on it own.
flowchart TB
subgraph relationship
subgraph relatingMaterial
IfcMaterialSelect([IfcMaterialSelect])
IfcMaterialSelect --o IfcMaterialLayerSetUsage
IfcMaterialSelect --o IfcMaterialLayerSet
IfcMaterialSelect --o IfcMaterialLayer
IfcMaterialSelect --o IfcMaterial
IfcMaterialLayerSetUsage --o IfcMaterialLayerSet
IfcMaterialLayerSet --o IfcMaterialLayer
IfcMaterialLayer --o IfcMaterial
end
IfcRelAssociatesMaterial --o IfcMaterialSelect
end
subgraph relatedObjects
IfcBuildingElement["IfcWall,<br/>IfcSlab,<br/>IfcColumn,<br/>IfcBeam,<br/>IfcDoor,<br/>IfcWindow,<br/>..."]
end
IfcRelAssociatesMaterial -- referenced via globalId --o IfcBuildingElement
This diagram is a simplification. Practically, The official 4.3.2.0 documentation for "IFC 4.3". is the source of detailed information.
There is the assignment of a Material to an Object (IfcMaterialList is deprecated in IFC4)
There is also the Layering
IFC Material Layer Set Usage for a Wall:
IFC Material Layer Set Usage for a Slab:
A Material can be styled: