From 3bb0e84eb749b1292df7ec2ba5be326ef44a1e25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rnar=20Grip=20Fj=C3=A6r?= Date: Fri, 2 Jun 2017 14:58:33 +0200 Subject: [PATCH] #1555 Add start measured depth to fishbones collection --- .../Completions/RimFishbonesCollection.cpp | 26 +++++++++++++++++++ .../Completions/RimFishbonesCollection.h | 5 ++++ .../Completions/RimFishbonesMultipleSubs.cpp | 5 ++++ 3 files changed, 36 insertions(+) diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.cpp index 6b266b9d1c..cfde5c6c27 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.cpp @@ -29,6 +29,7 @@ #include +#include CAF_PDM_SOURCE_INIT(RimFishbonesCollection, "FishbonesCollection"); @@ -49,6 +50,8 @@ RimFishbonesCollection::RimFishbonesCollection() CAF_PDM_InitFieldNoDefault(&m_wellPathCollection, "WellPathCollection", "Well Paths", "", "", ""); m_wellPathCollection = new RimFishboneWellPathCollection; m_wellPathCollection.uiCapability()->setUiHidden(true); + + CAF_PDM_InitField(&m_startMD, "StartMD", HUGE_VAL, "Start MD", "", "", ""); } //-------------------------------------------------------------------------------------------------- @@ -78,6 +81,8 @@ void RimFishbonesCollection::appendFishbonesSubs(RimFishbonesMultipleSubs* subs) { subs->fishbonesColor = nextFishbonesColor(); fishbonesSubs.push_back(subs); + + recalculateStartMD(); } //-------------------------------------------------------------------------------------------------- @@ -113,3 +118,24 @@ cvf::Color3f RimFishbonesCollection::nextFishbonesColor() const return cvf::Color3f::fromByteColor(qFishbonesColor.red(), qFishbonesColor.green(), qFishbonesColor.blue()); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimFishbonesCollection::recalculateStartMD() +{ + double minStartMD = HUGE_VAL; + + for (const RimFishbonesMultipleSubs* sub : fishbonesSubs()) + { + for (auto& index : sub->installedLateralIndices()) + { + minStartMD = std::min(minStartMD, sub->measuredDepth(index.subIndex) - 13.0); + } + } + + if (minStartMD < m_startMD()) + { + m_startMD = minStartMD; + } +} + diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.h b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.h index a91fbd4fcc..cba9db8e58 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesCollection.h @@ -46,11 +46,16 @@ public: caf::PdmChildArrayField fishbonesSubs; + void recalculateStartMD(); + protected: virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; private: cvf::Color3f nextFishbonesColor() const; +private: caf::PdmChildField m_wellPathCollection; + + caf::PdmField m_startMD; }; diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesMultipleSubs.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesMultipleSubs.cpp index 420134caf1..93632704b9 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFishbonesMultipleSubs.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFishbonesMultipleSubs.cpp @@ -22,6 +22,7 @@ #include "RigWellPath.h" #include "RimProject.h" #include "RimWellPath.h" +#include "RimFishbonesCollection.h" #include "cafPdmUiListEditor.h" @@ -334,6 +335,10 @@ void RimFishbonesMultipleSubs::computeRangesAndLocations() m_locationOfSubs = validMeasuredDepths; } + + RimFishbonesCollection* collection; + this->firstAncestorOrThisOfTypeAsserted(collection); + collection->recalculateStartMD(); } //--------------------------------------------------------------------------------------------------