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); + } } }