mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add optional surface intersection lines onto seismic geometry
This commit is contained in:
@@ -27,6 +27,9 @@
|
||||
#include "RimSeismicData.h"
|
||||
#include "RimSeismicDataCollection.h"
|
||||
#include "RimSeismicSection.h"
|
||||
#include "RimSurface.h"
|
||||
#include "RimSurfaceCollection.h"
|
||||
#include "RimTools.h"
|
||||
|
||||
#include "RivSeismicSectionPartMgr.h"
|
||||
|
||||
@@ -34,6 +37,7 @@
|
||||
#include "cvfModelBasicList.h"
|
||||
|
||||
#include "cafDisplayCoordTransform.h"
|
||||
#include "cafPdmUiTreeSelectionEditor.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT( RimSeismicSectionCollection, "SeismicSectionCollection" );
|
||||
|
||||
@@ -49,6 +53,11 @@ RimSeismicSectionCollection::RimSeismicSectionCollection()
|
||||
CAF_PDM_InitFieldNoDefault( &m_seismicSections, "SeismicSections", "SeismicSections" );
|
||||
m_seismicSections.uiCapability()->setUiTreeHidden( true );
|
||||
|
||||
CAF_PDM_InitField( &m_surfaceIntersectionLinesScaleFactor, "SurfaceIntersectionLinesScaleFactor", 5.0, "Line Scale Factor ( >= 1.0 )" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_visibleSurfaceLines, "VisibleSurfaceLines", "Visible Surface Lines" );
|
||||
m_visibleSurfaceLines.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
|
||||
|
||||
setName( "Seismic Sections" );
|
||||
}
|
||||
|
||||
@@ -137,6 +146,9 @@ caf::PdmFieldHandle* RimSeismicSectionCollection::userDescriptionField()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSeismicSectionCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
||||
{
|
||||
uiOrdering.add( &m_surfaceIntersectionLinesScaleFactor );
|
||||
uiOrdering.add( &m_visibleSurfaceLines );
|
||||
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
}
|
||||
|
||||
@@ -165,6 +177,14 @@ void RimSeismicSectionCollection::appendPartsToModel( Rim3dView*
|
||||
if ( section->seismicData() != nullptr )
|
||||
{
|
||||
section->partMgr()->appendGeometryPartsToModel( model, transform, boundingBox );
|
||||
|
||||
std::vector<RimSurface*> surfaces;
|
||||
for ( const auto& surf : m_visibleSurfaceLines.value() )
|
||||
{
|
||||
surfaces.push_back( surf );
|
||||
}
|
||||
|
||||
section->partMgr()->appendSurfaceIntersectionLines( model, transform, m_surfaceIntersectionLinesScaleFactor(), surfaces );
|
||||
}
|
||||
section->partMgr()->appendPolylinePartsToModel( view, model, transform, boundingBox );
|
||||
}
|
||||
@@ -178,10 +198,12 @@ void RimSeismicSectionCollection::appendPartsToModel( Rim3dView*
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSeismicSectionCollection::fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue )
|
||||
{
|
||||
if ( changedField == objectToggleField() )
|
||||
if ( changedField == &m_surfaceIntersectionLinesScaleFactor )
|
||||
{
|
||||
updateView();
|
||||
m_surfaceIntersectionLinesScaleFactor = std::max( 1.0, m_surfaceIntersectionLinesScaleFactor() );
|
||||
}
|
||||
|
||||
updateView();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -240,6 +262,25 @@ void RimSeismicSectionCollection::updateLegendRangesTextAndVisibility( RiuViewer
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QList<caf::PdmOptionItemInfo> RimSeismicSectionCollection::calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions )
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
if ( fieldNeedingOptions == &m_visibleSurfaceLines )
|
||||
{
|
||||
auto surfaceCollection = RimTools::surfaceCollection();
|
||||
for ( auto surface : surfaceCollection->surfaces() )
|
||||
{
|
||||
options.push_back( caf::PdmOptionItemInfo( surface->fullName(), surface ) );
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "RimCheckableNamedObject.h"
|
||||
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmPtrArrayField.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
@@ -29,6 +30,7 @@ class RimRegularLegendConfig;
|
||||
class RimSeismicSection;
|
||||
class Rim3dView;
|
||||
class RiuViewer;
|
||||
class RimSurface;
|
||||
|
||||
namespace cvf
|
||||
{
|
||||
@@ -75,6 +77,7 @@ protected:
|
||||
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;
|
||||
|
||||
void onChildDeleted( caf::PdmChildArrayFieldHandle* childArray, std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||
|
||||
@@ -83,4 +86,7 @@ protected:
|
||||
private:
|
||||
caf::PdmField<QString> m_userDescription;
|
||||
caf::PdmChildArrayField<RimSeismicSection*> m_seismicSections;
|
||||
|
||||
caf::PdmField<double> m_surfaceIntersectionLinesScaleFactor;
|
||||
caf::PdmPtrArrayField<RimSurface*> m_visibleSurfaceLines;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user