diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index f9b873ec97..66ee47e5e4 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -1744,6 +1744,18 @@ IfcUtil::IfcBaseClass* IfcFile::addEntity(IfcUtil::IfcBaseClass* entity, int id) (*it) *= conversion_factor; } + IfcWrite::IfcWriteArgument* copy = new IfcWrite::IfcWriteArgument(); + copy->set(v); + we->setArgument(i, copy); + } else if (attr_type == IfcUtil::Argument_AGGREGATE_OF_AGGREGATE_OF_DOUBLE) { + std::vector> v = *attr; + for (std::vector>::iterator it = v.begin(); it != v.end(); ++it) { + std::vector& v2 = (*it); + for (std::vector::iterator jt = v2.begin(); jt != v2.end(); ++jt) { + (*jt) *= conversion_factor; + } + } + IfcWrite::IfcWriteArgument* copy = new IfcWrite::IfcWriteArgument(); copy->set(v); we->setArgument(i, copy); @@ -2247,6 +2259,11 @@ void IfcFile::setDefaultHeaderValues() { std::pair IfcFile::getUnit(const std::string& unit_type) { std::pair return_value(0, 1.); IfcEntityList::ptr projects = instances_by_type(schema()->declaration_by_name("IfcProject")); + if ( ! projects) { + try { + projects = instances_by_type(schema()->declaration_by_name("IfcContext")); + } catch ( IfcException& e ) {} + } if (projects && projects->size() == 1) { IfcUtil::IfcBaseClass* project = *projects->begin();