From e5f710407cce0298738fd8c1a82ad213dfb666d9 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Sat, 16 May 2026 15:21:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=90=8E=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=81=A2=E5=A4=8D=E5=89=96=E9=9D=A2=E7=9B=92=EF=BC=88Naviswork?= =?UTF-8?q?s=20ExportToNwd=20=E5=86=85=E9=83=A8=E5=85=B3=E9=97=AD=E5=89=96?= =?UTF-8?q?=E5=88=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SectionClipHelper 新增 RestoreClipBox 公开方法 - VisibilityHelper.ExecuteWithPrecomputedHiddenItems 导出前保存剖面盒状态,导出后恢复 --- src/Utils/SectionClipHelper.cs | 8 ++++++++ src/Utils/VisibilityHelper.cs | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Utils/SectionClipHelper.cs b/src/Utils/SectionClipHelper.cs index 1bd7757..13daff8 100644 --- a/src/Utils/SectionClipHelper.cs +++ b/src/Utils/SectionClipHelper.cs @@ -246,6 +246,14 @@ namespace NavisworksTransport.Utils } } + /// + /// 恢复剖面盒(用于被 Navisworks ExportToNwd 内部关闭后重新启用) + /// + public static void RestoreClipBox(BoundingBox3D box) + { + ApplyClipBox(box); + } + /// /// 获取当前剖面盒 /// diff --git a/src/Utils/VisibilityHelper.cs b/src/Utils/VisibilityHelper.cs index 441e4ae..e35434f 100644 --- a/src/Utils/VisibilityHelper.cs +++ b/src/Utils/VisibilityHelper.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Linq; using Autodesk.Navisworks.Api; +using NavisworksTransport.Utils; using NavisApplication = Autodesk.Navisworks.Api.Application; namespace NavisworksTransport @@ -261,9 +262,14 @@ namespace NavisworksTransport return default(T); } - // 保存当前状态 + // 保存可见性状态 var savedState = SaveVisibilityStateInternal(document); + // 保存剖面盒状态(Navisworks ExportToNwd 会内部关闭剖分) + bool clipWasEnabled = SectionClipHelper.IsClipBoxEnabled; + BoundingBox3D savedClipBox = default; + bool hasClipBox = SectionClipHelper.TryGetCurrentClipBox(out savedClipBox); + try { // 1. 全部显示 @@ -281,8 +287,14 @@ namespace NavisworksTransport } finally { - // 4. 恢复状态 + // 4. 恢复可见性状态 RestoreVisibilityStateInternal(document, savedState); + + // 5. 恢复剖面盒(Navisworks 导出时会关闭) + if (clipWasEnabled && !SectionClipHelper.IsClipBoxEnabled && hasClipBox) + { + SectionClipHelper.RestoreClipBox(savedClipBox); + } } }