///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2015- Statoil ASA // Copyright (C) 2015- Ceetron Solutions AS // // ResInsight is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY // WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. // // See the GNU General Public License at // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RimFishboneWellPathCollection.h" #include "RimFishboneWellPath.h" #include "RimFishbonesCollection.h" #include "RimProject.h" #include "Rim3dView.h" #include "RigWellPath.h" #include "RifWellPathImporter.h" #include "Riu3DMainWindowTools.h" CAF_PDM_SOURCE_INIT(RimFishboneWellPathCollection, "WellPathCompletionCollection"); //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimFishboneWellPathCollection::RimFishboneWellPathCollection() { CAF_PDM_InitObject("WellPathCompletions", ":/FishBoneGroupFromFile16x16.png", "", ""); nameField()->uiCapability()->setUiHidden(true); this->setName("Imported Laterals"); CAF_PDM_InitFieldNoDefault(&m_wellPaths, "WellPaths", "Imported Laterals", "", "", ""); m_wellPaths.uiCapability()->setUiHidden(true); CAF_PDM_InitFieldNoDefault(&m_pipeProperties, "PipeProperties", "Pipe Properties", "", "", ""); m_pipeProperties.uiCapability()->setUiHidden(true); m_pipeProperties.uiCapability()->setUiTreeHidden(true); m_pipeProperties.uiCapability()->setUiTreeChildrenHidden(true); m_pipeProperties = new RimFishbonesPipeProperties; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFishboneWellPathCollection::importCompletionsFromFile(const QStringList& filePaths) { RifWellPathImporter wellPathImporter; for (const QString& filePath : filePaths) { size_t wellDataCount = wellPathImporter.wellDataCount(filePath); for (size_t i = 0; i < wellDataCount; ++i) { RifWellPathImporter::WellData wellData = wellPathImporter.readWellData(filePath, i); RimFishboneWellPath* wellCompletion = new RimFishboneWellPath(); wellCompletion->setName(wellData.m_name); wellCompletion->setCoordinates(wellData.m_wellPathGeometry->m_wellPathPoints); wellCompletion->setMeasuredDepths(wellData.m_wellPathGeometry->m_measuredDepths); appendCompletion(wellCompletion); } } RimFishbonesCollection* fishbonesCollection; firstAncestorOrThisOfType(fishbonesCollection); if (fishbonesCollection != nullptr) { fishbonesCollection->recalculateStartMD(); } } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFishboneWellPathCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { RimProject* proj; this->firstAncestorOrThisOfTypeAsserted(proj); proj->createDisplayModelAndRedrawAllViews(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- std::vector RimFishboneWellPathCollection::wellPaths() const { std::vector paths; for (const RimFishboneWellPath* path : m_wellPaths) { paths.push_back(path); } return paths; } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFishboneWellPathCollection::setUnitSystemSpecificDefaults() { m_pipeProperties->setUnitSystemSpecificDefaults(); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFishboneWellPathCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) { caf::PdmUiGroup* wellPropertiesGroup = uiOrdering.addNewGroup("Well Properties"); m_pipeProperties->uiOrdering(uiConfigName, *wellPropertiesGroup); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFishboneWellPathCollection::appendCompletion(RimFishboneWellPath* completion) { m_wellPaths.push_back(completion); updateConnectedEditors(); Riu3DMainWindowTools::selectAsCurrentItem(completion); uiCapability()->setUiHidden(!m_wellPaths.empty()); RimProject* project = nullptr; firstAncestorOrThisOfTypeAsserted(project); if (project) { project->reloadCompletionTypeResultsInAllViews(); } }