Commit Graph

47 Commits

Author SHA1 Message Date
1cc348d271 refactor: NavisworksInstanceManager 独立模块(多实例管理),SectionBoxBatchDetector 委托
- 新增 NavisworksInstanceManager(src/Core/Services/):端口池分配(18778-18797,20 个并行实例)、
  LaunchInstance(环境变量注入+进程定位)、WaitReadyAsync(ping+数据库+进程监控)、
  CloseInstance/CloseAll(优雅退出→强杀→释放端口)
- NavisworksInstanceHandle:实例句柄(端口+进程+HTTP),Dispose 自动关闭并释放端口
- SectionBoxBatchDetector 重构:启动/就绪/关闭委托 InstanceManager,业务逻辑(导出/导入/检测/映射)保留
- 设计:独立模块,批处理只是调用方;将来其他模块(映射/批量并行/其他功能)可复用

验证:F1 重构后正常(28 碰撞 + F2 4/4,实例管理日志生效)
2026-08-05 13:01:51 +08:00
832caaffef feat: F1 剖面盒自动检测完整链路跑通(真实物体)
- SectionBoxBatchDetector:路径剖面盒(复用 SectionClipHelper.CalculatePathClipBox 产品语义)→ 导出局部 NWD → 副实例检测 → 报告回传
- 移动物体跨实例解析:导出剖面盒保留节点树结构,去掉根后主/副层级链一致,按 ancestorChain 匹配(用户验证结论)
- 副实例临时库:TRANSPORTPLUGIN_TEST_DB_PATH 环境变量显式指定,createIfMissing 时强制创建(解决检测记录无法落库→报告失败)
- 副实例进程定位:cmd start detach 后按新 Roamer PID 定位并关闭
- batch-queue-add:真实物体写入 ModelItemReferences(MovingObject),F1 从引用读移动物体名/PathId/层级链
- batch-queue-process:改后台执行立即返回(模态进度条不阻塞 HTTP),调用方轮询数据库状态
- 集成测试标准场景:自动测试_Ground 更新(用户修改)+ Ground 真实物体改 Chair Lounge Couch Double

验证:F1 Ground + Chair Lounge Couch Double,碰撞 28/28,链路完整
2026-08-05 12:11:37 +08:00
d04c37a7a5 vendor Navisworks 2026 API DLL into repo, use relative references
- Add libs/navisworks-2026/ with 6 API DLLs + 3 XML doc files copied
  from local Navisworks Manage 2026 install (Api/Timeliner/Clash/
  Controls/ComApi/Interop.ComApi)
- Change TransportPlugin.csproj and UnitTests csproj HintPaths from
  absolute Program Files paths to relative libs paths (build no longer
  depends on the Navisworks installation directory)
- Keep Private=False semantics for plugin (NW loads its own DLLs at
  runtime) and Private=True for unit tests
- Record the libs reference rule in AGENTS.md to prevent regression

Verified: compile successful, 255/255 unit tests pass
2026-08-04 11:57:20 +08:00
43df07c84d feat: 集成测试标准路径自动导入机制
- 新增 resources/auto-test-routes.xml 标准测试路径资源(自动测试_Ground/Hoisting/Rail + 测试基准),缺失时由插件自动导入,无需人工维护数据库
- TestAutomationHttpService 新增 EnsureAutoTestRoutesImported(),挂接在 ResolveVirtualCollisionRoute 与 SelectDefaultRoutePayload 找不到路径时;资源定位用 Assembly.GetExecutingAssembly().Location
- csproj 添加 auto-test-routes.xml 复制配置(构建→部署目录 resources/)
- 标准 Hoisting 路径改为 4 点含水平平移段,修复 2 点纯垂直路径触发'平面路径第 0 帧未能生成完整姿态'的动画生成失败
- 集成测试套件 4/4 通过(Ground/Hoisting/Rail 碰撞 + AutoPath)
2026-08-02 21:02:15 +08:00
9012461d59 feat: Ribbon 多语言支持,新增 en-US/zh-CN 本地化 XAML 2026-07-12 13:05:39 +08:00
4f9206da2a feat: 过弯检测工具(纯解析几何公式) 2026-07-08 12:55:47 +08:00
f86e8c8bf4 fix: 贴合地面后绕垂直轴搜索最小截面 yaw,对齐路径方向
贴地旋转已固定俯仰/翻滚,只剩绕宿主 Up 的 yaw 自由度。
对 CAD 姿态天然歪斜的物体,假设 local +X 是长轴会失败,
改为搜索 [0,360) 使物体在路径方向的截面投影面积最小,
与自动调整同目标但单自由度搜索更稳定。

- 新增 AlignToGroundMinCrossSectionYawSearcher(粗搜5°+细搜1°)
- 复用 ObjectPassageProjectionOptimizer.ProjectExtent 的 AABB 投影公式
- 新增 7 个单测覆盖平地/倾斜/CAD歪斜/垂直退化/立方体
- 经多物体实测验证:Chair Lounge Couch / Chair Sitting Square 均正确对齐
2026-06-23 23:09:59 +08:00
c7a1eeebb8 feat: add FaceInferToolPlugin - single-click face normal inference tool
- New FaceInferToolPlugin: pixel-neighborhood method with {2,5,10}px offsets
- New FaceInferResult data class
- Test button in SystemManagement page
- Cursor: MarkupAutoPoly (arrow + dashed box)
- Uses project-standard tools: FindNamedParentContainer, viewpoint.Position
- Design doc at doc/design/2026/face-infer-tool-design.md
2026-06-02 23:11:11 +08:00
56d18c696c phase 2b: add AliasTreePlugin DockPanePlugin entry + wiring
- AliasTreePlugin.cs: DockPanePlugin with ElementHost wrapper
- XAML: wire Expanded/Selected event handlers via TreeViewItem
- Both projects compile, plugin deployed to Navisworks
2026-05-31 12:49:50 +08:00
f3392ddbf6 phase 2: VM + TreeView skeleton for alias tree
- AliasNodeViewModel: INotifyPropertyChanged, alias/display/editing state
- AliasTreeIcons.xaml: vector icon geometry + toolbar/button styles
- AliasTreeControl.xaml: TreeView with icon toolbar, status bar, context menu
- AliasTreeControl.xaml.cs: tree building, lazy loading, bidir selection sync,
  inline editing, alias highlight (via ModelHighlightHelper)
