|
|
|
@ -64,6 +64,7 @@
|
|
|
|
#include "iAnalRun.h"
|
|
|
|
#include "iAnalRun.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <QVector>
|
|
|
|
#include <QVector>
|
|
|
|
|
|
|
|
#include <QSet>
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmSingalCenter.h"
|
|
|
|
#include "nmSingalCenter.h"
|
|
|
|
|
|
|
|
|
|
|
|
@ -986,8 +987,18 @@ void nmSubWndMain::updateSelectedWells(QList<ZxDataWell *> wellObjList)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 当前在画布上的所有 ZxDataWell* 数据列表 (Key Set)
|
|
|
|
// 用集合保存当前井和选中井,避免井数增加后反复调用 QList::contains 造成平方级查找。
|
|
|
|
QList<ZxDataWell*> pWellPlotDataList = pWellDataToPlotMap.keys();
|
|
|
|
QList<ZxDataWell*> pWellPlotDataList = pWellDataToPlotMap.keys();
|
|
|
|
|
|
|
|
QSet<ZxDataWell*> pWellPlotDataSet;
|
|
|
|
|
|
|
|
for(int i = 0; i < pWellPlotDataList.count(); ++i) {
|
|
|
|
|
|
|
|
pWellPlotDataSet.insert(pWellPlotDataList[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
QSet<ZxDataWell*> selectedWellDataSet;
|
|
|
|
|
|
|
|
for(int i = 0; i < wellObjList.count(); ++i) {
|
|
|
|
|
|
|
|
if(wellObjList[i] != nullptr) {
|
|
|
|
|
|
|
|
selectedWellDataSet.insert(wellObjList[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// setp 2,找出需要 REMOVE (删除) 的图元
|
|
|
|
// setp 2,找出需要 REMOVE (删除) 的图元
|
|
|
|
QVector<nmObjPointWell*> vDeleteWellPlotList;
|
|
|
|
QVector<nmObjPointWell*> vDeleteWellPlotList;
|
|
|
|
@ -996,7 +1007,7 @@ void nmSubWndMain::updateSelectedWells(QList<ZxDataWell *> wellObjList)
|
|
|
|
for(int i = 0; i < pWellPlotDataList.count(); ++i) {
|
|
|
|
for(int i = 0; i < pWellPlotDataList.count(); ++i) {
|
|
|
|
ZxDataWell *pWellDataOnPlot = pWellPlotDataList[i];
|
|
|
|
ZxDataWell *pWellDataOnPlot = pWellPlotDataList[i];
|
|
|
|
// 如果该井数据不在用户选中的列表 wellObjList 中,则需要删除
|
|
|
|
// 如果该井数据不在用户选中的列表 wellObjList 中,则需要删除
|
|
|
|
if (!wellObjList.contains(pWellDataOnPlot)) {
|
|
|
|
if (!selectedWellDataSet.contains(pWellDataOnPlot)) {
|
|
|
|
// 从 Map 中获取对应的图元对象
|
|
|
|
// 从 Map 中获取对应的图元对象
|
|
|
|
vDeleteWellPlotList.append(pWellDataToPlotMap.value(pWellDataOnPlot));
|
|
|
|
vDeleteWellPlotList.append(pWellDataToPlotMap.value(pWellDataOnPlot));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -1009,12 +1020,16 @@ void nmSubWndMain::updateSelectedWells(QList<ZxDataWell *> wellObjList)
|
|
|
|
for(int i = 0; i < wellObjList.count(); ++i) {
|
|
|
|
for(int i = 0; i < wellObjList.count(); ++i) {
|
|
|
|
ZxDataWell *pWellDataSelected = wellObjList[i];
|
|
|
|
ZxDataWell *pWellDataSelected = wellObjList[i];
|
|
|
|
// 确保井数据有效
|
|
|
|
// 确保井数据有效
|
|
|
|
if (pWellDataSelected && !pWellPlotDataList.contains(pWellDataSelected)) {
|
|
|
|
if (pWellDataSelected && !pWellPlotDataSet.contains(pWellDataSelected)) {
|
|
|
|
// 如果该井数据不在当前画布上的数据列表中,则需要添加
|
|
|
|
// 如果该井数据不在当前画布上的数据列表中,则需要添加
|
|
|
|
vAddWellPlotList.append(pWellDataSelected);
|
|
|
|
vAddWellPlotList.append(pWellDataSelected);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 单井增删过程中会多次请求重绘;批量阶段先暂停,全部处理完成后再统一刷新。
|
|
|
|
|
|
|
|
const bool updatesEnabled = m_pWxPlot->updatesEnabled();
|
|
|
|
|
|
|
|
m_pWxPlot->setUpdatesEnabled(false);
|
|
|
|
|
|
|
|
|
|
|
|
// setp 4,执行删除操作
|
|
|
|
// setp 4,执行删除操作
|
|
|
|
for(int i = 0; i < vDeleteWellPlotList.count(); ++i) {
|
|
|
|
for(int i = 0; i < vDeleteWellPlotList.count(); ++i) {
|
|
|
|
nmObjPointWell* pWellPlot = vDeleteWellPlotList[i];
|
|
|
|
nmObjPointWell* pWellPlot = vDeleteWellPlotList[i];
|
|
|
|
@ -1056,8 +1071,11 @@ void nmSubWndMain::updateSelectedWells(QList<ZxDataWell *> wellObjList)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 添加完毕后,重新渲染
|
|
|
|
// 添加完毕后,重新渲染
|
|
|
|
|
|
|
|
m_pWxPlot->setUpdatesEnabled(updatesEnabled);
|
|
|
|
|
|
|
|
if(updatesEnabled) {
|
|
|
|
m_pWxPlot->update();
|
|
|
|
m_pWxPlot->update();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 地质图导入
|
|
|
|
// 地质图导入
|
|
|
|
void nmSubWndMain::geologicalMapImport()
|
|
|
|
void nmSubWndMain::geologicalMapImport()
|
|
|
|
|