mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#5001 Add visualization for RimWellMeasurement.
This commit is contained in:
parent
d266e44f1f
commit
37ab75bc2a
@ -20,6 +20,7 @@
|
||||
|
||||
#include "RivWellPathPartMgr.h"
|
||||
|
||||
#include "RiaColorTables.h"
|
||||
#include "RiaGuiApplication.h"
|
||||
|
||||
#include "RigEclipseCaseData.h"
|
||||
@ -36,6 +37,8 @@
|
||||
#include "RimFishbonesMultipleSubs.h"
|
||||
#include "RimPerforationCollection.h"
|
||||
#include "RimPerforationInterval.h"
|
||||
#include "RimWellMeasurement.h"
|
||||
#include "RimWellMeasurementCollection.h"
|
||||
#include "RimWellPath.h"
|
||||
#include "RimWellPathAttribute.h"
|
||||
#include "RimWellPathAttributeCollection.h"
|
||||
@ -66,7 +69,7 @@
|
||||
#include "cvfFont.h"
|
||||
#include "cvfModelBasicList.h"
|
||||
#include "cvfPart.h"
|
||||
#include "cvfScalarMapperDiscreteLinear.h"
|
||||
#include "cvfScalarMapperContinuousLinear.h"
|
||||
#include "cvfTransform.h"
|
||||
#include "cvfqtUtils.h"
|
||||
|
||||
@ -249,6 +252,81 @@ void RivWellPathPartMgr::appendWellPathAttributesToModel( cvf::ModelBasicList*
|
||||
}
|
||||
}
|
||||
|
||||
cvf::Color3f RivWellPathPartMgr::mapWellMeasurementToColor( const QString& measurementKind, double value )
|
||||
{
|
||||
if ( measurementKind == "TH" ) return cvf::Color3f::RED;
|
||||
if ( measurementKind == "LE" ) return cvf::Color3f::BLUE;
|
||||
if ( measurementKind == "BA" ) return cvf::Color3f::GREEN;
|
||||
if ( measurementKind == "CORE" ) return cvf::Color3f::BLACK;
|
||||
|
||||
QStringList rangeBasedMeasurements;
|
||||
rangeBasedMeasurements << "XLOT"
|
||||
<< "LOT"
|
||||
<< "FIT"
|
||||
<< "MCF"
|
||||
<< "MNF"
|
||||
<< "PPG";
|
||||
if ( rangeBasedMeasurements.contains( measurementKind ) )
|
||||
{
|
||||
cvf::ScalarMapperContinuousLinear mapper;
|
||||
mapper.setColors( RiaColorTables::normalPaletteColors().color3ubArray() );
|
||||
mapper.setRange( 1.0, 3.0 );
|
||||
cvf::Color3ub color = mapper.mapToColor( value );
|
||||
return cvf::Color3f( color );
|
||||
}
|
||||
|
||||
return cvf::Color3f::RED;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RivWellPathPartMgr::appendWellMeasurementsToModel( cvf::ModelBasicList* model,
|
||||
const caf::DisplayCoordTransform* displayCoordTransform,
|
||||
double characteristicCellSize )
|
||||
{
|
||||
if ( !m_rimWellPath ) return;
|
||||
|
||||
if ( !m_rimWellPath->measurementCollection()->isChecked() ) return;
|
||||
|
||||
RivPipeGeometryGenerator geoGenerator;
|
||||
std::vector<RimWellMeasurement*> wellMeasurements = m_rimWellPath->measurementCollection()->measurements();
|
||||
|
||||
for ( RimWellMeasurement* wellMeasurement : wellMeasurements )
|
||||
{
|
||||
double wellPathRadius = this->wellPathRadius( characteristicCellSize, this->wellPathCollection() );
|
||||
double startMD = wellMeasurement->MD() - wellPathRadius * 0.5;
|
||||
double endMD = wellMeasurement->MD() + wellPathRadius * 0.5;
|
||||
|
||||
std::vector<cvf::Vec3d> displayCoords;
|
||||
displayCoords.push_back( displayCoordTransform->transformToDisplayCoord(
|
||||
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath( startMD ) ) );
|
||||
displayCoords.push_back( displayCoordTransform->transformToDisplayCoord(
|
||||
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath( startMD ) ) );
|
||||
displayCoords.push_back( displayCoordTransform->transformToDisplayCoord(
|
||||
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath( endMD ) ) );
|
||||
displayCoords.push_back( displayCoordTransform->transformToDisplayCoord(
|
||||
m_rimWellPath->wellPathGeometry()->interpolatedPointAlongWellPath( endMD ) ) );
|
||||
|
||||
std::vector<double> radii;
|
||||
radii.push_back( wellPathRadius );
|
||||
radii.push_back( wellPathRadius * 2.5 );
|
||||
radii.push_back( wellPathRadius * 2.5 );
|
||||
radii.push_back( wellPathRadius );
|
||||
|
||||
cvf::ref<RivObjectSourceInfo> objectSourceInfo = new RivObjectSourceInfo( wellMeasurement );
|
||||
|
||||
cvf::Collection<cvf::Part> parts;
|
||||
cvf::Color3f color = mapWellMeasurementToColor( wellMeasurement->kind(), wellMeasurement->value() );
|
||||
geoGenerator.tubeWithCenterLinePartsAndVariableWidth( &parts, displayCoords, radii, color );
|
||||
for ( auto part : parts )
|
||||
{
|
||||
part->setSourceInfo( objectSourceInfo.p() );
|
||||
model->addPart( part.p() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -711,6 +789,7 @@ void RivWellPathPartMgr::appendStaticGeometryPartsToModel( cvf::ModelBasicList*
|
||||
appendFishboneSubsPartsToModel( model, displayCoordTransform, characteristicCellSize );
|
||||
appendImportedFishbonesToModel( model, displayCoordTransform, characteristicCellSize );
|
||||
appendWellPathAttributesToModel( model, displayCoordTransform, characteristicCellSize );
|
||||
appendWellMeasurementsToModel( model, displayCoordTransform, characteristicCellSize );
|
||||
|
||||
RimGridView* gridView = dynamic_cast<RimGridView*>( m_rimView.p() );
|
||||
if ( !gridView ) return;
|
||||
|
@ -93,6 +93,10 @@ private:
|
||||
const caf::DisplayCoordTransform* displayCoordTransform,
|
||||
double characteristicCellSize );
|
||||
|
||||
void appendWellMeasurementsToModel( cvf::ModelBasicList* model,
|
||||
const caf::DisplayCoordTransform* displayCoordTransform,
|
||||
double characteristicCellSize );
|
||||
|
||||
void appendImportedFishbonesToModel( cvf::ModelBasicList* model,
|
||||
const caf::DisplayCoordTransform* displayCoordTransform,
|
||||
double characteristicCellSize );
|
||||
@ -125,6 +129,8 @@ private:
|
||||
|
||||
bool isWellPathWithinBoundingBox( const cvf::BoundingBox& wellPathClipBoundingBox ) const;
|
||||
|
||||
static cvf::Color3f mapWellMeasurementToColor( const QString& measurementKind, double value );
|
||||
|
||||
private:
|
||||
caf::PdmPointer<RimWellPath> m_rimWellPath;
|
||||
caf::PdmPointer<Rim3dView> m_rimView;
|
||||
|
Loading…
Reference in New Issue
Block a user