- Both projects compile successfully
2026-05-31 12:49:14 +08:00
3f985aa235 phase 1: data layer for alias tree
- AliasNodeIdentity: stable composite node identifier (path + sibling index)
- AliasDataStore: CRUD operations on SQLite AliasMap table
- PathDatabase: add AliasMap table creation + index
- Unit tests: 30 tests for identity parsing/equality, store CRUD/batch/import
- Both projects compile successfully
2026-05-31 12:46:33 +08:00
7187bcf622 自动最优朝向: 黑盒实测模式
- 新增 ObjectPassageProjectionOptimizer(SO(3)粗搜索+Nelder-Mead)
- EditRotationWindow 加入"自动调整"按钮
- AnimationControlViewModel 实现黑盒实测评估(临时摆位→读BoundingBox→恢复)
- 设计文档和实现计划
2026-05-27 12:24:01 +08:00
28d0708858 Lock selection clip box after activation 2026-04-15 16:02:12 +08:00
fdb857af17 Refactor auto path planning coordinate semantics 2026-04-13 10:31:14 +08:00
b849bd9aed Add Navisworks automation integration tests 2026-04-13 02:33:29 +08:00
970d3465f4 Add a custom ribbon tab for logistics tools 2026-04-11 23:17:21 +08:00
18b530ef5f Unify WPF numeric textbox editing behavior 2026-04-11 09:04:03 +08:00
2e0b26e032 Refine rail assembly workflow and viewpoint strategies 2026-04-01 10:47:34 +08:00
9093374399 Use actual hoisting pose baseline for real objects 2026-03-29 23:36:43 +08:00
6214cd4397 Improve clipboard copy utilities and dialogs 2026-03-28 22:55:45 +08:00
3a5693a453 Add rail mount placement controls and persistence 2026-03-26 01:01:01 +08:00
921dc07856 Fix ground real-object forward axis and compensation 2026-03-25 17:19:21 +08:00
aabf263f0d Fix host rotation adapter split for real and virtual objects 2026-03-25 11:18:03 +08:00
029c7e37ad Checkpoint current pose and path state 2026-03-25 01:41:15 +08:00
138eb43a67 Unify real-object rail pose interpretation 2026-03-25 00:11:07 +08:00
290df34dec Interpret fragment up for real object pose 2026-03-24 21:04:24 +08:00
8d10f959b2 Add fragment up detection and real object pose probes 2026-03-24 19:06:50 +08:00
d52b1aef08 Checkpoint animation rotation refactor state 2026-03-23 21:00:02 +08:00
1cf4fe5967 Align terminal rail normals and object space rendering 2026-03-23 12:25:00 +08:00
93ad55c725 Refine assembly installation workflow UI 2026-03-22 23:58:11 +08:00
70aaff10bf Add assembly end-face guided optical axis 2026-03-22 19:45:09 +08:00
8f55b5e9a1 Fix YUp hoisting path rendering and finish sync 2026-03-22 12:21:25 +08:00
042b9a2804 Refine canonical pose flow and handoff notes 2026-03-22 00:00:16 +08:00
7ccce8cf5a Stabilize rail collision pose recovery and canonical tracking 2026-03-21 21:58:11 +08:00
3fd184934b Establish canonical coordinate framework with tests 2026-03-21 06:10:34 +08:00
a55ef42f71 Add linear assembly reference path and rod alignment 2026-03-19 22:00:04 +08:00
0c83c73917 feat: add linear assembly rail path workflow 2026-03-19 00:18:24 +08:00
f596935c76 优化剖面盒导,提高性能,解决漏算的问题 2026-03-12 09:40:14 +08:00
07b30a4fb5 将自定义类别配置文件整合到系统配置文件中;修复配置事件重复触发问题。 2026-03-09 14:04:25 +08:00
0fbff5f114 给版本号增加Build Version;实现系统信息的实时获取 2026-03-09 12:41:44 +08:00
edcbd0802b 初步实现多层吊装路径 2026-02-24 03:57:33 +08:00
ae845bc571 检查并修复弹出窗口、对话框、消息框,未设置owner的情况 2026-02-23 00:25:17 +08:00
3f0b42770d 实现了路径的剖面盒开关 2026-02-19 22:07:51 +08:00
f9df83ba5b 实现自定义类别功能 2026-02-19 14:46:34 +08:00
a304191b13 碰撞报告自动对碰撞点截图;纠正插件改名造成的路径错误。 2026-02-17 10:21:35 +08:00
57751e85fa 实现完整的时间标签功能 2026-02-16 19:46:38 +08:00
2fb883ae18 将插件和输出名字中的navisworks去掉 2026-02-16 11:22:03 +08:00