From 6076eb79ebea9665188b5ed89820f6b02555e71d Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Mon, 24 Aug 2026 15:26:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(nmSubWxs):=20=E6=8C=89=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E4=BA=95=E5=9E=8B=E8=AE=BE=E7=BD=AE=E4=BA=95=E7=AD=92=E8=BD=A8?= =?UTF-8?q?=E8=BF=B9=E9=BB=98=E8=AE=A4=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 直井和压裂直井默认显示截面视图 - 多段压裂水平井默认显示顶层视图 - 仅在打开编辑井时应用默认视图 - 切换井型时保留用户当前选择的视图 --- .../nmSubWxs/nmWxWellboreTrajectoryDisplay.h | 3 +++ Src/nmNum/nmSubWxs/nmWxWellEditor.cpp | 1 + .../nmWxWellboreTrajectoryDisplay.cpp | 22 +++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h b/Include/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.h index 8194018..7d5f8aa 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 按当前井型选择编辑井场景的默认视图。 */ + void selectDefaultViewForCurrentWell(); + /** @brief 设置3D视图入口是否可见。 */ void set3DViewVisible(bool bVisible); diff --git a/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp b/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp index d4705a6..03a9929 100644 --- a/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp +++ b/Src/nmNum/nmSubWxs/nmWxWellEditor.cpp @@ -119,6 +119,7 @@ bool nmWxWellEditor::initialize(QString& sError) } m_pTrajectoryDisplay->setCurrentWellboreData(pWell); createController(); + m_pTrajectoryDisplay->selectDefaultViewForCurrentWell(); m_bInitialized = true; m_pPressureFlowPage->setWell(pWell); diff --git a/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp b/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp index e8adc7d..ff5fab3 100644 --- a/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp +++ b/Src/nmNum/nmSubWxs/nmWxWellboreTrajectoryDisplay.cpp @@ -4028,6 +4028,28 @@ void nmWxWellboreTrajectoryDisplay::setCurrentWellboreData(nmDataWellBase* pWell m_pCrossSectionViewWidget->resetViewTransform(); } +void nmWxWellboreTrajectoryDisplay::selectDefaultViewForCurrentWell() +{ + if (m_pDataWell == nullptr || m_pViewButtonGroup == nullptr || + m_pStackedWidget == nullptr) + { + return; + } + + // 多段压裂水平井优先展示平面分段,其余井型优先展示井深截面。 + int nViewId = m_pDataWell->getWellType() == + NM_WELL_MODEL::Horizontal_Fractured_Well ? 0 : 1; + QAbstractButton* pViewButton = m_pViewButtonGroup->button(nViewId); + if (pViewButton == nullptr) + { + return; + } + + // 程序设置选中状态不会触发buttonClicked,复用统一入口同步页面和工具栏。 + pViewButton->setChecked(true); + onViewRadioButtonToggled(nViewId); +} + void nmWxWellboreTrajectoryDisplay::set3DViewVisible(bool bVisible) { if (m_p3DViewRadio == nullptr || m_pStackedWidget == nullptr)