mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2591 3D well log curve: Add option to place at the side of the well
This commit is contained in:
parent
ef1cb3468b
commit
7024ee045c
@ -89,7 +89,10 @@ void Riv3dWellLogPlanePartMgr::append3dWellLogCurvesToModel(cvf::ModelBasicList*
|
|||||||
if (m_wellPath.isNull()) return;
|
if (m_wellPath.isNull()) return;
|
||||||
if (!m_wellPath->rim3dWellLogCurveCollection()) return;
|
if (!m_wellPath->rim3dWellLogCurveCollection()) return;
|
||||||
if (m_wellPath->rim3dWellLogCurveCollection()->vectorOf3dWellLogCurves().empty()) return;
|
if (m_wellPath->rim3dWellLogCurveCollection()->vectorOf3dWellLogCurves().empty()) return;
|
||||||
|
|
||||||
|
const Rim3dWellLogCurveCollection* curveCollection = m_wellPath->rim3dWellLogCurveCollection();
|
||||||
|
Rim3dWellLogCurveCollection::PlanePosition planePosition = curveCollection->planePosition();
|
||||||
|
|
||||||
for (Rim3dWellLogCurve* rim3dWellLogCurve : m_wellPath->rim3dWellLogCurveCollection()->vectorOf3dWellLogCurves())
|
for (Rim3dWellLogCurve* rim3dWellLogCurve : m_wellPath->rim3dWellLogCurveCollection()->vectorOf3dWellLogCurves())
|
||||||
{
|
{
|
||||||
if (!rim3dWellLogCurve->isShowingCurve()) continue;
|
if (!rim3dWellLogCurve->isShowingCurve()) continue;
|
||||||
@ -98,8 +101,14 @@ void Riv3dWellLogPlanePartMgr::append3dWellLogCurvesToModel(cvf::ModelBasicList*
|
|||||||
std::vector<double> resultMds;
|
std::vector<double> resultMds;
|
||||||
rim3dWellLogCurve->curveValuesAndMds(&resultValues, &resultMds);
|
rim3dWellLogCurve->curveValuesAndMds(&resultValues, &resultMds);
|
||||||
|
|
||||||
cvf::ref<cvf::Drawable> curveDrawable = m_3dWellLogCurveGeometryGenerator->createCurveLine(
|
cvf::ref<cvf::Drawable> curveDrawable =
|
||||||
displayCoordTransform, wellPathClipBoundingBox, resultValues, resultMds, planeAngle(rim3dWellLogCurve->drawPlane()), wellPathCenterToPlotStartOffset(), planeWidth());
|
m_3dWellLogCurveGeometryGenerator->createCurveLine(displayCoordTransform,
|
||||||
|
wellPathClipBoundingBox,
|
||||||
|
resultValues,
|
||||||
|
resultMds,
|
||||||
|
planeAngle(rim3dWellLogCurve->drawPlane()),
|
||||||
|
wellPathCenterToPlotStartOffset(planePosition),
|
||||||
|
planeWidth());
|
||||||
|
|
||||||
if (curveDrawable.isNull() || !curveDrawable->boundingBox().isValid())
|
if (curveDrawable.isNull() || !curveDrawable->boundingBox().isValid())
|
||||||
{
|
{
|
||||||
@ -154,19 +163,26 @@ double Riv3dWellLogPlanePartMgr::planeAngle(const Rim3dWellLogCurve::DrawPlane&
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
double Riv3dWellLogPlanePartMgr::wellPathCenterToPlotStartOffset() const
|
double Riv3dWellLogPlanePartMgr::wellPathCenterToPlotStartOffset(Rim3dWellLogCurveCollection::PlanePosition planePosition) const
|
||||||
{
|
{
|
||||||
if (!m_gridView) return 0;
|
if (!m_gridView) return 0;
|
||||||
|
|
||||||
double cellSize = m_gridView->ownerCase()->characteristicCellSize();
|
double cellSize = m_gridView->ownerCase()->characteristicCellSize();
|
||||||
|
|
||||||
return -cellSize * 2;
|
if (planePosition == Rim3dWellLogCurveCollection::ALONG_WELLPATH)
|
||||||
|
{
|
||||||
|
return m_wellPath->wellPathRadius(cellSize) * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -cellSize * 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
double Riv3dWellLogPlanePartMgr::planeWidth() const
|
double Riv3dWellLogPlanePartMgr::planeWidth() const
|
||||||
{
|
{
|
||||||
@ -177,7 +193,6 @@ double Riv3dWellLogPlanePartMgr::planeWidth() const
|
|||||||
return cellSize * 4;
|
return cellSize * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -187,13 +202,21 @@ void Riv3dWellLogPlanePartMgr::appendGridToModel(cvf::ModelBasicList*
|
|||||||
const Rim3dWellLogCurve::DrawPlane& drawPlane,
|
const Rim3dWellLogCurve::DrawPlane& drawPlane,
|
||||||
double gridIntervalSize)
|
double gridIntervalSize)
|
||||||
{
|
{
|
||||||
|
const Rim3dWellLogCurveCollection* curveCollection = m_wellPath->rim3dWellLogCurveCollection();
|
||||||
|
Rim3dWellLogCurveCollection::PlanePosition planePosition = curveCollection->planePosition();
|
||||||
|
|
||||||
caf::MeshEffectGenerator meshEffectGen(cvf::Color3f(0.4f, 0.4f, 0.4f));
|
caf::MeshEffectGenerator meshEffectGen(cvf::Color3f(0.4f, 0.4f, 0.4f));
|
||||||
|
|
||||||
cvf::ref<cvf::Drawable> gridHorizontalDrawable = m_3dWellLogCurveGeometryGenerator->createGrid(
|
cvf::ref<cvf::Drawable> gridHorizontalDrawable =
|
||||||
displayCoordTransform, wellPathClipBoundingBox, planeAngle(drawPlane), wellPathCenterToPlotStartOffset(), planeWidth(), gridIntervalSize);
|
m_3dWellLogCurveGeometryGenerator->createGrid(displayCoordTransform,
|
||||||
|
wellPathClipBoundingBox,
|
||||||
|
planeAngle(drawPlane),
|
||||||
|
wellPathCenterToPlotStartOffset(planePosition),
|
||||||
|
planeWidth(),
|
||||||
|
gridIntervalSize);
|
||||||
|
|
||||||
cvf::ref<cvf::Effect> effect = meshEffectGen.generateCachedEffect();
|
cvf::ref<cvf::Effect> effect = meshEffectGen.generateCachedEffect();
|
||||||
cvf::ref<cvf::Part> part = createPart(gridHorizontalDrawable.p(), effect.p());
|
cvf::ref<cvf::Part> part = createPart(gridHorizontalDrawable.p(), effect.p());
|
||||||
|
|
||||||
if (part.notNull())
|
if (part.notNull())
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include "cvfObject.h"
|
#include "cvfObject.h"
|
||||||
|
|
||||||
#include "Rim3dWellLogCurve.h"
|
#include "Rim3dWellLogCurve.h"
|
||||||
|
#include "Rim3dWellLogCurveCollection.h"
|
||||||
|
|
||||||
#include "cafPdmPointer.h"
|
#include "cafPdmPointer.h"
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ private:
|
|||||||
|
|
||||||
static double planeAngle(const Rim3dWellLogCurve::DrawPlane& drawPlane);
|
static double planeAngle(const Rim3dWellLogCurve::DrawPlane& drawPlane);
|
||||||
|
|
||||||
double wellPathCenterToPlotStartOffset() const;
|
double wellPathCenterToPlotStartOffset(Rim3dWellLogCurveCollection::PlanePosition planePosition) const;
|
||||||
double planeWidth() const;
|
double planeWidth() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -23,6 +23,17 @@
|
|||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(Rim3dWellLogCurveCollection, "Rim3dWellLogCurveCollection");
|
CAF_PDM_SOURCE_INIT(Rim3dWellLogCurveCollection, "Rim3dWellLogCurveCollection");
|
||||||
|
|
||||||
|
namespace caf
|
||||||
|
{
|
||||||
|
template<>
|
||||||
|
void AppEnum< Rim3dWellLogCurveCollection::PlanePosition >::setUp()
|
||||||
|
{
|
||||||
|
addItem(Rim3dWellLogCurveCollection::ALONG_WELLPATH, "ALONG_WELLPATH", "On One Side of Well Path");
|
||||||
|
addItem(Rim3dWellLogCurveCollection::ON_WELLPATH, "ON_WELLPATH", "On Well Path");
|
||||||
|
setDefault(Rim3dWellLogCurveCollection::ALONG_WELLPATH);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -35,6 +46,8 @@ Rim3dWellLogCurveCollection::Rim3dWellLogCurveCollection()
|
|||||||
|
|
||||||
CAF_PDM_InitField(&m_showGrid, "Show3dWellLogGrid", true, "Show Grid", "", "", "");
|
CAF_PDM_InitField(&m_showGrid, "Show3dWellLogGrid", true, "Show Grid", "", "", "");
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault(&m_planePosition, "PlanePosition", "Plane Position", "", "", "");
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_3dWellLogCurves, "ArrayOf3dWellLogCurves", "", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_3dWellLogCurves, "ArrayOf3dWellLogCurves", "", "", "", "");
|
||||||
m_3dWellLogCurves.uiCapability()->setUiTreeHidden(true);
|
m_3dWellLogCurves.uiCapability()->setUiTreeHidden(true);
|
||||||
}
|
}
|
||||||
@ -82,6 +95,14 @@ bool Rim3dWellLogCurveCollection::isShowingPlot() const
|
|||||||
return m_showPlot;
|
return m_showPlot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
Rim3dWellLogCurveCollection::PlanePosition Rim3dWellLogCurveCollection::planePosition() const
|
||||||
|
{
|
||||||
|
return m_planePosition();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -113,3 +134,14 @@ caf::PdmFieldHandle* Rim3dWellLogCurveCollection::objectToggleField()
|
|||||||
{
|
{
|
||||||
return &m_showPlot;
|
return &m_showPlot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void Rim3dWellLogCurveCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||||
|
{
|
||||||
|
caf::PdmUiGroup* settingsGroup = uiOrdering.addNewGroup("Track Settings");
|
||||||
|
|
||||||
|
settingsGroup->add(&m_showGrid);
|
||||||
|
settingsGroup->add(&m_planePosition);
|
||||||
|
}
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "cafAppEnum.h"
|
||||||
#include "cafPdmChildArrayField.h"
|
#include "cafPdmChildArrayField.h"
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
@ -32,6 +33,13 @@ class Rim3dWellLogCurveCollection : public caf::PdmObject
|
|||||||
{
|
{
|
||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
|
public:
|
||||||
|
enum PlanePosition
|
||||||
|
{
|
||||||
|
ALONG_WELLPATH,
|
||||||
|
ON_WELLPATH
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Rim3dWellLogCurveCollection();
|
Rim3dWellLogCurveCollection();
|
||||||
virtual ~Rim3dWellLogCurveCollection();
|
virtual ~Rim3dWellLogCurveCollection();
|
||||||
@ -42,14 +50,20 @@ public:
|
|||||||
bool isShowingGrid() const;
|
bool isShowingGrid() const;
|
||||||
bool isShowingPlot() const;
|
bool isShowingPlot() const;
|
||||||
|
|
||||||
|
PlanePosition planePosition() const;
|
||||||
|
|
||||||
std::vector<Rim3dWellLogCurve*> vectorOf3dWellLogCurves() const;
|
std::vector<Rim3dWellLogCurve*> vectorOf3dWellLogCurves() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
virtual caf::PdmFieldHandle* objectToggleField() override;
|
virtual caf::PdmFieldHandle* objectToggleField() override;
|
||||||
|
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<bool> m_showPlot;
|
caf::PdmField<bool> m_showPlot;
|
||||||
|
|
||||||
caf::PdmField<bool> m_showGrid;
|
caf::PdmField<bool> m_showGrid;
|
||||||
|
caf::PdmField<caf::AppEnum<PlanePosition>> m_planePosition;
|
||||||
|
|
||||||
caf::PdmChildArrayField<Rim3dWellLogCurve*> m_3dWellLogCurves;
|
caf::PdmChildArrayField<Rim3dWellLogCurve*> m_3dWellLogCurves;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user