When a user of IFC models without being an expert in the schematic wants to obtain a list of all the materials applied in the multiple ifc files that make up a model, which entities should he call? In the 4x3 schema there are multiple entities: IfcMaterial, IfcMaterialConstituent, IfcMaterialConstituentSet, IfcMaterialProfile, IfcMaterialProfileSet, IfcMaterialLayer, IfcMaterialLayerSet… etc. Wouldn’t it be easier to provide the user with just a single entity that collects the material name and material code? (something similar to IfcClassificationReference). I suggest simplifying these concepts in the scheme for queries by non-expert users in order to obtain complete tables of materials applied to a project. I also suggest allowing the indicative text of the material on the one hand and the code on the other (similar to the UNICLASS materials table). And finally I suggest contemplating that there is not always a 1-1 relationship (a 3D element - 1 single material) but usually for complex elements that in IFC is a single 3D element, they can be made up of multiple materials. I hope that helps. Thanks in advance.
I also suggest starting to implement these concepts related to materials in the software certifications for the IFC schemes since currently there are VERY few software developers that have implemented it.
Hi @pilarjimenez ,
Yes, there are multiple ways in which material is expressed in the schema because there are multiple ways in which it is used and dependent on the type/complexity of the object and the geometry representation. The IfcMaterial class can also have an IfcClassifcation/IfcClassificationReference, if desired. Much of that is up to the BIM authoring/editing tool UI to add that level of info. In practice, the model viewing software should be able to see all materials, regardless of class usage, but present them in their proper context. Such classification might also be expected for IfcMaterialLayerSets if they conform to a known standard - like UL (see Architectural, Engineering and Construction (AEC) UL Fire Rated Search Resources : UL Solutions Code Authorities) - for composite wall constructions.
All the material class entries in the IFC4.3 documentation (currently at https://ifc43-docs.standards.buildingsmart.org/) have pretty good explanations of why they are different. But maybe there is an opportunity to cast more light…
IfcMaterial - The most basic. Identifies the general characteristics of one material. Can be applied anywhere to any object, usually something of one material, no matter its geometry/shape. Like much of IFC, it is a class that acts as the basis for the higher-order material descriptions, meaning IfcMaterialLayer, IfcMaterialProfile, and IfcMaterialConstituent, all can refer to a common IfcMaterial, where appropriate. Then all the properties/property sets (physical and performance) are assigned to the IfcMaterial definition once, not to each instance of a layer, profile, or constituent. If you notice, there is no such thing as an “IfcMaterialType” class, as IfcMaterial is essentially a “type” class itself.
IfcMaterialLayer & IfcMaterialLayerSet - used for “simple” planar composite constructions (usually wall or floor constructions) where the layers of a constant thickness are NOT modeled individually with unique geometric representations and IfcRelAssociates to the whole (what we used to call IfcWallStandardCase). However, a more complex wall (IfcWall) can use IfcRelAggregates to create a complex aggregation of layers with their own body representations, object classes, and assigned properties (what we use to call IfcWallElementedCase). And there is another option which is to use the IfcMaterialConstituent & IfcMaterialConstituentSet and have each “layer” represented by an IfcShapeAspect, but I’m not sure what the rules are for using this method. I’ve seen it used, just not consistently.
IfcMaterialProfile & IfcMateralProfileSet - used for non-planar composite constructions (like columns or beams), very similar to previous “layer” and “layer set” usage, but for an aggregation of arbitrary geometric profiles which may vary in thickness or shape, as compared to a simple planar layer (e.g. a composite beam, see 220.127.116.11 IfcCompositeProfileDef - IFC18.104.22.168 Documentation)
IfcMaterialConstituent & IfcMaterialConstituentSet - used for both planar and non-planar composite constructions to describe materiality but more complex object and relation classing than “layer set” and “profile set”. Typically, this is a method for use in things like doors and windows (but could also apply to a myriad of objects like furniture, cabinetry, equipment, and etc.) with their many parts where their geometries have separate IfcShapeAspect representations within the composite geometric representation (see 22.214.171.124 IfcShapeAspect - IFC126.96.36.199 Documentation).
In all three cases - IfcMaterialLayerSet, IfcMaterialProfileSet, IfcMaterialConstituentSet - the respective parts can, and probably should, refer to a bunch of consistent IfcMaterial definitions within a file. My experience has been that material implementation is inconsistent from IFC file to file because so many BIM applications handle materiality of different object types in different ways, inconsistent from each other internally and between applications… much like geometry itself.
We should leave it up to the IFC4.x Implementers Forum (and the wider General Assembly) to decide on agreements for the AbRV and RV implementations of these concepts and how to best test and certify them.
I hope I got that right… (anyone? Bueller? Bueller?)
There is a simple way: Whichever material object is used, it will be referenced through IfcRelAssociatesMaterial