From a7d0c0c83e396f1db45912c0910ce0fa026712f7 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 27 Jul 2016 08:05:44 +0200 Subject: [PATCH] #751 : Well pipes for intersections based on Simulation Wells disappears when a Range Filter is applied --- .../RimCrossSectionCollection.cpp | 29 +++++++++++++++++-- .../RimCrossSectionCollection.h | 2 ++ .../ProjectDataModel/RimEclipseWell.cpp | 4 +++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.cpp b/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.cpp index 850e7840af..a88934215e 100644 --- a/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.cpp +++ b/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.cpp @@ -20,10 +20,13 @@ #include "RimCrossSectionCollection.h" #include "RimCrossSection.h" -#include "RivCrossSectionPartMgr.h" -#include "RiuMainWindow.h" +#include "RimEclipseWell.h" #include "RimView.h" +#include "RiuMainWindow.h" + +#include "RivCrossSectionPartMgr.h" + CAF_PDM_SOURCE_INIT(RimCrossSectionCollection, "CrossSectionCollection"); @@ -143,3 +146,25 @@ void RimCrossSectionCollection::fieldChangedByUi(const caf::PdmFieldHandle* chan } } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimCrossSectionCollection::hasActiveCrossSectionForSimulationWell(RimEclipseWell* eclipseWell) const +{ + if (!isActive) return false; + + for (size_t csIdx = 0; csIdx < m_crossSections.size(); ++csIdx) + { + RimCrossSection* cs = m_crossSections[csIdx]; + + if (cs->isActive && + cs->type() == RimCrossSection::CS_SIMULATION_WELL && + cs->simulationWell() == eclipseWell) + { + return true; + } + } + + return false; +} diff --git a/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.h b/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.h index 4c8eb9ad94..cf48b17f7f 100644 --- a/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.h +++ b/ApplicationCode/ProjectDataModel/RimCrossSectionCollection.h @@ -25,6 +25,7 @@ class RimCrossSection; class RimEclipseCellColors; +class RimEclipseWell; namespace cvf { class ModelBasicList; @@ -48,6 +49,7 @@ public: void appendCrossSection(RimCrossSection* crossSection); + bool hasActiveCrossSectionForSimulationWell(RimEclipseWell* eclipseWell) const; // Visualization interface diff --git a/ApplicationCode/ProjectDataModel/RimEclipseWell.cpp b/ApplicationCode/ProjectDataModel/RimEclipseWell.cpp index 4fa6c14651..44804189c3 100644 --- a/ApplicationCode/ProjectDataModel/RimEclipseWell.cpp +++ b/ApplicationCode/ProjectDataModel/RimEclipseWell.cpp @@ -20,6 +20,7 @@ #include "RimEclipseWell.h" +#include "RimCrossSectionCollection.h" #include "RimEclipseView.h" #include "RimEclipseWellCollection.h" @@ -179,6 +180,9 @@ bool RimEclipseWell::calculateWellPipeVisibility(size_t frameIndex) if (m_reservoirView->wellCollection()->wellPipeVisibility() == RimEclipseWellCollection::PIPES_INDIVIDUALLY) return true; + if (m_reservoirView->crossSectionCollection()->hasActiveCrossSectionForSimulationWell(this)) + return true; + if (m_reservoirView->wellCollection()->wellPipeVisibility() == RimEclipseWellCollection::PIPES_OPEN_IN_VISIBLE_CELLS) { const std::vector& visGridParts = m_reservoirView->visibleGridParts();