mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2427 2d intersection view. Display result info and curves
This commit is contained in:
parent
c695d40266
commit
69cc77e026
@ -31,6 +31,8 @@
|
||||
#include "Rim3dView.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "Rim2dIntersectionView.h"
|
||||
#include "RimIntersection.h"
|
||||
|
||||
#include "cvfBase.h"
|
||||
//#include "cvfTrace.h"
|
||||
@ -68,8 +70,18 @@ void RiuPvtPlotUpdater::updateOnSelectionChanged(const RiuSelectionItem* selecti
|
||||
m_sourceEclipseViewOfLastPlot = NULL;
|
||||
bool mustClearPlot = true;
|
||||
|
||||
const RiuEclipseSelectionItem* eclipseSelectionItem = dynamic_cast<const RiuEclipseSelectionItem*>(selectionItem);
|
||||
const RimEclipseView* eclipseView = eclipseSelectionItem ? eclipseSelectionItem->m_view.p() : NULL;
|
||||
RiuEclipseSelectionItem* eclipseSelectionItem = dynamic_cast<RiuEclipseSelectionItem*>(const_cast<RiuSelectionItem*>(selectionItem));
|
||||
RimEclipseView* eclipseView = eclipseSelectionItem ? eclipseSelectionItem->m_view.p() : NULL;
|
||||
|
||||
if (!eclipseSelectionItem && !eclipseView)
|
||||
{
|
||||
const Riu2dIntersectionSelectionItem* intersectionSelItem = dynamic_cast<const Riu2dIntersectionSelectionItem*>(selectionItem);
|
||||
if (intersectionSelItem && intersectionSelItem->eclipseSelectionItem())
|
||||
{
|
||||
eclipseSelectionItem = intersectionSelItem->eclipseSelectionItem();
|
||||
eclipseView = eclipseSelectionItem->m_view;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_targetPlotPanel->isVisible() && eclipseSelectionItem && eclipseView)
|
||||
{
|
||||
|
@ -30,6 +30,8 @@
|
||||
#include "Rim3dView.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "Rim2dIntersectionView.h"
|
||||
#include "RimIntersection.h"
|
||||
|
||||
#include "cvfBase.h"
|
||||
//#include "cvfTrace.h"
|
||||
@ -68,8 +70,18 @@ void RiuRelativePermeabilityPlotUpdater::updateOnSelectionChanged(const RiuSelec
|
||||
m_sourceEclipseViewOfLastPlot = NULL;
|
||||
bool mustClearPlot = true;
|
||||
|
||||
const RiuEclipseSelectionItem* eclipseSelectionItem = dynamic_cast<const RiuEclipseSelectionItem*>(selectionItem);
|
||||
const RimEclipseView* eclipseView = eclipseSelectionItem ? eclipseSelectionItem->m_view.p() : NULL;
|
||||
RiuEclipseSelectionItem* eclipseSelectionItem = dynamic_cast<RiuEclipseSelectionItem*>(const_cast<RiuSelectionItem*>(selectionItem));
|
||||
RimEclipseView* eclipseView = eclipseSelectionItem ? eclipseSelectionItem->m_view.p() : NULL;
|
||||
|
||||
if (!eclipseSelectionItem && !eclipseView)
|
||||
{
|
||||
const Riu2dIntersectionSelectionItem* intersectionSelItem = dynamic_cast<const Riu2dIntersectionSelectionItem*>(selectionItem);
|
||||
if (intersectionSelItem && intersectionSelItem->eclipseSelectionItem())
|
||||
{
|
||||
eclipseSelectionItem = intersectionSelItem->eclipseSelectionItem();
|
||||
eclipseView = eclipseSelectionItem->m_view;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_targetPlotPanel->isVisible() && eclipseSelectionItem && eclipseView)
|
||||
{
|
||||
|
@ -35,6 +35,8 @@
|
||||
#include "RimGeoMechCase.h"
|
||||
#include "RimGeoMechResultDefinition.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "Rim2dIntersectionView.h"
|
||||
#include "RimIntersection.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "RiuFemResultTextBuilder.h"
|
||||
@ -238,6 +240,21 @@ void RiuSelectionChangedHandler::addCurveFromSelectionItem(const RiuGeoMechSelec
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuSelectionChangedHandler::addCurveFromSelectionItem(const Riu2dIntersectionSelectionItem* selectionItem) const
|
||||
{
|
||||
if (selectionItem->eclipseSelectionItem())
|
||||
{
|
||||
addCurveFromSelectionItem(selectionItem->eclipseSelectionItem());
|
||||
}
|
||||
else if (selectionItem->geoMechSelectionItem())
|
||||
{
|
||||
addCurveFromSelectionItem(selectionItem->geoMechSelectionItem());
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -255,6 +272,13 @@ void RiuSelectionChangedHandler::addCurveFromSelectionItem(const RiuSelectionIte
|
||||
|
||||
addCurveFromSelectionItem(geomSelectionItem);
|
||||
}
|
||||
else if (itemAdded->type() == RiuSelectionItem::INTERSECTION_SELECTION_OBJECT)
|
||||
{
|
||||
const Riu2dIntersectionSelectionItem* _2dSelectionItem = static_cast<const Riu2dIntersectionSelectionItem*>(itemAdded);
|
||||
|
||||
addCurveFromSelectionItem(_2dSelectionItem);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -283,11 +307,19 @@ void RiuSelectionChangedHandler::updateResultInfo(const RiuSelectionItem* itemAd
|
||||
QString resultInfo;
|
||||
QString pickInfo;
|
||||
|
||||
if (itemAdded != NULL)
|
||||
RiuSelectionItem* selItem = const_cast<RiuSelectionItem*>(itemAdded);
|
||||
if (selItem != NULL)
|
||||
{
|
||||
if (itemAdded->type() == RiuSelectionItem::ECLIPSE_SELECTION_OBJECT)
|
||||
if (selItem->type() == RiuSelectionItem::INTERSECTION_SELECTION_OBJECT)
|
||||
{
|
||||
const RiuEclipseSelectionItem* eclipseSelectionItem = static_cast<const RiuEclipseSelectionItem*>(itemAdded);
|
||||
const Riu2dIntersectionSelectionItem* wrapperSelItem = dynamic_cast<Riu2dIntersectionSelectionItem*>(selItem);
|
||||
if (wrapperSelItem && wrapperSelItem->eclipseSelectionItem()) selItem = wrapperSelItem->eclipseSelectionItem();
|
||||
else if (wrapperSelItem && wrapperSelItem->geoMechSelectionItem()) selItem = wrapperSelItem->geoMechSelectionItem();
|
||||
}
|
||||
|
||||
if (selItem->type() == RiuSelectionItem::ECLIPSE_SELECTION_OBJECT)
|
||||
{
|
||||
const RiuEclipseSelectionItem* eclipseSelectionItem = static_cast<const RiuEclipseSelectionItem*>(selItem);
|
||||
|
||||
RimEclipseView* eclipseView = eclipseSelectionItem->m_view.p();
|
||||
|
||||
@ -300,9 +332,9 @@ void RiuSelectionChangedHandler::updateResultInfo(const RiuSelectionItem* itemAd
|
||||
|
||||
pickInfo = textBuilder.geometrySelectionText(", ");
|
||||
}
|
||||
else if (itemAdded->type() == RiuSelectionItem::GEOMECH_SELECTION_OBJECT)
|
||||
else if (selItem->type() == RiuSelectionItem::GEOMECH_SELECTION_OBJECT)
|
||||
{
|
||||
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>(itemAdded);
|
||||
const RiuGeoMechSelectionItem* geomSelectionItem = static_cast<const RiuGeoMechSelectionItem*>(selItem);
|
||||
|
||||
RimGeoMechView* geomView = geomSelectionItem->m_view.p();
|
||||
RiuFemResultTextBuilder textBuilder(geomView, (int)geomSelectionItem->m_gridIndex, (int)geomSelectionItem->m_cellIndex, geomView->currentTimeStep());
|
||||
|
@ -22,6 +22,7 @@
|
||||
class RiuSelectionItem;
|
||||
class RiuEclipseSelectionItem;
|
||||
class RiuGeoMechSelectionItem;
|
||||
class Riu2dIntersectionSelectionItem;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
@ -40,6 +41,7 @@ private:
|
||||
void addCurveFromSelectionItem(const RiuSelectionItem* itemAdded) const;
|
||||
void addCurveFromSelectionItem(const RiuEclipseSelectionItem* selectionItem) const;
|
||||
void addCurveFromSelectionItem(const RiuGeoMechSelectionItem* selectionItem) const;
|
||||
void addCurveFromSelectionItem(const Riu2dIntersectionSelectionItem* selectionItem) const;
|
||||
|
||||
void scheduleUpdateForAllVisibleViews() const;
|
||||
void updateResultInfo(const RiuSelectionItem* itemAdded) const;
|
||||
|
@ -19,9 +19,11 @@
|
||||
|
||||
#include "RiuSelectionManager.h"
|
||||
|
||||
#include "RimGridView.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimGeoMechView.h"
|
||||
#include "RimSimWellInView.h"
|
||||
#include "Rim2dIntersectionView.h"
|
||||
#include "RimWellPath.h"
|
||||
|
||||
#include "RivSimWellPipeSourceInfo.h"
|
||||
@ -155,7 +157,13 @@ void RiuSelectionManager::deleteAllItemsFromSelection(int role)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuEclipseSelectionItem::RiuEclipseSelectionItem(RimEclipseView* view, size_t gridIndex, size_t cellIndex, size_t nncIndex, cvf::Color3f color, cvf::StructGridInterface::FaceType face, const cvf::Vec3d& localIntersectionPoint)
|
||||
RiuEclipseSelectionItem::RiuEclipseSelectionItem(RimEclipseView* view,
|
||||
size_t gridIndex,
|
||||
size_t cellIndex,
|
||||
size_t nncIndex,
|
||||
cvf::Color3f color,
|
||||
cvf::StructGridInterface::FaceType face,
|
||||
const cvf::Vec3d& localIntersectionPoint)
|
||||
: m_view(view),
|
||||
m_gridIndex(gridIndex),
|
||||
m_gridLocalCellIndex(cellIndex),
|
||||
@ -207,6 +215,40 @@ RiuGeoMechSelectionItem::RiuGeoMechSelectionItem(RimGeoMechView* view,
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
Riu2dIntersectionSelectionItem::Riu2dIntersectionSelectionItem(RiuSelectionItem *selItem)
|
||||
{
|
||||
m_eclipseSelItem = dynamic_cast<RiuEclipseSelectionItem*>(selItem);
|
||||
m_geoMechSelItem = dynamic_cast<RiuGeoMechSelectionItem*>(selItem);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
Riu2dIntersectionSelectionItem::~Riu2dIntersectionSelectionItem()
|
||||
{
|
||||
if (m_eclipseSelItem) delete m_eclipseSelItem;
|
||||
if (m_geoMechSelItem) delete m_geoMechSelItem;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuEclipseSelectionItem* Riu2dIntersectionSelectionItem::eclipseSelectionItem() const
|
||||
{
|
||||
return m_eclipseSelItem;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RiuGeoMechSelectionItem* Riu2dIntersectionSelectionItem::geoMechSelectionItem() const
|
||||
{
|
||||
return m_geoMechSelItem;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -32,9 +32,11 @@
|
||||
// #include "RivWellPathSourceInfo.h"
|
||||
// #include "RivWellPipeSourceInfo.h"
|
||||
|
||||
class RimGridView;
|
||||
class RimEclipseView;
|
||||
class RimGeoMechView;
|
||||
class RimSimWellInView;
|
||||
class Rim2dIntersectionView;
|
||||
class RimWellPath;
|
||||
class RiuSelectionChangedHandler;
|
||||
class RiuSelectionItem;
|
||||
@ -109,7 +111,8 @@ public:
|
||||
GEOMECH_SELECTION_OBJECT,
|
||||
WELLPATH_SELECTION_OBJECT,
|
||||
SIMWELL_SELECTION_OBJECT,
|
||||
GENERAL_SELECTION_OBJECT
|
||||
GENERAL_SELECTION_OBJECT,
|
||||
INTERSECTION_SELECTION_OBJECT
|
||||
};
|
||||
|
||||
public:
|
||||
@ -128,8 +131,13 @@ public:
|
||||
class RiuEclipseSelectionItem : public RiuSelectionItem
|
||||
{
|
||||
public:
|
||||
explicit RiuEclipseSelectionItem(RimEclipseView* view, size_t gridIndex, size_t cellIndex, size_t nncIndex,
|
||||
cvf::Color3f color, cvf::StructGridInterface::FaceType face, const cvf::Vec3d& localIntersectionPoint);
|
||||
explicit RiuEclipseSelectionItem(RimEclipseView* view,
|
||||
size_t gridIndex,
|
||||
size_t cellIndex,
|
||||
size_t nncIndex,
|
||||
cvf::Color3f color,
|
||||
cvf::StructGridInterface::FaceType face,
|
||||
const cvf::Vec3d& localIntersectionPoint);
|
||||
|
||||
virtual ~RiuEclipseSelectionItem() {};
|
||||
|
||||
@ -190,6 +198,33 @@ public:
|
||||
};
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//==================================================================================================
|
||||
class Riu2dIntersectionSelectionItem : public RiuSelectionItem
|
||||
{
|
||||
public:
|
||||
explicit Riu2dIntersectionSelectionItem(RiuSelectionItem *selItem);
|
||||
|
||||
virtual ~Riu2dIntersectionSelectionItem();
|
||||
|
||||
virtual RiuSelectionType type() const
|
||||
{
|
||||
return INTERSECTION_SELECTION_OBJECT;
|
||||
}
|
||||
|
||||
public:
|
||||
RiuEclipseSelectionItem* eclipseSelectionItem() const;
|
||||
RiuGeoMechSelectionItem* geoMechSelectionItem() const;
|
||||
|
||||
private:
|
||||
RiuEclipseSelectionItem* m_eclipseSelItem;
|
||||
RiuGeoMechSelectionItem* m_geoMechSelItem;
|
||||
};
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include "RimPerforationInterval.h"
|
||||
#include "RimStimPlanFractureTemplate.h"
|
||||
#include "RimEllipseFractureTemplate.h"
|
||||
#include "Rim2dIntersectionView.h"
|
||||
|
||||
#include "RiuMainWindow.h"
|
||||
#include "RiuSelectionManager.h"
|
||||
@ -605,27 +606,35 @@ void RiuViewerCommands::handlePickAction(int winPosX, int winPosY, Qt::KeyboardM
|
||||
|
||||
RiuSelectionItem* selItem = nullptr;
|
||||
{
|
||||
Rim2dIntersectionView* intersectionView = dynamic_cast<Rim2dIntersectionView*>(m_reservoirView.p());
|
||||
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(m_reservoirView.p());
|
||||
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>(m_reservoirView.p());
|
||||
|
||||
if (intersectionView)
|
||||
{
|
||||
intersectionView->intersection()->firstAncestorOrThisOfType(eclipseView);
|
||||
intersectionView->intersection()->firstAncestorOrThisOfType(geomView);
|
||||
}
|
||||
|
||||
if (eclipseView)
|
||||
{
|
||||
selItem = new RiuEclipseSelectionItem(eclipseView, gridIndex, cellIndex, nncIndex, curveColor, face, localIntersectionPoint);
|
||||
}
|
||||
|
||||
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>(m_reservoirView.p());
|
||||
if (geomView )
|
||||
if (geomView)
|
||||
{
|
||||
if(intersectionHit) selItem = new RiuGeoMechSelectionItem(geomView, gridIndex, cellIndex, curveColor, gmFace, localIntersectionPoint, intersectionTriangleHit);
|
||||
else selItem = new RiuGeoMechSelectionItem(geomView, gridIndex, cellIndex, curveColor, gmFace, localIntersectionPoint);
|
||||
}
|
||||
|
||||
|
||||
if (intersectionView) selItem = new Riu2dIntersectionSelectionItem(selItem);
|
||||
}
|
||||
|
||||
if (appendToSelection)
|
||||
{
|
||||
RiuSelectionManager::instance()->appendItemToSelection(selItem);
|
||||
}
|
||||
else
|
||||
else if(selItem)
|
||||
{
|
||||
RiuSelectionManager::instance()->setSelectedItem(selItem);
|
||||
}
|
||||
@ -648,17 +657,23 @@ void RiuViewerCommands::findCellAndGridIndex(const RivIntersectionSourceInfo* cr
|
||||
{
|
||||
CVF_ASSERT(cellIndex && gridIndex);
|
||||
|
||||
RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(m_reservoirView.p());
|
||||
RimGeoMechView* geomView = dynamic_cast<RimGeoMechView*>(m_reservoirView.p());
|
||||
if (eclipseView)
|
||||
RimCase* ownerCase = m_reservoirView->ownerCase();
|
||||
RimEclipseCase* eclipseCase = dynamic_cast<RimEclipseCase*>(ownerCase);
|
||||
RimGeoMechCase* geomCase = dynamic_cast<RimGeoMechCase*>(ownerCase);
|
||||
if (eclipseCase)
|
||||
{
|
||||
//RimEclipseView* eclipseView = dynamic_cast<RimEclipseView*>(m_reservoirView.p());
|
||||
RimEclipseView* eclipseView;
|
||||
crossSectionSourceInfo->crossSection()->firstAncestorOrThisOfType(eclipseView);
|
||||
|
||||
size_t globalCellIndex = crossSectionSourceInfo->triangleToCellIndex()[firstPartTriangleIndex];
|
||||
|
||||
const RigCell& cell = eclipseView->mainGrid()->globalCellArray()[globalCellIndex];
|
||||
|
||||
*cellIndex = cell.gridLocalCellIndex();
|
||||
*gridIndex = cell.hostGrid()->gridIndex();
|
||||
}
|
||||
else if (geomView)
|
||||
else if (geomCase)
|
||||
{
|
||||
*cellIndex = crossSectionSourceInfo->triangleToCellIndex()[firstPartTriangleIndex];
|
||||
*gridIndex = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user