From 7717bf925fb68e38cb26dc9ce99042d245a87f51 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 23 Feb 2017 09:47:30 +0100 Subject: [PATCH] Rename and moved azimuth updates to RimFracture --- .../RimEllipseFractureTemplate.cpp | 25 ++----------- .../ProjectDataModel/RimFracture.cpp | 4 +-- .../ProjectDataModel/RimFracture.h | 4 ++- .../ProjectDataModel/RimFractureTemplate.cpp | 32 +++++++++++++++++ .../ProjectDataModel/RimSimWellFracture.cpp | 35 +++++++++++-------- .../ProjectDataModel/RimSimWellFracture.h | 2 +- .../RimStimPlanFractureTemplate.cpp | 1 + .../ProjectDataModel/RimWellPathFracture.cpp | 4 +-- .../ProjectDataModel/RimWellPathFracture.h | 2 +- 9 files changed, 65 insertions(+), 44 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimEllipseFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/RimEllipseFractureTemplate.cpp index a491baa2ba..8aa9bec454 100644 --- a/ApplicationCode/ProjectDataModel/RimEllipseFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/RimEllipseFractureTemplate.cpp @@ -61,8 +61,9 @@ RimEllipseFractureTemplate::~RimEllipseFractureTemplate() //-------------------------------------------------------------------------------------------------- void RimEllipseFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { + RimFractureTemplate::fieldChangedByUi(changedField, oldValue, newValue); - if (changedField == &halfLength || changedField == &height || changedField == &azimuthAngle || changedField == &perforationLength || changedField == &orientation) + if (changedField == &halfLength || changedField == &height || changedField == &perforationLength) { //Changes to one of these parameters should change all fractures with this fracture template attached. RimProject* proj; @@ -82,23 +83,6 @@ void RimEllipseFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* cha fracture->setRecomputeGeometryFlag(); } - if (changedField == &azimuthAngle && (abs(oldValue.toDouble() - fracture->azimuth()) < 1e-5)) - { - fracture->azimuth = azimuthAngle; - fracture->setRecomputeGeometryFlag(); - } - - if (changedField == &orientation) - { - fracture->setAzimuth(); - if (orientation() == FracOrientationEnum::AZIMUTH) - { - fracture->azimuth = azimuthAngle; - } - - fracture->setRecomputeGeometryFlag(); - } - if (changedField == &perforationLength && (abs(oldValue.toDouble() - fracture->perforationLength()) < 1e-5)) { fracture->perforationLength = perforationLength; @@ -110,11 +94,6 @@ void RimEllipseFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* cha proj->createDisplayModelAndRedrawAllViews(); } } - - - - - } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFracture.cpp b/ApplicationCode/ProjectDataModel/RimFracture.cpp index 5704c613a8..793bc4e348 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.cpp +++ b/ApplicationCode/ProjectDataModel/RimFracture.cpp @@ -167,7 +167,7 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons //TODO: Find out if performationLength should be in RimFractureTemplate or in RimEllipseFracTemplate if (attachedFractureDefinition()) azimuth = m_fractureTemplate->azimuthAngle(); else azimuth = 0.0; - setAzimuth(); + updateAzimuthFromFractureDefinition(); RimStimPlanFractureTemplate* stimPlanFracTemplate = dynamic_cast(attachedFractureDefinition()); if (stimPlanFracTemplate) @@ -732,7 +732,7 @@ void RimFracture::setFractureTemplate(RimFractureTemplate* fractureTemplate) stimPlanTimeIndexToPlot = static_cast(stimPlanFracTemplate->getStimPlanTimeValues().size() - 1); } - this->setAzimuth(); + this->updateAzimuthFromFractureDefinition(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFracture.h b/ApplicationCode/ProjectDataModel/RimFracture.h index 52794b9e6c..2d4b01e39c 100644 --- a/ApplicationCode/ProjectDataModel/RimFracture.h +++ b/ApplicationCode/ProjectDataModel/RimFracture.h @@ -57,7 +57,6 @@ public: cvf::Vec3d anchorPosition(); void setAnchorPosition(const cvf::Vec3d& pos); - virtual void setAzimuth() =0; cvf::Mat4f transformMatrix(); @@ -82,12 +81,15 @@ public: virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; cvf::Vec3d fracturePosition() const; + virtual void updateAzimuthFromFractureDefinition() = 0; + protected: virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override; virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) override; virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName = "") override; + private: bool isRecomputeGeometryFlagSet(); cvf::Vec3d fracturePositionForUi() const; diff --git a/ApplicationCode/ProjectDataModel/RimFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/RimFractureTemplate.cpp index 038f62a2d2..10c3a9167d 100644 --- a/ApplicationCode/ProjectDataModel/RimFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/RimFractureTemplate.cpp @@ -97,7 +97,39 @@ caf::PdmFieldHandle* RimFractureTemplate::userDescriptionField() //-------------------------------------------------------------------------------------------------- void RimFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { + if (changedField == &azimuthAngle || changedField == &orientation) + { + //Changes to one of these parameters should change all fractures with this fracture template attached. + RimProject* proj; + this->firstAncestorOrThisOfType(proj); + if (proj) + { + //Regenerate geometry + std::vector fractures; + proj->descendantsIncludingThisOfType(fractures); + for (RimFracture* fracture : fractures) + { + if (fracture->attachedFractureDefinition() == this) + { + if (changedField == &azimuthAngle && (abs(oldValue.toDouble() - fracture->azimuth()) < 1e-5)) + { + fracture->updateAzimuthFromFractureDefinition(); + fracture->setRecomputeGeometryFlag(); + } + + if (changedField == &orientation) + { + fracture->updateAzimuthFromFractureDefinition(); + + fracture->setRecomputeGeometryFlag(); + } + } + } + + proj->createDisplayModelAndRedrawAllViews(); + } + } } diff --git a/ApplicationCode/ProjectDataModel/RimSimWellFracture.cpp b/ApplicationCode/ProjectDataModel/RimSimWellFracture.cpp index 863723e428..ae96cc3a14 100644 --- a/ApplicationCode/ProjectDataModel/RimSimWellFracture.cpp +++ b/ApplicationCode/ProjectDataModel/RimSimWellFracture.cpp @@ -72,7 +72,7 @@ void RimSimWellFracture::setClosestWellCoord(cvf::Vec3d& position, size_t branch //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimSimWellFracture::setAzimuth() +void RimSimWellFracture::updateAzimuthFromFractureDefinition() { RimFractureTemplate::FracOrientationEnum orientation; if (attachedFractureDefinition()) orientation = attachedFractureDefinition()->orientation(); @@ -80,18 +80,17 @@ void RimSimWellFracture::setAzimuth() if (orientation == RimFractureTemplate::ALONG_WELL_PATH || orientation== RimFractureTemplate::TRANSVERSE_WELL_PATH) { - updateBranchGeometry(); - double simWellAzimuth = m_branchCenterLines[m_branchIndex].simWellAzimuthAngle(fracturePosition()); - if (orientation == RimFractureTemplate::TRANSVERSE_WELL_PATH ) - { - azimuth = simWellAzimuth; - } - if (orientation == RimFractureTemplate::ALONG_WELL_PATH) - { - if (simWellAzimuth + 90 < 360) azimuth = simWellAzimuth + 90; - else azimuth = simWellAzimuth - 90; - } - + updateBranchGeometry(); + double simWellAzimuth = m_branchCenterLines[m_branchIndex].simWellAzimuthAngle(fracturePosition()); + if (orientation == RimFractureTemplate::TRANSVERSE_WELL_PATH ) + { + azimuth = simWellAzimuth; + } + if (orientation == RimFractureTemplate::ALONG_WELL_PATH) + { + if (simWellAzimuth + 90 < 360) azimuth = simWellAzimuth + 90; + else azimuth = simWellAzimuth - 90; + } } else //Azimuth value read from template { @@ -112,7 +111,15 @@ void RimSimWellFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedFiel ) { updateFracturePositionFromLocation(); - setAzimuth(); + + RimFractureTemplate::FracOrientationEnum orientation; + if (attachedFractureDefinition()) orientation = attachedFractureDefinition()->orientation(); + else orientation = RimFractureTemplate::AZIMUTH; + + if (orientation != RimFractureTemplate::AZIMUTH) + { + updateAzimuthFromFractureDefinition(); + } RimProject* proj; this->firstAncestorOrThisOfType(proj); diff --git a/ApplicationCode/ProjectDataModel/RimSimWellFracture.h b/ApplicationCode/ProjectDataModel/RimSimWellFracture.h index 396e564cac..1e4e414c3d 100644 --- a/ApplicationCode/ProjectDataModel/RimSimWellFracture.h +++ b/ApplicationCode/ProjectDataModel/RimSimWellFracture.h @@ -42,7 +42,7 @@ public: void recomputeWellCenterlineCoordinates(); void updateFracturePositionFromLocation(); - void setAzimuth() override; + void updateAzimuthFromFractureDefinition() override; protected: diff --git a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp index 2c973595c3..7a2bf74023 100644 --- a/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/RimStimPlanFractureTemplate.cpp @@ -70,6 +70,7 @@ RimStimPlanFractureTemplate::~RimStimPlanFractureTemplate() //-------------------------------------------------------------------------------------------------- void RimStimPlanFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { + RimFractureTemplate::fieldChangedByUi(changedField, oldValue, newValue); if (&m_stimPlanFileName == changedField) { diff --git a/ApplicationCode/ProjectDataModel/RimWellPathFracture.cpp b/ApplicationCode/ProjectDataModel/RimWellPathFracture.cpp index 25f669bc92..3268db9faa 100644 --- a/ApplicationCode/ProjectDataModel/RimWellPathFracture.cpp +++ b/ApplicationCode/ProjectDataModel/RimWellPathFracture.cpp @@ -76,7 +76,7 @@ void RimWellPathFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedFie if (changedField == &m_measuredDepth) { updatePositionFromMeasuredDepth(); - setAzimuth(); + updateAzimuthFromFractureDefinition(); RimProject* proj = nullptr; this->firstAncestorOrThisOfType(proj); @@ -87,7 +87,7 @@ void RimWellPathFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedFie //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimWellPathFracture::setAzimuth() +void RimWellPathFracture::updateAzimuthFromFractureDefinition() { RimFractureTemplate::FracOrientationEnum orientation; if (attachedFractureDefinition()) orientation = attachedFractureDefinition()->orientation(); diff --git a/ApplicationCode/ProjectDataModel/RimWellPathFracture.h b/ApplicationCode/ProjectDataModel/RimWellPathFracture.h index 54468a21a0..23b1c508c6 100644 --- a/ApplicationCode/ProjectDataModel/RimWellPathFracture.h +++ b/ApplicationCode/ProjectDataModel/RimWellPathFracture.h @@ -41,7 +41,7 @@ public: void setMeasuredDepth(double mdValue); virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; - virtual void setAzimuth() override; + virtual void updateAzimuthFromFractureDefinition() override; protected: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;