feat(radar): Impulse 测线本地导入入口(双数据集互证下游)
radarMenu 追加「导入Impulse测线目录(.iprb)…」动作,复用 createGprVolume (eager 同步建体,预填 cachedGrid)。内层 lambda 按引用捕获 window 修正 QMainWindow 拷贝构造删除/showToast 非 const QWidget* 编译错误。
This commit is contained in:
parent
2ba9d07f6c
commit
717bdbb70c
|
|
@ -1005,6 +1005,43 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
analysisTab->setItemBusy(qid, true); // spinner; 渲染完成由 datasetRendered 撤(main.cpp:987)
|
analysisTab->setItemBusy(qid, true); // spinner; 渲染完成由 datasetRendered 撤(main.cpp:987)
|
||||||
analysisTab->scrollItemToTop(qid);
|
analysisTab->scrollItemToTop(qid);
|
||||||
});
|
});
|
||||||
|
// 明星路 Impulse(.iprb) 本地导入:复用现成 createGprVolume(eager 同步建体,预填 cachedGrid)。
|
||||||
|
// 双数据集互证:证下游渲染/切片/异常对 14ch(Impulse)/16ch(Mala) 几何无关。
|
||||||
|
QAction* importImpulseAct =
|
||||||
|
radarMenu->addAction(QStringLiteral("导入Impulse测线目录(.iprb)…"));
|
||||||
|
QObject::connect(importImpulseAct, &QAction::triggered, &window,
|
||||||
|
[&window, scene3dRepo, refreshAnalysis, analysisTab, vtkLoading]() {
|
||||||
|
const QString dir = QFileDialog::getExistingDirectory(
|
||||||
|
&window, QStringLiteral("选择 Impulse 测线目录(含 *.iprb/*.ord)"));
|
||||||
|
if (dir.isEmpty()) return;
|
||||||
|
bool ok = false;
|
||||||
|
const QString prefix = QInputDialog::getText(
|
||||||
|
&window, QStringLiteral("测线前缀"),
|
||||||
|
QStringLiteral("输入测线前缀(如 明星路_010):"), QLineEdit::Normal, QString(), &ok);
|
||||||
|
if (!ok || prefix.isEmpty()) return;
|
||||||
|
vtkLoading->showOver(QStringLiteral("正在建Impulse体…"));
|
||||||
|
// 内层捕获 window 引用(非 [=] 值拷贝):QMainWindow 拷贝构造已删除,且 showToast 需非 const QWidget*。
|
||||||
|
QTimer::singleShot(0, &window, [=, &window]() {
|
||||||
|
std::string newId;
|
||||||
|
try {
|
||||||
|
newId = scene3dRepo->createGprVolume(dir.toLocal8Bit().toStdString(),
|
||||||
|
prefix.toLocal8Bit().toStdString(),
|
||||||
|
prefix.toStdString(), /*coarse=*/8);
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
vtkLoading->hide();
|
||||||
|
geopro::app::showToast(&window,
|
||||||
|
QStringLiteral("建体失败:%1").arg(QString::fromLocal8Bit(e.what())));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
{ const QSignalBlocker block(analysisTab); refreshAnalysis(); }
|
||||||
|
vtkLoading->hide();
|
||||||
|
const QString qid = QString::fromStdString(newId);
|
||||||
|
// createGprVolume 预填 cachedGrid → setItemChecked 内 loadVolume 同步渲染、datasetRendered 自动撤 busy;
|
||||||
|
// 故此处【不要】再 setItemBusy(true)(否则 spinner 永久转圈 —— 评审 MEDIUM)。
|
||||||
|
analysisTab->setItemChecked(qid, true);
|
||||||
|
analysisTab->scrollItemToTop(qid);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
// 任一数据集(剖面/体)异步加载开始 → 列表项复选框转等待 spinner;渲染完成 → 复原复选框。
|
// 任一数据集(剖面/体)异步加载开始 → 列表项复选框转等待 spinner;渲染完成 → 复原复选框。
|
||||||
// 覆盖非三维体:勾选剖面首次渲染较慢时也有等待反馈(用户反馈)。
|
// 覆盖非三维体:勾选剖面首次渲染较慢时也有等待反馈(用户反馈)。
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue