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();