#5379 Surface : Update name from slice settings

This commit is contained in:
Magne Sjaastad 2020-04-30 20:51:25 +02:00
parent 5fcb42210c
commit 5d31912971
6 changed files with 74 additions and 8 deletions

View File

@ -52,7 +52,11 @@ void RicNewGridSurfaceFeature::onActionTriggered( bool isChecked )
proj->updateConnectedEditors();
}
RimSurface* lastCreatedOrUpdated = surfColl->addGridCaseSurface( nullptr );
RimCase* sourceCase = nullptr;
auto allCases = proj->allGridCases();
if ( !allCases.empty() ) sourceCase = allCases.front();
RimSurface* lastCreatedOrUpdated = surfColl->addGridCaseSurface( sourceCase );
if ( lastCreatedOrUpdated )
{

View File

@ -533,6 +533,19 @@ void RimProject::assignIdToEnsemble( RimSummaryCaseCollection* summaryCaseCollec
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimCase*> RimProject::allGridCases() const
{
std::vector<RimCase*> cases;
// TODO: Move code from allCases here
allCases( cases );
return cases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -626,7 +639,7 @@ void RimProject::assignCalculationIdToCalculation( RimSummaryCalculation* calcul
}
//--------------------------------------------------------------------------------------------------
///
/// TODO: This function is deprecated, use allGridCases()
//--------------------------------------------------------------------------------------------------
void RimProject::allCases( std::vector<RimCase*>& cases ) const
{

View File

@ -127,7 +127,8 @@ public:
void assignCaseIdToSummaryCase( RimSummaryCase* summaryCase );
void assignIdToEnsemble( RimSummaryCaseCollection* summaryCaseCollection );
void allCases( std::vector<RimCase*>& cases ) const;
std::vector<RimCase*> allGridCases() const;
void allCases( std::vector<RimCase*>& cases ) const; // Deprecated, use allGridCases()
std::vector<RimSummaryCase*> allSummaryCases() const;
std::vector<RimSummaryCaseCollection*> summaryGroups() const;

View File

@ -50,8 +50,8 @@ RimGridCaseSurface::RimGridCaseSurface()
"",
"" );
CAF_PDM_InitField( &m_sliceIndex, "SliceIndex", 1, "Slice Index", "", "", "" );
m_sliceIndex.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_oneBasedSliceIndex, "SliceIndex", 1, "Slice Index", "", "", "" );
m_oneBasedSliceIndex.uiCapability()->setUiEditorTypeName( caf::PdmUiSliderEditor::uiEditorTypeName() );
}
//--------------------------------------------------------------------------------------------------
@ -69,6 +69,15 @@ void RimGridCaseSurface::setCase( RimCase* sourceCase )
m_case = sourceCase;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCaseSurface::setSliceTypeAndOneBasedIndex( RiaDefines::GridCaseAxis sliceType, int oneBasedSliceIndex )
{
m_sliceDirection = sliceType;
m_oneBasedSliceIndex = oneBasedSliceIndex;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -132,10 +141,11 @@ void RimGridCaseSurface::fieldChangedByUi( const caf::PdmFieldHandle* changedFie
{
RimSurface::fieldChangedByUi( changedField, oldValue, newValue );
if ( changedField == &m_case || changedField == &m_sliceDirection || changedField == &m_sliceIndex )
if ( changedField == &m_case || changedField == &m_sliceDirection || changedField == &m_oneBasedSliceIndex )
{
clearNativeGridData();
updateSurfaceDataFromGridCase();
updateUserDescription();
RimSurfaceCollection* surfColl;
this->firstAncestorOrThisOfTypeAsserted( surfColl );
@ -174,7 +184,7 @@ void RimGridCaseSurface::extractDataFromGrid()
{
const RigMainGrid* grid = eclCase->mainGrid();
size_t zeroBasedLayerIndex = static_cast<size_t>( m_sliceIndex - 1 );
size_t zeroBasedLayerIndex = static_cast<size_t>( m_oneBasedSliceIndex - 1 );
for ( size_t i = 0; i < grid->cellCountI(); i++ )
{
for ( size_t j = 0; j < grid->cellCountJ(); j++ )
@ -221,6 +231,36 @@ void RimGridCaseSurface::clearNativeGridData()
m_tringleIndices.clear();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimGridCaseSurface::updateUserDescription()
{
QString name;
auto dirValue = m_sliceDirection().value();
switch ( dirValue )
{
case RiaDefines::GridCaseAxis::AXIS_I:
name = "Surface I : %1";
break;
case RiaDefines::GridCaseAxis::AXIS_J:
name = "Surface J : ";
break;
case RiaDefines::GridCaseAxis::AXIS_K:
name = "Surface K : ";
break;
case RiaDefines::GridCaseAxis::UNDEFINED_AXIS:
default:
name = "Surface ";
break;
}
name += QString::number( m_oneBasedSliceIndex );
setUserDescription( name );
}
//--------------------------------------------------------------------------------------------------
/// Returns false for fatal failure
//--------------------------------------------------------------------------------------------------

View File

@ -35,8 +35,10 @@ public:
~RimGridCaseSurface() override;
void setCase( RimCase* sourceCase );
void setSliceTypeAndOneBasedIndex( RiaDefines::GridCaseAxis sliceType, int oneBasedSliceIndex );
bool onLoadData() override;
void updateUserDescription();
protected:
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,
@ -56,7 +58,7 @@ private:
private:
caf::PdmPtrField<RimCase*> m_case;
caf::PdmField<caf::AppEnum<RiaDefines::GridCaseAxis>> m_sliceDirection;
caf::PdmField<int> m_sliceIndex;
caf::PdmField<int> m_oneBasedSliceIndex;
std::vector<unsigned> m_tringleIndices;
std::vector<cvf::Vec3d> m_vertices;

View File

@ -139,6 +139,12 @@ RimSurface* RimSurfaceCollection::addGridCaseSurface( RimCase* sourceCase )
auto s = new RimGridCaseSurface;
s->setCase( sourceCase );
int oneBasedSliceIndex = 1;
auto sliceType = RiaDefines::GridCaseAxis::AXIS_K;
s->setSliceTypeAndOneBasedIndex( sliceType, oneBasedSliceIndex );
s->updateUserDescription();
m_surfaces.push_back( s );
this->updateConnectedEditors();