diff --git a/Src/nmNum/nmSubWxs/nmWxAutomaticFitting.cpp b/Src/nmNum/nmSubWxs/nmWxAutomaticFitting.cpp index a1a145d..7fb61d6 100644 --- a/Src/nmNum/nmSubWxs/nmWxAutomaticFitting.cpp +++ b/Src/nmNum/nmSubWxs/nmWxAutomaticFitting.cpp @@ -926,24 +926,29 @@ void nmWxAutomaticFitting::setupControlPanel() QLabel* wellLabel = new QLabel(tr("Target Well:")); m_targetWellCombo = new QComboBox(); - // 添加垂直井 - for(int i = 0; i < m_verticalWells.size(); ++i) { - m_targetWellCombo->addItem(m_verticalWells[i].getWellName()); - } - - // 添加水平井 - for(int i = 0; i < m_horizontalWells.size(); ++i) { - m_targetWellCombo->addItem(m_horizontalWells[i].getWellName()); - } - - // 添加垂直压裂井 - for(int i = 0; i < m_verticalFracturedWells.size(); ++i) { - m_targetWellCombo->addItem(m_verticalFracturedWells[i].getWellName()); - } + // 目标井先加入当前分析主井,再加入已勾选且具备流量、压力数据的包含井。 + nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance(); + if(pManager != nullptr) { + const QString sPrimaryWellCode = pManager->getPrimaryWellCode(); + nmDataWellBase* pPrimaryWell = pManager->findWellByCode(sPrimaryWellCode); + if(pPrimaryWell != nullptr) { + m_targetWellCombo->addItem(pPrimaryWell->getWellName()); + } - // 添加水平压裂井 - for(int i = 0; i < m_horizontalFracturedWells.size(); ++i) { - m_targetWellCombo->addItem(m_horizontalFracturedWells[i].getWellName()); + if(pManager->getIncludeOtherWells()) { + const QVector vecIncludedWells = + pManager->getIncludedCalculationWells(); + for(int nIndex = 0; nIndex < vecIncludedWells.size(); ++nIndex) { + const QString& sWellCode = vecIncludedWells[nIndex].m_sWellCode; + nmDataWellBase* pWellData = pManager->findWellByCode(sWellCode); + if(pWellData == nullptr || sWellCode == sPrimaryWellCode || + pWellData->getFlowSegmentCount() <= 0 || + pWellData->getPressurePoints().size() < 2) { + continue; + } + m_targetWellCombo->addItem(pWellData->getWellName()); + } + } } connect(m_targetWellCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onWellSelected(int)));