//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimWellPathCollection::addWellPaths( QStringList filePaths ) { std::vector<RimWellPath*> wellPathArray; for (QString filePath : filePaths) { // Check if this file is already open bool alreadyOpen = false; for (size_t wpIdx = 0; wpIdx < wellPaths.size(); wpIdx++) { QFile f1; f1.setFileName(filePath); QString s1 = f1.fileName(); QFile f2; f2.setFileName(wellPaths[wpIdx]->filepath()); QString s2 = f2.fileName(); if (s1 == s2) { //printf("Attempting to open well path JSON file that is already open:\n %s\n", (const char*) filePath.toLocal8Bit()); alreadyOpen = true; break; } } if (!alreadyOpen) { QFileInfo fi(filePath); if (fi.suffix().compare("json") == 0) { RimWellPath* wellPath = new RimWellPath(); wellPath->filepath = filePath; wellPathArray.push_back(wellPath); } else { // Create Well path objects for all the paths in the assumed ascii file size_t wellPathCount = m_wellPathImporter->wellDataCount(filePath); for (size_t i = 0; i < wellPathCount; ++i) { RimWellPath* wellPath = new RimWellPath(); wellPath->filepath = filePath; wellPath->wellPathIndexInFile = static_cast<int>(i); wellPathArray.push_back(wellPath); } } } } readAndAddWellPaths(wellPathArray); RimProject* proj; firstAncestorOrThisOfTypeAsserted(proj); proj->reloadCompletionTypeResultsInAllViews(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimPerforationInterval::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { if (changedField == &m_startOfHistory) { m_date.uiCapability()->setUiReadOnly(m_startOfHistory()); } RimProject* proj; this->firstAncestorOrThisOfTypeAsserted(proj); proj->reloadCompletionTypeResultsInAllViews(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void Rim3dWellLogCurve::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { RimProject* proj; this->firstAncestorOrThisOfTypeAsserted(proj); if (changedField == &m_showCurve) { proj->reloadCompletionTypeResultsInAllViews(); } else { proj->scheduleCreateDisplayModelAndRedrawAllViews(); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimWellPathFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { RimFracture::fieldChangedByUi(changedField, oldValue, newValue); if (changedField == &m_measuredDepth) { updatePositionFromMeasuredDepth(); updateAzimuthBasedOnWellAzimuthAngle(); RimProject* proj = nullptr; this->firstAncestorOrThisOfType(proj); if (proj) proj->reloadCompletionTypeResultsInAllViews(); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- 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(); } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) { bool createDisplayModelAndRedraw = false; if (changedField == &m_azimuthAngle || changedField == &m_orientationType) { //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<RimFracture*> fractures; proj->descendantsIncludingThisOfType(fractures); for (RimFracture* fracture : fractures) { if (fracture->fractureTemplate() == this) { if (changedField == &m_azimuthAngle && (fabs(oldValue.toDouble() - fracture->m_azimuth()) < 1e-5)) { fracture->m_azimuth = m_azimuthAngle; } if (changedField == &m_orientationType) { if (newValue == AZIMUTH) { fracture->m_azimuth = m_azimuthAngle; } else fracture->updateAzimuthBasedOnWellAzimuthAngle(); } } } createDisplayModelAndRedraw = true; } } if (changedField == &m_perforationLength || changedField == &m_perforationEfficiency || changedField == &m_wellDiameter) { RimProject* proj; this->firstAncestorOrThisOfType(proj); if (!proj) return; std::vector<RimFracture*> fractures; proj->descendantsIncludingThisOfType(fractures); for (RimFracture* fracture : fractures) { if (fracture->fractureTemplate() == this) { if (changedField == &m_perforationLength && (fabs(oldValue.toDouble() - fracture->m_perforationLength()) < 1e-5)) { fracture->m_perforationLength = m_perforationLength; } if (changedField == &m_perforationEfficiency && (fabs(oldValue.toDouble() - fracture->m_perforationEfficiency()) < 1e-5)) { fracture->m_perforationEfficiency = m_perforationEfficiency; } if (changedField == &m_wellDiameter && (fabs(oldValue.toDouble() - fracture->m_wellDiameter()) < 1e-5)) { fracture->m_wellDiameter = m_wellDiameter; } } } } if (changedField == &m_perforationLength) { createDisplayModelAndRedraw = true; } if (createDisplayModelAndRedraw) { RimProject* proj; this->firstAncestorOrThisOfType(proj); if (proj) { proj->reloadCompletionTypeResultsInAllViews(); } } }