feat(vtk): 注入 Api3dRepository 渲染真实 ERT 帘面+删样本桥(勾选真实ds→真实数据)(①.4)

This commit is contained in:
gaozheng 2026-06-16 18:38:30 +08:00
parent 2934bacd34
commit e34abd271f
1 changed files with 8 additions and 11 deletions

View File

@ -82,7 +82,6 @@
#include "model/ColorScale.hpp"
#include "model/Field.hpp"
#include "repo/LocalSampleRepository.hpp"
#include "repo/LocalSample3dRepository.hpp"
#include "ApiClient.hpp"
#include "AuthService.hpp"
@ -110,6 +109,7 @@
#include "panels/chart/GridStrategy.hpp"
#include "api/ApiProjectRepository.hpp"
#include "api/ApiDatasetRepository.hpp"
#include "api/Api3dRepository.hpp"
#include "panels/ObjectTreePanel.hpp"
#include "login/LoginWindow.hpp"
#include "panels/DatasetListPanel.hpp"
@ -224,6 +224,7 @@ constexpr const char* kWgs84 = "EPSG:4326";
// repo 生命周期须覆盖到事件循环结束(由调用方保证)。
void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& repo,
geopro::data::IAsyncProjectRepository& projectRepo,
geopro::data::IAsyncDatasetRepository& datasetRepo,
geopro::controller::WorkbenchNavController& nav,
geopro::controller::DatasetDetailController& detailCtrl)
{
@ -247,9 +248,9 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
vtkGenericOpenGLRenderWindow* renderWindowPtr = renderWindow.Get();
// 中央渲染编排VtkSceneController + VtkSceneView取代旧 rebuildCentral lambda 与裸 show* 标志)。
// 3D 场景仓储用 LocalSample3dRepository本期样本驱动接口异步将来换 Api 实现不动上层)。
// 3D 场景仓储用 Api3dRepository真实后端loadSection 走真实 ERT 反演端点,委托 datasetRepo)。
// 视图VtkSceneView非 QObject、控制器/3D 仓储亦然:随 scene 一并在 vtkWidget 销毁时清理。
auto* scene3dRepo = new geopro::data::LocalSample3dRepository(repo, kProjectCrs, lat0, lon0);
auto* scene3dRepo = new geopro::data::Api3dRepository(datasetRepo);
auto* sceneView = new geopro::app::VtkSceneView(*scene, renderWindowPtr,
frame, refElev);
auto* sceneCtrl = new geopro::controller::VtkSceneController(repo, *scene3dRepo, *sceneView,
@ -373,14 +374,10 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
&geopro::controller::VtkSceneController::zoomOut);
QObject::connect(c3, &geopro::app::Column3DDataset::fitRequested, sceneCtrl,
&geopro::controller::VtkSceneController::fit);
// 渲染勾选的 3D 数据集。本阶段渲染走 LocalSampleRepository仅含样本 dd_section "grid1"
// 真实后端 ds 的渲染数据尚未就绪Api3dRepository 后置)→ 勾任一 3D ds 暂以样本帘面呈现。
// Api3dRepository 就绪后删除此映射、改为直接 setCheckedDatasets(ids) 渲染真实数据。
// 渲染勾选的 3D 数据集:真实 ds id 直达控制器异步帘面路径
// setCheckedDatasets → Api3dRepository.loadSection(realId) → 真实 ERT 反演端点 → 真实帘面)。
QObject::connect(c3, &geopro::app::Column3DDataset::checkedDatasetsChanged, sceneCtrl,
[sceneCtrl](const QStringList& ids) {
sceneCtrl->setCheckedDatasets(
ids.isEmpty() ? QStringList{} : QStringList{QStringLiteral("grid1")});
});
&geopro::controller::VtkSceneController::setCheckedDatasets);
// O点位置/字体本期 stubTODO P4弹框
QObject::connect(c3, &geopro::app::Column3DDataset::oPointClicked, vtkWidget,
[]() { /* TODO P4: O点位置弹框 */ });
@ -1349,7 +1346,7 @@ int main(int argc, char* argv[])
window->setWindowTitle(kTitle);
window->resize(1280, 800);
window->setMinimumSize(1024, 680);
buildWorkbench(*window, repo, projectRepo, nav, detailCtrl);
buildWorkbench(*window, repo, projectRepo, datasetRepo, nav, detailCtrl);
// 主题桥ThemeManager 明/暗切换 → 重应用全局 QSS+调色板(标准控件 + ADS内联 chrome 经各自连接)。
QObject::connect(&geopro::app::ThemeManager::instance(), &geopro::app::ThemeManager::changed,