diff --git a/src/controller/VtkSceneController.cpp b/src/controller/VtkSceneController.cpp index 20206e2..cb9bfc1 100644 --- a/src/controller/VtkSceneController.cpp +++ b/src/controller/VtkSceneController.cpp @@ -103,7 +103,19 @@ void VtkSceneController::rebuildInternal() { }); } if (showCurtain_) { - for (const auto& dsId : checkedDs_) view_.addCurtain(grid(dsId), colorScale(dsId)); + for (const auto& dsId : checkedDs_) { + sceneRepo_.loadSection( + dsId, + [self, gen](data::SectionData s) { + if (!self || gen != self->rebuildGeneration_) return; // 已析构/迟到:丢弃 + self->view_.addCurtain(s.grid, s.scale); + if (!self->inRebuild_) self->view_.render(false); // 同步路径由末尾统一 render + }, + [self, gen](const std::string& m) { + if (!self || gen != self->rebuildGeneration_) return; + emit self->loadFailed(QString::fromStdString(m)); + }); + } } if (showVoxel_) { for (const auto& dsId : checkedDs_) {