diff --git a/src/ifcconvert/XmlSerializer.cpp b/src/ifcconvert/XmlSerializer.cpp index 1bc02c4593..cf1f97cfe8 100644 --- a/src/ifcconvert/XmlSerializer.cpp +++ b/src/ifcconvert/XmlSerializer.cpp @@ -432,8 +432,11 @@ void XmlSerializer::finalize() { emitted_materials.insert(mat); ptree node; node.put(".id", qualify_unrooted_instance(mat)); - if (mat->as()) { - IfcMaterialLayerSet* layerset = mat->as()->ForLayerSet(); + if (mat->as() || mat->as()) { + IfcMaterialLayerSet* layerset = mat->as(); + if (!layerset) { + layerset = mat->as()->ForLayerSet(); + } if (layerset->hasLayerSetName()) { node.put(".LayerSetName", layerset->LayerSetName()); }