NavisworksTransport/doc/working/2026-08-04-sectionbox-batch-detection-plan.md
tian aa8e9e55c5 docs: 剖面盒导出+批处理自动检测方案评估与实施计划
- 可行性结论:可行(E4 实验验证多实例+加载小模型)
- 架构:主 NW 批处理 + 副 NW 无头检测 worker + HTTP 驱动 + 报告 JSON 回传
- E4 实验新发现:副实例无 .db 跳过数据库连接、HTTP 端口冲突需隔离
- 实施清单:E4 完整链路实验 → 批处理状态机 → 映射表/清理/大模型实测
2026-08-05 10:51:40 +08:00

4.8 KiB
Raw Blame History

剖面盒导出 + 批处理自动检测方案(评估与实施计划)

状态评估完成2026-08-05E4 核心实验已验证,待实施。 跟踪checkbox 标记实施进度。


1. 背景与目标

生产环境大模型(几十条路径 × 每条小时级)无法直接做全模型动画碰撞检测,目前只能做"指定碰撞对象"模式。

目标:非指定碰撞对象模式的任务,通过剖面盒导出缩小模型,在导出的小模型上做动画检测(分钟级),与批处理结合自动化。


2. 可行性结论

可行E4 实验已证明核心前提)。架构 = 主 NW 批处理 + 副 NW 作为"无头检测 worker" + HTTP 驱动 + 报告 JSON 显式回传。


3. 已验证前提(含 E4 实验 2026-08-05

前提 验证结果
剖面盒导出真正剔除盒外对象 代码确认(NwdExportHelperExcludeHiddenItems = true
导出后坐标不变 用户经验确认
多 Navisworks 实例可同时打开 E4 实测:主 NW 运行中 Start-Process Roamer.exe -ArgumentList 模型路径 创建独立第二实例,两实例并行加载不同模型
副实例插件正常加载 E4 实测:坐标系检测/模型加载事件正常触发
之前集成测试 Start-Process 失败根因 恢复弹窗拦截(已被 AutoSave 清理方案解决),非多实例/参数问题
小模型检测快 集成测试验证57 对象秒级)
对象标识 InstanceGuid 大部分为空(用户经验)→ 用树结构索引 PathId

E4 实验新发现

发现 影响 对策
副实例打开的导出模型无 .db 时插件跳过数据库连接(当前代码不自动建库) 检测记录/报告无法落副实例库 副实例无头检测:结果 JSON 回传不依赖 .db或显式指定库路径环境变量
HTTP 端口:两实例都绑 18777 冲突 副实例测试服务不可用 端口隔离:TestAutomationHttpService 端口常量改读环境变量(如 TRANSPORTPLUGIN_TEST_PORT

4. 架构设计(定稿)

主 NW 批处理(非指定碰撞对象模式任务)
 → 1. 路径包围盒 + 膨胀(物体尺寸 + 安全间隙 + 检测容差)
 → 2. 导出局部 NWDExcludeHiddenItems=true+ 导出路径文件XML/JSON
      + 记录盒内对象映射表主模型PathId ↔ 导出模型PathId含显示名/位置)
 → 3. Process.Start 启动副 Roamer.exeUseShellExecute注入 TRANSPORTPLUGIN_TEST_PORT=18778
      打开导出 NWD
 → 4. 主 NW 轮询 http://127.0.0.1:18778ping 就绪)
 → 5. HTTP 驱动副实例import-route-file路径→ run-virtual-collision-test动画参数
 → 6. 副实例报告 JSON 导出(含 PathId/显示名/位置/碰撞统计)→ 主 NW 读取
 → 7. 主 NW 按映射表写入主库 → 关闭副实例 → 清理临时 .db/导出文件 → 下一条

约束(用户经验)

  • 大模型每次打开几分钟 → 禁止单 NW 内切文档,必须独立实例
  • InstanceGuid 不可用 → 树结构索引PathId+ 映射表
  • 报告回传必须显式(副实例 .db 主 NW 不读)

5. 实施清单checkbox 跟踪)

E4 完整链路实验(下一步)

  • E4-1 端口隔离TestAutomationHttpService 端口改读环境变量(默认 18777可覆盖 18778
  • E4-2 副实例无头检测:副实例(无 .db上 import 路径 + 运行动画 + 获取检测结果 JSON
  • E4-3 报告 JSON 导出端点:副实例导出最近检测报告完整 JSON碰撞对象 PathId/名字/位置/统计)
  • E4-4 端到端:脚本/代码模拟批处理项:主 NW 导出 → 启动副实例 → 驱动检测 → 回传 JSON → 主库写入

正式功能

  • F1 批处理状态机ExecuteQueueItemAsync 扩展(非指定碰撞对象模式 → 导出→副实例检测→回传流程)
  • F2 映射表:导出时记录 主PathId ↔ 副PathId 映射,报告写主库
  • F3 清理与恢复:临时 .db/导出文件清理、副实例异常退出检测、批处理失败恢复
  • F4 大模型实测:真实大模型验证收益(小时级 → 分钟级)

6. 相关现有基础

能力 位置
剖面盒导出bbox 模式) SectionBoxExporter + /api/test/export-section-boxT16
路径导入 /api/test/import-route-file
动画碰撞检测(可配参数) /api/test/run-virtual-collision-testframeRate/durationSeconds
检测记录查询 /api/test/detection-record
批处理队列 BatchQueueManager + /api/test/batch-queue-addT14
启动脚本弹窗处理 start-navisworks.ps1AutoSave 清理 + 文件关联)