#2509 Fracture : Disconnect fracture template when unit changes

This commit is contained in:
Magne Sjaastad 2018-02-21 19:07:03 +01:00
parent 1b7dabdc51
commit 8ad30d9350
7 changed files with 40 additions and 0 deletions

View File

@ -66,6 +66,8 @@ void RicConvertAllFractureTemplatesToFieldFeature::onActionTriggered(bool isChec
if (ellipseFracTemplate->fractureTemplateUnit() == RiaEclipseUnitTools::UNITS_METRIC)
{
ellipseFracTemplate->changeUnits();
ellipseFracTemplate->disconnectAllFracturesAndRedrawViews();
}
}
}

View File

@ -66,6 +66,8 @@ void RicConvertAllFractureTemplatesToMetricFeature::onActionTriggered(bool isChe
if (ellipseFracTemplate->fractureTemplateUnit() == RiaEclipseUnitTools::UNITS_FIELD)
{
ellipseFracTemplate->changeUnits();
ellipseFracTemplate->disconnectAllFracturesAndRedrawViews();
}
}

View File

@ -68,6 +68,8 @@ void RicConvertFractureTemplateUnitFeature::onActionTriggered(bool isChecked)
fractureTemplate->convertToUnitSystem(RiaEclipseUnitTools::UNITS_METRIC);
}
fractureTemplate->disconnectAllFracturesAndRedrawViews();
fractureTemplate->updateConnectedEditors();
}

View File

@ -324,6 +324,8 @@ std::vector<std::pair<QString, QString>> RimEllipseFractureTemplate::uiResultNam
//--------------------------------------------------------------------------------------------------
void RimEllipseFractureTemplate::convertToUnitSystem(RiaEclipseUnitTools::UnitSystem neededUnit)
{
if (m_fractureTemplateUnit() == neededUnit) return;
setFractureTemplateUnit(neededUnit);
RimFractureTemplate::convertToUnitSystem(neededUnit);

View File

@ -582,6 +582,34 @@ void RimFractureTemplate::convertToUnitSystem(RiaEclipseUnitTools::UnitSystem ne
// TODO : Convert NON-darcy values
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureTemplate::disconnectAllFracturesAndRedrawViews() const
{
// The unit has changed. Disconnect all fractures referencing this fracture template to avoid mix of units between fracture
// and template
std::vector<caf::PdmObjectHandle*> referringObjects;
this->objectsWithReferringPtrFields(referringObjects);
for (auto objHandle : referringObjects)
{
RimFracture* fracture = dynamic_cast<RimFracture*>(objHandle);
if (fracture)
{
fracture->setFractureTemplate(nullptr);
}
}
RimProject* proj;
this->firstAncestorOrThisOfType(proj);
if (proj)
{
proj->createDisplayModelAndRedrawAllViews();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -144,6 +144,8 @@ public:
virtual void loadDataAndUpdate() = 0;
void disconnectAllFracturesAndRedrawViews() const;
protected:
virtual caf::PdmFieldHandle* userDescriptionField() override;

View File

@ -501,6 +501,8 @@ bool RimStimPlanFractureTemplate::showStimPlanMesh() const
//--------------------------------------------------------------------------------------------------
void RimStimPlanFractureTemplate::convertToUnitSystem(RiaEclipseUnitTools::UnitSystem neededUnit)
{
if (m_fractureTemplateUnit() == neededUnit) return;
setFractureTemplateUnit(neededUnit);
RimFractureTemplate::convertToUnitSystem(neededUnit);