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