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

Method mergeSpace

src/model/ModelMerger.cpp:296–531  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

294 }
295
296 void ModelMerger::mergeSpace(Space& currentSpace, const Space& newSpace) {
297 if (m_newMergedHandles.find(newSpace.handle()) != m_newMergedHandles.end()) {
298 // already merged
299 return;
300 }
301 m_newMergedHandles.insert(newSpace.handle());
302
303 currentSpace.setName(newSpace.nameString());
304
305 if (newSpace.isDirectionofRelativeNorthDefaulted()) {
306 currentSpace.resetDirectionofRelativeNorth();
307 } else {
308 currentSpace.setDirectionofRelativeNorth(newSpace.directionofRelativeNorth());
309 }
310
311 if (newSpace.isXOriginDefaulted()) {
312 currentSpace.resetXOrigin();
313 } else {
314 currentSpace.setXOrigin(newSpace.xOrigin());
315 }
316
317 if (newSpace.isYOriginDefaulted()) {
318 currentSpace.resetYOrigin();
319 } else {
320 currentSpace.setYOrigin(newSpace.yOrigin());
321 }
322
323 if (newSpace.isZOriginDefaulted()) {
324 currentSpace.resetZOrigin();
325 } else {
326 currentSpace.setZOrigin(newSpace.zOrigin());
327 }
328
329 // remove current surfaces
330 for (auto& currentSurface : currentSpace.surfaces()) {
331 currentSurface.remove();
332 }
333
334 // remove current shadingSurfaceGroups
335 for (auto& shadingSurfaceGroup : currentSpace.shadingSurfaceGroups()) {
336 shadingSurfaceGroup.remove();
337 }
338
339 // add new surfaces
340 for (const auto& newSurface : newSpace.surfaces()) {
341 // DLM: this should probably be moved to a mergeSurface method
342 auto clone = newSurface.clone(m_currentModel).cast<Surface>();
343 clone.setSpace(currentSpace);
344
345 m_newMergedHandles.insert(newSurface.handle());
346 m_currentToNewHandleMapping[clone.handle()] = newSurface.handle();
347 m_newToCurrentHandleMapping[newSurface.handle()] = clone.handle();
348
349 boost::optional<Surface> newAdjacentSurface = newSurface.adjacentSurface();
350 if (newAdjacentSurface) {
351 boost::optional<UUID> currentAdjacentSurfaceHandle = getCurrentModelHandle(newAdjacentSurface->handle());
352 if (currentAdjacentSurfaceHandle) {
353 boost::optional<Surface> currentAdjacentSurface = m_currentModel.getModelObject<Surface>(*currentAdjacentSurfaceHandle);

Callers

nothing calls this directly

Calls 15

circularEqualFunction · 0.85
nameStringMethod · 0.80
adjacentSurfaceMethod · 0.80
setAdjacentSurfaceMethod · 0.80
adjacentSubSurfaceMethod · 0.80
setAdjacentSubSurfaceMethod · 0.80
shadedSubSurfaceMethod · 0.80
setShadedSubSurfaceMethod · 0.80
shadedSurfaceMethod · 0.80
setShadedSurfaceMethod · 0.80
buildingStoryMethod · 0.80
setBuildingStoryMethod · 0.80

Tested by

no test coverage detected