Relevancy of material layer set usage to standard case elements?

In the docs, chapter " Material Layer Set Usage" it reads:

The concept of Material Layer Set Usage is only applicable to certain product subtypes, refered to as “Standard case” elements. It supports a certain range of parametric definitions for those element configurations.

Can anyone confirm that this sentence is incorrect, as the standard case elements are being deprecated? I believe the intention is that it applies to walls that fit the rules of extrusion such that you can derive the layers, which may or may not be standard case in the future.

Even in the current, I see many IfcSlabs (not standard case) with layer set usages.

Your summary of what “standard case” means appears correct to me. The sentence provides an informal restriction on material layer set usage and does not conflict with the deprecation of entity types IfcWallStandardCase and similar. I assume it will stay valid no matter if and how the notion of “standard case” is reflected formally in the model.

Note that even with the “standard case” entity types, IfcMaterialLayerSetUsage was not formally restricted to be used only with these types, if I am not mistaken. Instead, the “standard case” entity types where required to have a reference from some IfcMaterialLayerSetUsage. So material layer sets where mandatory for (not restricted to) standard case entity types.

I agree with you in that the intention of deprecation is unclear. I realized that IFC 4.2 introduced new attributes to the standard case entity types (after their deprecation!), e.g. IfcWallStandardCase.PositionedRelativeTo. Because deprecated entity types should never be exported, only imported, it does not make sense, because these attributes would never be populated.

Edit: The latter seems to be a quirk in how changes are retrieved for the documentation. The attributes where actually introduced on the “general case” supertypes, e.g. IfcWall.

These two statements contradict (emphasis mine):

The concept of Material Layer Set Usage is only applicable to certain product subtypes

… and …

Note that even with the “standard case” entity types, IfcMaterialLayerSetUsage was not formally restricted to be used only with these types, if I am not mistaken.

I have also come across layer set usages being defined on non extrusions, such as faceted breps coming from Revit. Are these considered standard case? If it is prismatic, it could be, but how is the position of the layer start points determined?

In any case, I believe someone needs to sit down and reword the docs to remove confusion.

I don’t know about the authors of the first statement, but in my reading “product subtypes” is an informal declaration, while in the second statement I was talking about “entity types” formally specified in the schema.

I think we agree that being “standard case” boils down to geometric properties as found in typical building elements which make the definition of material layers possible in the first place. Whether and how this “standard-case-ness” is to be reflected in the schema through dedicated entity types - I believe this is and has been a matter of debate and opinion. Do we model and require particular representation types (e.g. if it is prismatic it must be an extrusion) or particular product types (e.g. if it is prismatic it must be IfcWallStandardCase)?

Isn’t it the local coordinate system (origin and orientation) that determines layer position and orientation?

Absolutely agree. Coming back to your original question - the information about what makes up a “standard case” (now noted at deprecated entity types) would have to be moved somewhere else or the notion of “standard case” be removed from the part 4 of the documentation altogether as you suggest.

You’d think so, but apparently not, see “Blue coordinates = IfcExtrudedAreaSolid.Position”:


True, that seems like an exception, but I think it is just a special case. Isn’t that Position in fact just an (optional) additional transformation of the local coordinate system for IfcSweptAreaSolid entities? I guess it is there because when swept representation items are offset or rotated it is nicer to declare the final placement “after” the sweeping operation (“after” in the order in which CSG operations are applied) rather than placing both the swept area and the sweep definition (for example rotation axis) off the local placement? This Position is relative to the local coordinate system and when not given (as it is optional), material layer set usage would resort to the local coordinate system anyhow. Same would apply for representation item types that don’t have that Position attribute in the first place. But that’s just my reading, I might overlook more subtle implications.

@berlotti it seems as though there are clearly some ambiguities and interpretation. What is the right way to take this forward? I’m hesitant to create an issue in the next-gen IFC repo, as I have no concrete solutions. Is there a domain expert in layer set usages who can help clarify these? I know that @aothms has an implementation in IfcOpenShell, and I assume other implementers have had to make a call too.