过滤自动拟合目标井列表

- 默认显示当前分析主井
- 仅显示“包含其他井”中已勾选的井
- 过滤缺少有效流量或压力数据的包含井
feature/Adapt-Autofit-20260904
lvjunjie 6 days ago
parent 073db447a3
commit b7148fcfc9

@ -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<nmCalculationWellRef> 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)));

Loading…
Cancel
Save