#2549 2dIntersectionView. Update when modifying SimWellInView

This commit is contained in:
Bjørn Erik Jensen
2018-03-08 13:08:06 +01:00
parent 0bdde36aa3
commit 3feaa55d02
2 changed files with 53 additions and 5 deletions

View File

@@ -35,6 +35,8 @@
#include "RimSimWellFracture.h" #include "RimSimWellFracture.h"
#include "RimSimWellFractureCollection.h" #include "RimSimWellFractureCollection.h"
#include "RimSimWellInViewCollection.h" #include "RimSimWellInViewCollection.h"
#include "RimIntersection.h"
#include "Rim2dIntersectionView.h"
#include "RiuMainWindow.h" #include "RiuMainWindow.h"
@@ -43,6 +45,13 @@
#include "cafPdmUiTreeOrdering.h" #include "cafPdmUiTreeOrdering.h"
#include "cvfMath.h" #include "cvfMath.h"
//--------------------------------------------------------------------------------------------------
/// Internal functions
//--------------------------------------------------------------------------------------------------
Rim2dIntersectionView* corresponding2dIntersectionView(RimSimWellInView *simWellInView);
CAF_PDM_SOURCE_INIT(RimSimWellInView, "Well"); CAF_PDM_SOURCE_INIT(RimSimWellInView, "Well");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -110,6 +119,7 @@ void RimSimWellInView::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
&wellPipeColor == changedField) &wellPipeColor == changedField)
{ {
reservoirView->scheduleCreateDisplayModelAndRedraw(); reservoirView->scheduleCreateDisplayModelAndRedraw();
schedule2dIntersectionViewUpdate();
} }
else if (&showWell == changedField || else if (&showWell == changedField ||
&showWellCells == changedField || &showWellCells == changedField ||
@@ -118,15 +128,14 @@ void RimSimWellInView::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
{ {
reservoirView->scheduleGeometryRegen(VISIBLE_WELL_CELLS); reservoirView->scheduleGeometryRegen(VISIBLE_WELL_CELLS);
reservoirView->scheduleCreateDisplayModelAndRedraw(); reservoirView->scheduleCreateDisplayModelAndRedraw();
schedule2dIntersectionViewUpdate();
} }
else if ( &pipeScaleFactor == changedField else if ( &pipeScaleFactor == changedField
|| &wellHeadScaleFactor == changedField) || &wellHeadScaleFactor == changedField)
{
if (reservoirView)
{ {
reservoirView->scheduleSimWellGeometryRegen(); reservoirView->scheduleSimWellGeometryRegen();
reservoirView->scheduleCreateDisplayModelAndRedraw(); reservoirView->scheduleCreateDisplayModelAndRedraw();
} schedule2dIntersectionViewUpdate();
} }
} }
@@ -352,6 +361,18 @@ bool RimSimWellInView::intersectsWellCellsFilteredCells(const RigWellResultFrame
return false; return false;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSimWellInView::schedule2dIntersectionViewUpdate()
{
Rim2dIntersectionView* intersectionView = corresponding2dIntersectionView(this);
if (intersectionView)
{
intersectionView->scheduleCreateDisplayModelAndRedraw();
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -607,3 +628,28 @@ size_t RimSimWellInView::resultWellIndex() const
return m_resultWellIndex; return m_resultWellIndex;
} }
//--------------------------------------------------------------------------------------------------
/// Internal functions
//--------------------------------------------------------------------------------------------------
Rim2dIntersectionView* corresponding2dIntersectionView(RimSimWellInView *simWellInView)
{
Rim3dView* tdView;
simWellInView->firstAncestorOrThisOfType(tdView);
std::vector<RimIntersectionCollection*> intersectionColls;
if (tdView)
{
tdView->descendantsIncludingThisOfType(intersectionColls);
if (intersectionColls.size() == 1)
{
for (const auto intersection : intersectionColls[0]->intersections())
{
if (intersection->simulationWell() == simWellInView)
{
return intersection->correspondingIntersectionView();
}
}
}
}
return nullptr;
}

View File

@@ -103,6 +103,8 @@ private:
bool intersectsWellCellsFilteredCells(const RigWellResultFrame &wrsf, size_t frameIndex) const; bool intersectsWellCellsFilteredCells(const RigWellResultFrame &wrsf, size_t frameIndex) const;
void schedule2dIntersectionViewUpdate();
private: private:
cvf::ref<RigSimWellData> m_simWellData; cvf::ref<RigSimWellData> m_simWellData;
size_t m_resultWellIndex; size_t m_resultWellIndex;