#7557 Ensemble Fracture Statistics: Reuse existing templates with same name.

This commit is contained in:
Kristian Bendiksen
2021-04-27 22:53:00 +02:00
parent 329b8e114f
commit b777ad9c74
3 changed files with 39 additions and 7 deletions
@@ -99,7 +99,8 @@ std::vector<RimStimPlanFractureTemplate*> RicNewStimPlanFractureTemplateFeature:
///
//--------------------------------------------------------------------------------------------------
std::vector<RimStimPlanFractureTemplate*>
RicNewStimPlanFractureTemplateFeature::createNewTemplatesFromFiles( const std::vector<QString>& fileNames )
RicNewStimPlanFractureTemplateFeature::createNewTemplatesFromFiles( const std::vector<QString>& fileNames,
bool reuseExistingTemplatesWithMatchingNames )
{
if ( fileNames.empty() ) return std::vector<RimStimPlanFractureTemplate*>();
@@ -112,14 +113,19 @@ std::vector<RimStimPlanFractureTemplate*>
RimFractureTemplateCollection* fracDefColl = oilfield->fractureDefinitionCollection();
if ( !fracDefColl ) return std::vector<RimStimPlanFractureTemplate*>();
auto findTemplateByName = []( RimFractureTemplateCollection* coll,
const QString& name ) -> RimStimPlanFractureTemplate* {
for ( auto t : coll->fractureTemplates() )
if ( t->name() == name ) return dynamic_cast<RimStimPlanFractureTemplate*>( t );
return nullptr;
};
std::vector<RimStimPlanFractureTemplate*> newFractures;
for ( auto fileName : fileNames )
{
if ( fileName.isEmpty() ) continue;
RimStimPlanFractureTemplate* fractureDef = new RimStimPlanFractureTemplate();
fracDefColl->addFractureTemplate( fractureDef );
QFileInfo stimplanfileFileInfo( fileName );
QString name = stimplanfileFileInfo.baseName();
if ( name.isEmpty() )
@@ -127,7 +133,15 @@ std::vector<RimStimPlanFractureTemplate*>
name = "StimPlan Fracture Template";
}
fractureDef->setName( name );
RimStimPlanFractureTemplate* fractureDef = nullptr;
if ( reuseExistingTemplatesWithMatchingNames ) fractureDef = findTemplateByName( fracDefColl, name );
if ( fractureDef == nullptr )
{
fractureDef = new RimStimPlanFractureTemplate();
fracDefColl->addFractureTemplate( fractureDef );
fractureDef->setName( name );
}
fractureDef->setFileName( fileName );
fractureDef->loadDataAndUpdate();
@@ -35,7 +35,9 @@ class RicNewStimPlanFractureTemplateFeature : public caf::CmdFeature
CAF_CMD_HEADER_INIT;
static void createNewTemplateForFractureAndUpdate( RimFracture* fracture );
static void selectFractureTemplateAndUpdate( RimFractureTemplate* fractureTemplate );
static std::vector<RimStimPlanFractureTemplate*> createNewTemplatesFromFiles( const std::vector<QString>& fileNames );
static std::vector<RimStimPlanFractureTemplate*>
createNewTemplatesFromFiles( const std::vector<QString>& fileNames,
bool reuseExistingTemplatesWithMatchingNames = false );
protected:
static std::vector<RimStimPlanFractureTemplate*> createNewTemplates();