MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / mergeModels

Method mergeModels

src/model/ModelMerger.cpp:985–1023  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

983 }
984
985 void ModelMerger::mergeModels(Model& currentModel, const Model& newModel, const std::map<UUID, UUID>& handleMapping) {
986 m_logSink.setThreadId(std::this_thread::get_id());
987 m_logSink.resetStringStream();
988
989 m_currentModel = currentModel;
990 m_newModel = newModel;
991
992 m_newMergedHandles.clear();
993 m_currentToNewHandleMapping = handleMapping;
994 m_newToCurrentHandleMapping.clear();
995 for (const auto& it : handleMapping) {
996 if (m_newToCurrentHandleMapping.find(it.second) != m_newToCurrentHandleMapping.end()) {
997 LOG(Error, "Multiple entries in current model refer to handle '" << toString(it.second) << "' in new model");
998 }
999 m_newToCurrentHandleMapping[it.second] = it.first;
1000 }
1001
1002 //** Remove objects from current model that are not in new model **//
1003 for (const auto& iddObjectType : iddObjectTypesToMerge()) {
1004 for (auto& currenObject : currentModel.getObjectsByType(iddObjectType)) {
1005 if (m_currentToNewHandleMapping.find(currenObject.handle()) == m_currentToNewHandleMapping.end()) {
1006 if ((iddObjectType == IddObjectType::OS_Site) || (iddObjectType == IddObjectType::OS_Facility)
1007 || (iddObjectType == IddObjectType::OS_Building)) {
1008 // These are unique objects, so no need to delete them
1009 continue;
1010 } else {
1011 currenObject.remove();
1012 }
1013 }
1014 }
1015 }
1016
1017 //** Merge objects from new model into current model **//
1018 for (const auto& iddObjectType : iddObjectTypesToMerge()) {
1019 for (auto& newObject : newModel.getObjectsByType(iddObjectType)) {
1020 getCurrentModelObject(newObject);
1021 }
1022 }
1023 }
1024
1025 std::vector<IddObjectType> ModelMerger::iddObjectTypesToMerge() const {
1026 return m_iddObjectTypesToMerge;

Callers 5

TEST_FFunction · 0.80
TEST_FFunction · 0.80
TEST_FFunction · 0.80
TEST_FFunction · 0.80
TEST_FFunction · 0.80

Calls 9

setThreadIdMethod · 0.80
resetStringStreamMethod · 0.80
toStringFunction · 0.50
clearMethod · 0.45
findMethod · 0.45
endMethod · 0.45
getObjectsByTypeMethod · 0.45
handleMethod · 0.45
removeMethod · 0.45

Tested by 5

TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64
TEST_FFunction · 0.64