feat/vtk-3d-view #7
|
|
@ -1223,27 +1223,28 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
// 渲染由三栏勾选框驱动(Task 7:Column3DDataset::checkedDatasetsChanged → setCheckedDatasets)。
|
// 渲染由三栏勾选框驱动(Task 7:Column3DDataset::checkedDatasetsChanged → setCheckedDatasets)。
|
||||||
auto generation = std::make_shared<unsigned long long>(0);
|
auto generation = std::make_shared<unsigned long long>(0);
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
objectTree, &geopro::app::ObjectTreePanel::checkedTmsChanged, &window,
|
objectTree, &geopro::app::ObjectTreePanel::checkedSourcesChanged, &window,
|
||||||
[&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows,
|
[&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows,
|
||||||
refreshAnalysis](const QStringList& tmIds) {
|
refreshAnalysis](const QList<geopro::data::DataSource>& sources) {
|
||||||
const unsigned long long myGen = ++(*generation);
|
const unsigned long long myGen = ++(*generation);
|
||||||
emptyState->setVisible(tmIds.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染
|
emptyState->setVisible(sources.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染
|
||||||
if (tmIds.isEmpty()) {
|
if (sources.isEmpty()) {
|
||||||
*lastSourceRows = {};
|
*lastSourceRows = {};
|
||||||
refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D
|
refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 多 TM 异步汇总:每个 TM 取整棵 ds 子树,全部回来后 splitByCategory 分发到 5 段。
|
// 多源异步汇总:每个源(TM / GS·项目根直挂)按 confType 取整棵 ds 子树,全部回来后 splitByCategory 分 5 段。
|
||||||
auto acc = std::make_shared<std::vector<geopro::data::DsRow>>();
|
auto acc = std::make_shared<std::vector<geopro::data::DsRow>>();
|
||||||
auto remaining = std::make_shared<int>(tmIds.size());
|
auto remaining = std::make_shared<int>(sources.size());
|
||||||
auto finish = [acc, generation, myGen, lastSourceRows, refreshAnalysis]() {
|
auto finish = [acc, generation, myGen, lastSourceRows, refreshAnalysis]() {
|
||||||
if (*generation != myGen) return; // 已被更新的勾选批次取代→丢弃陈旧结果
|
if (*generation != myGen) return; // 已被更新的勾选批次取代→丢弃陈旧结果
|
||||||
*lastSourceRows = *acc; // 全部对象树 ds 作分析数据源
|
*lastSourceRows = *acc; // 全部对象树 ds 作分析数据源
|
||||||
refreshAnalysis(); // splitByCategory→5段 + 合并三维体/切片 + dim2D→col2D
|
refreshAnalysis(); // splitByCategory→5段 + 合并三维体/切片 + dim2D→col2D
|
||||||
};
|
};
|
||||||
for (const QString& tm : tmIds) {
|
for (const geopro::data::DataSource& src : sources) {
|
||||||
|
// 第3参 confType:1=GS/项目根(直挂 ds),2=TM(测线下 ds)——透传给 loadRowsAsync(spec §6)。
|
||||||
geopro::data::NavRequest* req = projectRepo.loadRowsAsync(
|
geopro::data::NavRequest* req = projectRepo.loadRowsAsync(
|
||||||
nav.currentProjectId().toStdString(), tm.toStdString(), 2, 3, 1, 100000);
|
nav.currentProjectId().toStdString(), src.id, src.confType, 3, 1, 100000);
|
||||||
QObject::connect(req, &geopro::data::NavRequest::done, drawer,
|
QObject::connect(req, &geopro::data::NavRequest::done, drawer,
|
||||||
[acc, remaining, finish](const QVariant& v) {
|
[acc, remaining, finish](const QVariant& v) {
|
||||||
auto page = qvariant_cast<geopro::data::DsPage>(v);
|
auto page = qvariant_cast<geopro::data::DsPage>(v);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue