diff --git a/src/ifcgeom/mapping/mapping.cpp b/src/ifcgeom/mapping/mapping.cpp index e465743a3d..a380274a50 100644 --- a/src/ifcgeom/mapping/mapping.cpp +++ b/src/ifcgeom/mapping/mapping.cpp @@ -197,8 +197,14 @@ std::vector mapping::find_openings(const express::Base& inst) { // Only aggregation, not nesting is considered. break; } - auto rel_obdef = decomposes.front().as().RelatingObject(); - if (rel_obdef.as() && !rel_obdef.as()) { + express::Base rel_obdef; + try { + rel_obdef = decomposes.front().as().RelatingObject(); + } catch (const std::exception&) { + // exception already logged as part of handling of placement + break; + } + if (rel_obdef && rel_obdef.as() && !rel_obdef.as()) { auto element = rel_obdef.as(); auto rels = element.HasOpenings(); for (auto& rel : rels) {