6593 Fracture Model: Show barrier fault name and distance in 3d.

This commit is contained in:
Kristian Bendiksen 2020-09-30 22:13:18 +02:00 committed by Magne Sjaastad
parent b233c331cf
commit fde2c5e4af
2 changed files with 55 additions and 19 deletions

View File

@ -49,6 +49,7 @@
#include "RimOilField.h"
#include "RimPolylineTarget.h"
#include "RimProject.h"
#include "RimTextAnnotation.h"
#include "RimTools.h"
#include "RimUserDefinedPolylinesAnnotation.h"
#include "RimWellPath.h"
@ -191,6 +192,12 @@ RimFractureModel::RimFractureModel()
m_barrierFaultName.uiCapability()->setUiReadOnly( true );
CAF_PDM_InitScriptableFieldNoDefault( &m_barrierAnnotation, "BarrierAnnotation", "Barrier Annotation", "", "", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_barrierTextAnnotation,
"BarrierTextAnnotation",
"Barrier Text Annotation",
"",
"",
"" );
setDeletable( true );
}
@ -624,8 +631,11 @@ void RimFractureModel::updateDistanceToBarrierAndDip()
.arg( shortestDistance )
.arg( barrierDip )
.arg( foundFault->name() ) );
QString barrierText =
QString( "Barrier Fault: %1\nDistance: %2m" ).arg( foundFault->name() ).arg( shortestDistance );
clearBarrierAnnotation();
addBarrierAnnotation( position, barrierPosition );
addBarrierAnnotation( position, barrierPosition, barrierText );
m_hasBarrier = true;
m_barrierDip = barrierDip;
@ -695,16 +705,29 @@ void RimFractureModel::clearBarrierAnnotation()
delete existingAnnotation;
m_barrierAnnotation = nullptr;
}
auto existingTextAnnotation = m_barrierTextAnnotation.value();
if ( existingTextAnnotation )
{
delete existingTextAnnotation;
m_barrierTextAnnotation = nullptr;
}
RimAnnotationCollectionBase* coll = annotationCollection();
coll->onAnnotationDeleted();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModel::addBarrierAnnotation( const cvf::Vec3d& startPosition, const cvf::Vec3d& endPosition )
void RimFractureModel::addBarrierAnnotation( const cvf::Vec3d& startPosition,
const cvf::Vec3d& endPosition,
const QString& text )
{
RimAnnotationCollection* coll = annotationCollection();
RimAnnotationCollectionBase* coll = annotationCollection();
if ( !coll ) return;
{
auto newAnnotation = new RimUserDefinedPolylinesAnnotation();
RimPolylineTarget* startTarget = new RimPolylineTarget();
@ -716,8 +739,19 @@ void RimFractureModel::addBarrierAnnotation( const cvf::Vec3d& startPosition, co
newAnnotation->insertTarget( nullptr, endTarget );
m_barrierAnnotation = newAnnotation;
dynamic_cast<RimAnnotationCollection*>( coll )->addAnnotation( newAnnotation );
}
{
auto newAnnotation = new RimTextAnnotation();
newAnnotation->setText( text );
newAnnotation->setLabelPoint( endPosition );
newAnnotation->setAnchorPoint( endPosition );
m_barrierTextAnnotation = newAnnotation;
coll->addAnnotation( newAnnotation );
}
coll->scheduleRedrawOfRelevantViews();
coll->updateConnectedEditors();
}
@ -725,7 +759,7 @@ void RimFractureModel::addBarrierAnnotation( const cvf::Vec3d& startPosition, co
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimAnnotationCollection* RimFractureModel::annotationCollection()
RimAnnotationCollectionBase* RimFractureModel::annotationCollection()
{
const auto project = RimProject::current();
auto oilField = project->activeOilField();
@ -739,6 +773,7 @@ void RimFractureModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin
{
m_thicknessDirectionWellPath.uiCapability()->setUiHidden( true );
m_barrierAnnotation.uiCapability()->setUiHidden( true );
m_barrierTextAnnotation.uiCapability()->setUiHidden( true );
m_azimuthAngle.uiCapability()->setUiHidden( m_fractureOrientation() != RimFractureModel::FractureOrientation::AZIMUTH );
uiOrdering.add( nameField(), caf::PdmUiOrdering::LayoutOptions( true, 3, 1 ) );

View File

@ -18,7 +18,6 @@
#pragma once
#include "RiaEclipseUnitTools.h"
#include "RiaFractureModelDefines.h"
#include "RimCheckableNamedObject.h"
@ -36,10 +35,11 @@ class RimWellPath;
class RimModeledWellPath;
class RimElasticProperties;
class RigEclipseCaseData;
class RimAnnotationCollection;
class RimAnnotationCollectionBase;
class RimUserDefinedPolylinesAnnotation;
class RimFaciesProperties;
class RimFractureModelTemplate;
class RimTextAnnotation;
//==================================================================================================
///
@ -166,9 +166,9 @@ private:
static RimEclipseCase* getEclipseCase();
void updateBarrierProperties();
void addBarrierAnnotation( const cvf::Vec3d& startPosition, const cvf::Vec3d& endPosition );
void addBarrierAnnotation( const cvf::Vec3d& startPosition, const cvf::Vec3d& endPosition, const QString& barrierText );
void clearBarrierAnnotation();
RimAnnotationCollection* annotationCollection();
RimAnnotationCollectionBase* annotationCollection();
static std::vector<WellPathCellIntersectionInfo> generateBarrierIntersections( RigEclipseCaseData* eclipseCaseData,
const cvf::Vec3d& position,
@ -212,6 +212,7 @@ protected:
caf::PdmField<double> m_barrierDip;
caf::PdmField<int> m_wellPenetrationLayer;
caf::PdmPtrField<RimUserDefinedPolylinesAnnotation*> m_barrierAnnotation;
caf::PdmPtrField<RimTextAnnotation*> m_barrierTextAnnotation;
caf::PdmField<QString> m_barrierFaultName;
caf::PdmField<bool> m_showOnlyBarrierFault;
caf::PdmField<bool> m_showAllFaults;