#2677 Show curve value when clicking the curve

This change will show the following:
   - Curve name
   - Well path name
   - Measured depth
   - name of variable
   - value
This commit is contained in:
Gaute Lindkvist
2018-04-25 11:00:27 +02:00
parent 3a670d94a2
commit 029369d187
9 changed files with 73 additions and 24 deletions

View File

@@ -21,6 +21,7 @@
#include "Rim3dWellLogCurve.h" #include "Rim3dWellLogCurve.h"
#include "Rim3dWellLogCurveCollection.h" #include "Rim3dWellLogCurveCollection.h"
#include "RimWellPath.h"
#include "RiuMainWindow.h" #include "RiuMainWindow.h"
#include "RivObjectSourceInfo.h" #include "RivObjectSourceInfo.h"
@@ -53,6 +54,9 @@ bool Ric3dWellLogCurveViewerEventHandler::handleEvent(const RicViewerEventObject
Rim3dWellLogCurveCollection* curveCollection = dynamic_cast<Rim3dWellLogCurveCollection*>(sourceInfo->object()); Rim3dWellLogCurveCollection* curveCollection = dynamic_cast<Rim3dWellLogCurveCollection*>(sourceInfo->object());
if (curveCollection) if (curveCollection)
{ {
RimWellPath* wellPath;
curveCollection->firstAncestorOrThisOfTypeAsserted(wellPath);
QString wellPathName = wellPath->name();
cvf::Vec3d closestPoint; cvf::Vec3d closestPoint;
double measuredDepthAtPoint; double measuredDepthAtPoint;
double valueAtPoint; double valueAtPoint;
@@ -61,6 +65,14 @@ bool Ric3dWellLogCurveViewerEventHandler::handleEvent(const RicViewerEventObject
if (curve) if (curve)
{ {
RiuMainWindow::instance()->selectAsCurrentItem(curve); RiuMainWindow::instance()->selectAsCurrentItem(curve);
QString curveText;
curveText += QString("Curve name : %1\n").arg(curve->name());;
curveText += QString("Well path name: %1\n").arg(wellPathName);
curveText += QString("Measured depth: %1\n").arg(measuredDepthAtPoint);
curveText += QString("%1 at depth: %2\n").arg(curve->resultPropertyString()).arg(valueAtPoint);
RiuMainWindow::instance()->setResultInfo(curveText);
} }
else else
{ {

View File

@@ -90,6 +90,14 @@ void Rim3dWellLogCurve::updateCurveIn3dView()
proj->createDisplayModelAndRedrawAllViews(); proj->createDisplayModelAndRedrawAllViews();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString& Rim3dWellLogCurve::name() const
{
return m_name();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -52,25 +52,26 @@ public:
void updateCurveIn3dView(); void updateCurveIn3dView();
DrawPlane drawPlane() const; const QString& name() const;
cvf::Color3f color() const; virtual QString resultPropertyString() const = 0;
bool isShowingCurve() const; DrawPlane drawPlane() const;
cvf::Color3f color() const;
bool isShowingCurve() const;
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const = 0; virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const = 0;
void setColor(const cvf::Color3f& color); void setColor(const cvf::Color3f& color);
double minCurveValue() const; double minCurveValue() const;
double maxCurveValue() const; double maxCurveValue() const;
void resetMinMaxValuesAndUpdateUI(); void resetMinMaxValuesAndUpdateUI();
bool findClosestPointOnCurve(const cvf::Vec3d& globalIntersection, bool findClosestPointOnCurve(const cvf::Vec3d& globalIntersection,
cvf::Vec3d* closestPoint, cvf::Vec3d* closestPoint,
double* measuredDepthAtPoint, double* measuredDepthAtPoint,
double* valueAtPoint) const; double* valueAtPoint) const;
void setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator); void setGeometryGenerator(Riv3dWellLogCurveGeometryGenerator* generator);
cvf::ref<Riv3dWellLogCurveGeometryGenerator> geometryGenerator(); cvf::ref<Riv3dWellLogCurveGeometryGenerator> geometryGenerator();
protected: protected:
virtual caf::PdmFieldHandle* objectToggleField() override; virtual caf::PdmFieldHandle* objectToggleField() override;

View File

@@ -112,6 +112,14 @@ void Rim3dWellLogExtractionCurve::setPropertiesFromView(Rim3dView* view)
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogExtractionCurve::resultPropertyString() const
{
return m_eclipseResultDefinition->resultVariableUiName();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -41,8 +41,9 @@ public:
Rim3dWellLogExtractionCurve(); Rim3dWellLogExtractionCurve();
virtual ~Rim3dWellLogExtractionCurve(); virtual ~Rim3dWellLogExtractionCurve();
void setPropertiesFromView(Rim3dView* view); void setPropertiesFromView(Rim3dView* view);
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override; virtual QString resultPropertyString() const override;
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
private: private:
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,

View File

@@ -40,7 +40,7 @@ Rim3dWellLogFileCurve::Rim3dWellLogFileCurve()
{ {
CAF_PDM_InitObject("3d Well Log File Curve", ":/WellLogCurve16x16.png", "", ""); CAF_PDM_InitObject("3d Well Log File Curve", ":/WellLogCurve16x16.png", "", "");
CAF_PDM_InitFieldNoDefault(&m_wellLogChannnelName, "CurveWellLogChannel", "Well Log Channel", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_wellLogChannelName, "CurveWellLogChannel", "Well Log Channel", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_wellLogFile, "WellLogFile", "Well Log File", "", "", ""); CAF_PDM_InitFieldNoDefault(&m_wellLogFile, "WellLogFile", "Well Log File", "", "", "");
@@ -71,8 +71,8 @@ void Rim3dWellLogFileCurve::setDefaultFileCurveDataInfo()
if (!fileLogs.empty()) if (!fileLogs.empty())
{ {
m_wellLogChannnelName = fileLogs[0]->name(); m_wellLogChannelName = fileLogs[0]->name();
m_name = "LAS: " + m_wellLogChannnelName; m_name = "LAS: " + m_wellLogChannelName;
} }
} }
} }
@@ -90,12 +90,20 @@ void Rim3dWellLogFileCurve::curveValuesAndMds(std::vector<double>* values, std::
RigWellLogFile* wellLogFile = m_wellLogFile->wellLogFileData(); RigWellLogFile* wellLogFile = m_wellLogFile->wellLogFileData();
if (wellLogFile) if (wellLogFile)
{ {
*values = wellLogFile->values(m_wellLogChannnelName); *values = wellLogFile->values(m_wellLogChannelName);
*measuredDepthValues = wellLogFile->depthValues(); *measuredDepthValues = wellLogFile->depthValues();
} }
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogFileCurve::resultPropertyString() const
{
return m_wellLogChannelName();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -103,7 +111,7 @@ void Rim3dWellLogFileCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedF
const QVariant& oldValue, const QVariant& oldValue,
const QVariant& newValue) const QVariant& newValue)
{ {
if (changedField == &m_wellLogFile || changedField == &m_wellLogChannnelName) if (changedField == &m_wellLogFile || changedField == &m_wellLogChannelName)
{ {
this->resetMinMaxValuesAndUpdateUI(); this->resetMinMaxValuesAndUpdateUI();
} }
@@ -122,7 +130,7 @@ QList<caf::PdmOptionItemInfo> Rim3dWellLogFileCurve::calculateValueOptions(const
if (!options.empty()) return options; if (!options.empty()) return options;
if (fieldNeedingOptions == &m_wellLogChannnelName) if (fieldNeedingOptions == &m_wellLogChannelName)
{ {
if (m_wellLogFile) if (m_wellLogFile)
{ {
@@ -166,7 +174,7 @@ void Rim3dWellLogFileCurve::defineUiOrdering(QString uiConfigName, caf::PdmUiOrd
{ {
caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Curve Data"); caf::PdmUiGroup* curveDataGroup = uiOrdering.addNewGroup("Curve Data");
curveDataGroup->add(&m_wellLogFile); curveDataGroup->add(&m_wellLogFile);
curveDataGroup->add(&m_wellLogChannnelName); curveDataGroup->add(&m_wellLogChannelName);
Rim3dWellLogCurve::configurationUiOrdering(uiOrdering); Rim3dWellLogCurve::configurationUiOrdering(uiOrdering);

View File

@@ -38,8 +38,9 @@ public:
Rim3dWellLogFileCurve(); Rim3dWellLogFileCurve();
virtual ~Rim3dWellLogFileCurve(); virtual ~Rim3dWellLogFileCurve();
void setDefaultFileCurveDataInfo(); void setDefaultFileCurveDataInfo();
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override; virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
virtual QString resultPropertyString() const override;
protected: protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
@@ -54,5 +55,5 @@ private:
private: private:
caf::PdmPtrField<RimWellLogFile*> m_wellLogFile; caf::PdmPtrField<RimWellLogFile*> m_wellLogFile;
caf::PdmField<QString> m_wellLogChannnelName; caf::PdmField<QString> m_wellLogChannelName;
}; };

View File

@@ -76,6 +76,14 @@ void Rim3dWellLogRftCurve::curveValuesAndMds(std::vector<double>* values, std::v
*measuredDepthValues = curveData->measuredDepths(); *measuredDepthValues = curveData->measuredDepths();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dWellLogRftCurve::resultPropertyString() const
{
return caf::AppEnum<RifEclipseRftAddress::RftWellLogChannelType>::uiText(m_wellLogChannelName());
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@@ -44,6 +44,8 @@ public:
virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override; virtual void curveValuesAndMds(std::vector<double>* values, std::vector<double>* measuredDepthValues) const override;
virtual QString resultPropertyString() const override;
protected: protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue, const QVariant& oldValue,