From adf784236cba6ba242ae38309e0de77e6a4e9545 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sun, 3 Oct 2021 11:36:24 +1100 Subject: [PATCH] Upon removal, empty aggregates prioritise null if possible. --- src/ifcparse/IfcParse.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index 1969241bbc..107849f0ea 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -2031,10 +2031,13 @@ void IfcFile::process_deletion_() { case IfcUtil::Argument_AGGREGATE_OF_ENTITY_INSTANCE: { aggregate_of_instance::ptr instance_list = *attr; if (instance_list->contains(entity)) { - instance_list->remove(entity); - IfcWrite::IfcWriteArgument* copy = new IfcWrite::IfcWriteArgument(); - copy->set(instance_list); + instance_list->remove(entity); + if (!instance_list->size() && related_instance->declaration().as_entity()->attribute_by_index(i)->optional()) { + copy->set(boost::blank()); + } else { + copy->set(instance_list); + } related_instance->data().setArgument(i, copy); } } break;