From cfd242c106a05c54f25594032846e79637698e85 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 24 Jun 2026 21:24:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=82=E5=B8=B8=E5=8F=8C=E5=87=BB?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=85=A5=E4=B8=89=E7=BA=A7=E6=A0=91?= =?UTF-8?q?(anomalyById=E2=86=92AnomalyPropertiesDialog)(Task11=20Step4b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main.cpp | 6 ++++++ src/data/api/Api3dRepository.cpp | 7 +++++++ src/data/api/Api3dRepository.hpp | 2 ++ 3 files changed, 15 insertions(+) diff --git a/src/app/main.cpp b/src/app/main.cpp index ebaa788..ac298e8 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -750,6 +750,12 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re geopro::app::VolumePropertiesDialog dlg(name, info, &window); dlg.exec(); } + } else if (ddCode == QStringLiteral("dd_anomaly")) { + geopro::core::Anomaly a; + if (scene3dRepo->anomalyById(dsId.toStdString(), a)) { + geopro::app::AnomalyPropertiesDialog dlg(a, &window); + dlg.exec(); + } } }); // O点位置/字体本期 stub(TODO P4:弹框)。 diff --git a/src/data/api/Api3dRepository.cpp b/src/data/api/Api3dRepository.cpp index 5a889d8..ff5de08 100644 --- a/src/data/api/Api3dRepository.cpp +++ b/src/data/api/Api3dRepository.cpp @@ -325,6 +325,13 @@ bool Api3dRepository::isAnomalyDataset(const std::string& dsId) const { return anomalies_.find(dsId) != anomalies_.end(); } +bool Api3dRepository::anomalyById(const std::string& anomalyId, geopro::core::Anomaly& out) const { + const auto it = anomalies_.find(anomalyId); + if (it == anomalies_.end()) return false; + out = it->second.a; + return true; +} + bool Api3dRepository::sliceSpec(const std::string& dsId, SliceSpec& out) const { auto it = slices_.find(dsId); if (it == slices_.end()) return false; diff --git a/src/data/api/Api3dRepository.hpp b/src/data/api/Api3dRepository.hpp index 182b437..fee79d6 100644 --- a/src/data/api/Api3dRepository.hpp +++ b/src/data/api/Api3dRepository.hpp @@ -69,6 +69,8 @@ public: bool isSliceDataset(const std::string& dsId) const; // 该 dsId 是否为异常(dd_anomaly)——勾选异常不进帘面/体素渲染勾选,显隐另管。 bool isAnomalyDataset(const std::string& dsId) const; + // 按 id 取异常(三级树双击详情用);不存在返回 false。 + bool anomalyById(const std::string& anomalyId, geopro::core::Anomaly& out) const; // 取回已保存切片位姿(还原渲染用);不存在返回 false。 bool sliceSpec(const std::string& dsId, SliceSpec& out) const;