From 8396c68e75d6679b556aa2c7206afeba7f7b433e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Mart=C3=ADnez=20de=20la=20Rosa?= <36189169+christt105@users.noreply.github.com> Date: Thu, 31 Mar 2022 11:33:09 +0200 Subject: [PATCH] Added task to property / quanty relationship --- .../schema_dependent/XmlSerializer.cpp | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/serializers/schema_dependent/XmlSerializer.cpp b/src/serializers/schema_dependent/XmlSerializer.cpp index e68353c71a..241ae982d1 100644 --- a/src/serializers/schema_dependent/XmlSerializer.cpp +++ b/src/serializers/schema_dependent/XmlSerializer.cpp @@ -415,18 +415,34 @@ void format_tasks(IfcSchema::IfcTask* task, ptree& node) { } #endif + IfcSchema::IfcPropertySetDefinition::list::ptr property_sets = get_related + + (task, &IfcSchema::IfcObject::IsDefinedBy, &IfcSchema::IfcRelDefinesByProperties::RelatingPropertyDefinition); + + for (IfcSchema::IfcPropertySetDefinition::list::it it = property_sets->begin(); it != property_sets->end(); ++it) { + IfcSchema::IfcPropertySetDefinition* pset = *it; + if (pset->declaration().is(IfcSchema::IfcPropertySet::Class())) { + format_entity_instance(pset, *ntask, true); + } + else if (pset->declaration().is(IfcSchema::IfcElementQuantity::Class())) { + format_entity_instance(pset, *ntask, true); + } + } + #ifdef SCHEMA_IfcProcess_HAS_OperatesOn IfcSchema::IfcRelAssignsToProcess::list::ptr operates = task->OperatesOn(); if (operates->size() > 0) { for (IfcSchema::IfcRelAssignsToProcess::list::it i = operates->begin(); i != operates->end(); ++i) { - IfcSchema::IfcObjectDefinition::list::ptr objects = (*i)->RelatedObjects(); + IfcSchema::IfcRelAssignsToProcess* operation = (*i); + IfcSchema::IfcObjectDefinition::list::ptr objects = operation->RelatedObjects(); for (IfcSchema::IfcObjectDefinition::list::it it2 = objects->begin(); it2 != objects->end(); ++it2) { IfcSchema::IfcObjectDefinition* object = (*it2); ptree nobject; nobject.put(".id", object->GlobalId()); + nobject.put(".Type", object->declaration().name()); ntask->add_child("OperatesOn", nobject); } } @@ -555,7 +571,7 @@ void MAKE_TYPE_NAME(XmlSerializer)::finalize() { for (IfcSchema::IfcWorkSchedule::list::it it = pschedules->begin(); it != pschedules->end(); ++it) { IfcSchema::IfcWorkSchedule* schedule = *it; ptree* nschedule = format_entity_instance(schedule, tasks); - + if(nschedule) { IfcSchema::IfcRelAssignsToControl::list::ptr controls = schedule->Controls(); for(IfcSchema::IfcRelAssignsToControl::list::it it2 = controls->begin(); it2 != controls->end(); ++it2) {