From 5c14f4e8e748f5c9c2a35ed0cbada83f46aee082 Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Fri, 21 Aug 2026 17:27:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(nmSubWxs):=20=E7=B2=BE=E7=AE=80?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=BA=95=E8=BD=A8=E8=BF=B9=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 增加3D视图入口可见性接口 - 在新版编辑井对话框中隐藏未实现的3D视图 - 完整移除重复的手动刷新按钮及相关信号槽 - 保留参数变化后的轨迹自动刷新机制 - 更新中文翻译资源 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 109434 -> 109365 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 1 - .../nmSubWxs/nmWxWellboreTrajectoryDisplay.h | 5 ++-- Src/nmNum/nmSubWxs/nmWxWellEditor.cpp | 1 + .../nmWxWellboreTrajectoryDisplay.cpp | 28 +++++++++++------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index 88f230a1bfb28339a02e9886a1c6f8be375cd7ae..630ca98fc2ba1378c4a8248430a6ce65b18b63f0 100644 GIT binary patch delta 85 zcmV-b0IL7`)&{lK29Oj10I?On1p!{O)di*k0)OGNeF(<_0id%*3nvQ!9FuJpUIKvK rv&|Oi1+%^!W(NUMvn3?21p$_m)hSE?8-pS$w<0P5R)4p(sR6|SSH~Xd delta 120 zcmdmbjqTSpwh1DP92-UVvog-!e3f+>6H|lS=30*9OpJFoyK<{@Ge%C%6^mnPl-hh& z>?JGv-kuW-jP*gAx5}imGxl$mRawu Zoom in放大 Coordinates坐标显示 Edit wellbore编辑井筒 - Refresh刷新 Edit perforations编辑射孔 New perforation新建射孔 Delete perforation删除射孔 diff --git a/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h b/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h index 3521d3d..8194018 100644 --- a/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h +++ b/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h @@ -897,6 +897,9 @@ class NM_SUB_WXS_EXPORT nmWxWellboreTrajectoryDisplay : public QWidget // 设置当前要显示的井数据 void setCurrentWellboreData(nmDataWellBase* pWellData); + /** @brief 设置3D视图入口是否可见。 */ + void set3DViewVisible(bool bVisible); + // 对当前可见视图设置模式和更新UI void setEditWellMode(bool enabled); // 用于井筒轨迹编辑模式 void setPerforationEditMode(bool enabled); // 射孔编辑模式 @@ -962,7 +965,6 @@ class NM_SUB_WXS_EXPORT nmWxWellboreTrajectoryDisplay : public QWidget void onZoomInClicked(); // 放大 void onXYClicked(); // 坐标显示 void onEditWellClicked(); // 编辑井筒轨迹(发出请求) - void onRefreshClicked(); // 刷新当前轨迹视图 void onEditPerforationsClicked(); // 编辑射孔(发出请求) void onNewPerforationClicked(); // 添加射孔段(发出请求) void onDeletePerforationClicked(); // 删除射孔段(发出请求) @@ -996,7 +998,6 @@ class NM_SUB_WXS_EXPORT nmWxWellboreTrajectoryDisplay : public QWidget QAction *m_pZoomInAction; // 放大 QAction *m_pXYAction; // 坐标显示 QAction *m_pEditWellAction; // 编辑井筒轨迹 - QAction *m_pRefreshAction; // 刷新当前轨迹视图 QAction *m_pEditPerforationsAction; // 编辑射孔 QAction *m_pNewPerforationAction; // 添加射孔段 QAction *m_pDeletePerforationAction; // 删除射孔段 diff --git a/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp b/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp index 6bfbfdc..123bd96 100644 --- a/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp +++ b/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp @@ -415,6 +415,7 @@ void nmWxWellEditor::createUi() // 第二步:右侧轨迹视图占据剩余空间,避免参数区拉伸破坏绘图比例。 m_pTrajectoryDisplay = new nmWxWellboreTrajectoryDisplay(m_pMainSplitter); + m_pTrajectoryDisplay->set3DViewVisible(false); m_pMainSplitter->addWidget(pParameterContainer); m_pMainSplitter->addWidget(m_pTrajectoryDisplay); m_pMainSplitter->setStretchFactor(0, 0); diff --git a/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp b/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp index fe52a90..e8adc7d 100644 --- a/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp +++ b/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp @@ -4028,6 +4028,24 @@ void nmWxWellboreTrajectoryDisplay::setCurrentWellboreData(nmDataWellBase* pWell m_pCrossSectionViewWidget->resetViewTransform(); } +void nmWxWellboreTrajectoryDisplay::set3DViewVisible(bool bVisible) +{ + if (m_p3DViewRadio == nullptr || m_pStackedWidget == nullptr) + { + return; + } + + m_p3DViewRadio->setVisible(bVisible); + if (!bVisible && m_pStackedWidget->currentIndex() == 2) + { + // 隐藏当前3D页时返回俯视图,保持选中状态、页面和工具栏一致。 + m_pTopViewRadio->setChecked(true); + m_pStackedWidget->setCurrentIndex(0); + updateToolBarForCurrentView(0); + emit currentViewChanged(0); + } +} + void nmWxWellboreTrajectoryDisplay::setEditWellMode(bool enabled) { // 将状态传递给当前激活的子视图 @@ -4170,7 +4188,6 @@ void nmWxWellboreTrajectoryDisplay::createToolBar() m_pXYAction = m_pToolBar->addAction(QIcon(sIconDir + "NmWellbore4.png"), tr("Coordinates")); m_pEditWellAction = m_pToolBar->addAction(QIcon(sIconDir + "NmWellbore5.png"), tr("Edit wellbore")); - m_pRefreshAction = m_pToolBar->addAction(QIcon(sIconDir + "NmWellbore6.png"), tr("Refresh")); m_pToolBar->addSeparator(); // 第二步:射孔编辑命令按当前井型和视角动态启用。 @@ -4213,8 +4230,6 @@ void nmWxWellboreTrajectoryDisplay::connectSignalsSlots() connect(m_pZoomInAction, SIGNAL(triggered()), this, SLOT(onZoomInClicked())); connect(m_pXYAction, SIGNAL(triggered()), this, SLOT(onXYClicked())); // XY 坐标显示仍然在视图内管理 - connect(m_pRefreshAction, SIGNAL(triggered()), - this, SLOT(onRefreshClicked())); // ============== 模式请求信号连接 ============== // 这些槽函数现在将发出请求给控制器 @@ -4414,12 +4429,6 @@ void nmWxWellboreTrajectoryDisplay::onEditWellClicked() emit requestedEditWellMode(nCurrentViewIndex); } -void nmWxWellboreTrajectoryDisplay::onRefreshClicked() -{ - // 刷新只重读当前工作副本,不加载文件也不修改业务数据。 - onWellboreDataChanged(); -} - void nmWxWellboreTrajectoryDisplay::onEditPerforationsClicked() { int nCurrentViewIndex = m_pStackedWidget->currentIndex(); @@ -4514,7 +4523,6 @@ void nmWxWellboreTrajectoryDisplay::updateToolBarForCurrentView(int viewIndex) m_pXYAction->setEnabled(true); m_pEditWellAction->setEnabled(true); - m_pRefreshAction->setEnabled(true); m_pEditPerforationsAction->setEnabled(true); m_pNewPerforationAction->setEnabled(true); m_pDeletePerforationAction->setEnabled(true);