Commit Graph

241 Commits

Author SHA1 Message Date
44214baa00 feat: 集成测试补 T05/T06 + 动画加速与多项基础设施修复
测试新增:
- T05 Free 自由路径(FreePathAutomationTests:完整动画 + 逐帧位置=路径点)
- T06 碰撞报告内容断言(CollisionReportAssertions 接入虚拟/真实物体测试)

服务端增强:
- list-model-items 端点(枚举物体:DisplayName/PathId/包围盒中心/祖先链)
- run-virtual-collision-test 支持 frameRate/durationSeconds(测试动画加速:15fps/5s)
- 测试执行串行锁(SemaphoreSlim,防客户端超时后任务占用 UI 线程并发污染)
- 标准路径清单/XML 增加自动测试_Free

Bug 修复:
- AnimationControlViewModel.InvalidateLastGeneratedReport(跨测试碰撞报告残留)
- 真实物体身份校验 ReferenceEquals→InstanceGuid(NW ModelItem 实例不保证同引用)
- 真实物体动态解析(ModelPath 跨会话不稳定,禁止硬编码 PathId)
- PathImportValidity 测试点 Id 随机化(PathPoints.Id 全局主键,p1/p2 固定会冲突)
- start-navisworks.ps1:启动前清理 AutoSave(避免恢复弹窗拦截)、文件关联打开模型、dismiss 兜底、启动 15s→4.4s

验证:集成测试 13/13 通过,完整集 6min→59.6s(动画 15fps/5s)
2026-08-04 18:13:26 +08:00
8f477c0e1c feat: 集成测试新增动画逐帧状态验证(P0 T04)
- 服务端新增 probe-animation-frames 端点:生成动画后 SeekToProgress 到多个进度点,返回物体跟踪位置/yaw
- 新增 AnimationFrameProbeAutomationTests:
  - Ground:起点/终点 XZ 匹配路径点、高度恒定(平面链)、中间帧在起终点之间
  - Hoisting:吊装剖面(起吊地面→悬挂升高→下降落地)+ 水平平移
- 集成测试 11/11 通过(P0 高风险区全部完成:真实物体 + 逐帧状态)
2026-08-04 17:11:57 +08:00
b5cfcbf8ac feat: 集成测试新增真实物体动画验证(P0 T01-T03)
- 服务端 run-virtual-collision-test 支持 useVirtualObject=false + animatedObjectPath(ModelPath 定位,解决 DisplayName 重名)
- ResolveAnimatedObjectFromQuery 支持按 CreatePathId 的 PathId 精确匹配
- 修复 ModelItem 身份校验:ReferenceEquals 对 NW API 同一逻辑对象不同实例不可靠,改用 InstanceGuid 比较
- 新增 RealObjectAnimationAutomationTests:Ground/Hoisting/Rail 真实物体动画完整流程
  (42" Diameter=0/0/660/0,25" x 25"=0/0/769/0)
- 集成测试 9/9 通过(3 虚拟碰撞 + 1 autoPath + 2 导入 + 3 真实物体)
2026-08-04 16:52:37 +08:00
454590ae26 docs: 新增集成测试覆盖补充计划跟踪文档
- 记录现有集成测试覆盖(6 个测试)与核心功能缺口(15 项待补,分 P0/P1/P2 优先级)
- P0 高风险区:真实物体动画(Ground/Hoisting/Rail)、动画逐帧状态验证
- P1 功能面:Free 路径、碰撞内容验证、自动路径障碍绕行/多策略、网格诊断、持久化
- P2 需新增端点:路径编辑/导出、播放控制、批量任务、路径分析
- 附带测试服务端点支撑能力清单与完成记录表(checkbox 跟踪)
2026-08-04 16:42:05 +08:00
53ae232ebc refactor: 起点放置按两步架构分离(调整物体统一 + 路径对齐各自处理)
按架构原则重构 MoveObjectToPathStart 和 PreservingInitialPose:
- 第二步:路径起点位置对齐(各路径类型各自处理,不含 lift)
- 第一步:调整物体的上下偏移(统一应用,路径无关,无分支)
- Rail 因流程提前返回(三维姿态就地应用),lift 在其分支内应用
- 更新设计文档记录架构原则
257 单测全过
2026-08-01 12:56:11 +08:00
0fa9562f4b fix: 自由路径'调整物体'支持角度修正和上下偏移
- MoveObjectToPathStart Free 分支:应用 _objectRotationCorrection
  (围绕物体中心旋转)后平移到起点;skipCadRestore 时修正已由调用方施加,仅平移
- 泛化 ApplyGroundPathObjectLiftOffset 支持 Free(原本仅 Ground)
- '调整物体'窗口对 Free 启用上下偏移输入
- 动画帧循环 Free 分支应用上下偏移
257 单测全过
2026-08-01 12:15:57 +08:00
0390c60c36 docs: 记录'调整物体'窗口姿态调整问题待办(明日处理)
起点姿态、动画已正确。记录调整物体窗口的角度/姿态调整功能
存在的问题作为明日待办,含排查方向。
2026-07-31 17:10:29 +08:00
4b6c3852cc docs: MSI安装后deploy-plugin.bat权限冲突解决方案(Q7)
记录 MSI 安装的管理员文件阻塞 dev 部署、需提权 UAC 的问题。
根因:MSI 创建的文件对 BUILTIN\Users 只读,卸载不彻底会残留共享 DLL。
解决:一次性管理员授予目标目录及文件 Users FullControl 并解除继承保护。
同时 deploy-plugin.bat 部署成功后设置 Users 写权限,后续免 UAC。
2026-07-31 16:34:52 +08:00
4f0723f56f fix: 修正过弯检测测试期望值 + FreePathTests 加入csproj
过弯检测 CornerTurnCheckHelper 代码正确(maxLength 均为正),
但 6 个测试期望值与公式不符(7e71387 改算法时测试未同步)。
已按公式修正测试:补充 maxLength 断言,调整长度阈值。
另修复 FreePathTests 一处断言(斜路径 forward/up 分量)。
并将 FreePathTests.cs 显式加入 UnitTests.csproj(此前未编译运行)
2026-07-31 16:10:32 +08:00
002618f371 feat: 自由路径(Free Path)一级路径类型
- PathType 新增 Free=3,显示'自由'
- 动画:统一包围盒中心对齐,方案1姿态(forward=切线,up=世界up正交化)
  复用 CanonicalRailPoseBuilder,新增 TryCreateFreePathRotationForFrame/AtStart
- 渲染:通行空间垂直偏移0(路径点即物体中心)
- 路径管理器:StartCreatingNewRoute/FinishEditing 支持 Free
- UI:PathEditingView 新增'自由'按钮 + NewFreePathCommand
- 数据库:枚举存 int 无需 schema 变更
- 迁移:加载时 IsTwoPointVertical 吊装路径 → Free
- 单测:新增 FreePathTests(6个全通过)

注:CornerTurnCheckHelperTests 6个失败为分支起点已存在的 pre-existing 问题,与本次无关
2026-07-31 16:02:25 +08:00
469f7efe2f docs: 自由路径 - 确认决策点并标记步骤1实施中 2026-07-31 15:52:35 +08:00
8d7c2eacec docs: 自由路径设计方案(含实施进度跟踪) 2026-07-31 15:52:27 +08:00
3aec23139f docs: 过弯检测精度说明 - 工程对比数据修正为1-50mm/9个数量级 2026-07-31 15:52:25 +08:00
745f4c50e9 docs: 过弯检测精度说明 - 补充转角示意图和PDF版本 2026-07-27 23:09:13 +08:00
423360037f docs: 过弯检测算法精度说明文档(含算法原理、精度分析、验证方法) 2026-07-27 23:08:08 +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
fddefde1ed docs: 更新别名树实施方案 — 新增显示原则 + 修正标识/定位/联动描述
- 新增第7节「别名树显示原则」:二条件OR逻辑、深度限制、别名特殊规则、按需加载生命周期
- 第4节:标识改为 CreatePathId格式,定位改为 Models.ResolvePathId
- 第10节:JSON导出格式改为 key 字段
- 第11节:双向联动改为 ModelItem.Parent链 + ExpandAndSelect
- 清理 CleanupOnDemandNodes 逻辑文档化
2026-06-01 09:10:47 +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
e224e332a3 更新版本号至 0.15.2,更新 CHANGELOG 和 todo_features
- VERSION.md: 0.15.0 → 0.15.2
- CHANGELOG.md: 新增 [0.15.2] 条目(自动最优朝向、Y 轴旋转按钮、上下偏移、
  性能优化、布局优化)
- todo_features.md: 新增 [2026/5/27] 条目,4 项已完成
2026-05-27 15:42:28 +08:00
7187bcf622 自动最优朝向: 黑盒实测模式
- 新增 ObjectPassageProjectionOptimizer(SO(3)粗搜索+Nelder-Mead)
- EditRotationWindow 加入"自动调整"按钮
- AnimationControlViewModel 实现黑盒实测评估(临时摆位→读BoundingBox→恢复)
- 设计文档和实现计划
2026-05-27 12:24:01 +08:00
19a38e5446 0.15.1: 修复角度输入崩溃、Y轴修正动画丢失、数据库连接缺失三个bug
- 修复编辑角度窗口空输入反复确认崩溃 (UpdateSourceTrigger LostFocus→Explicit)
- 修复Y轴角度修正在动画播放时双重叠加导致丢失 (删除 ApplyPlanarTrackedPose 中重复的 ResolvePlanarHostUpCorrectionRadians)
- 修复先开文档后加载插件时路径数据库未连接 (InitializePathPlanningManager 中加入数据库连接)
- 重构: TryConnectPathDatabase 辅助方法; TryUpdateNumberTextBox 拆分验证逻辑
- 更新 AGENTS.md 精简版; 更新 CHANGELOG.md 0.15.1; 更新 todo_features.md 5/18 条目
2026-05-26 21:02:48 +08:00
1e8916b828 补充剖面盒恢复修复报告 2026-05-16 15:22:17 +08:00
47af2443cd 数据库schema兼容+剖面盒导出修复+代码重构
- 数据库:SafeCreateIndex/EnsureColumnExists 防御旧schema;去掉无用PRAGMA user_version;去掉重复throw;清理注释编号
- 剖面盒导出:修复NWF多Model无统一根节点时空白子树泄露(RootItem级隐藏)
- 崩溃修复:去掉LayerManagementViewModel中两处Task.Run,消除COM跨线程STA违规
- 重构:SectionBoxExporter新增ExportSectionBoxFromActiveView统一业务入口;LayerManagementViewModel删ExportSectionBoxToNwdAsync;删死代码ExportToJson(Document)/ShowSaveFileDialog
- deploy-plugin.bat: powershell→pwsh;AGENTS.md补充编译部署调用说明
2026-05-16 14:59:56 +08:00
0a318f4dca Update completed todo items 2026-04-26 19:13:40 +08:00
fdb857af17 Refactor auto path planning coordinate semantics 2026-04-13 10:31:14 +08:00
144ee4e6b2 refine hoisting path fixes 2026-04-09 23:09:56 +08:00
405f721811 Ground real-object incremental path updates 2026-04-08 23:06:42 +08:00
042f30bf87 地面路径重构失败,留下一些教训 2026-04-06 22:39:02 +08:00
8a7563a4fe Clarify ground tracked-point semantics 2026-04-06 08:55:53 +08:00
2e0b26e032 Refine rail assembly workflow and viewpoint strategies 2026-04-01 10:47:34 +08:00
6214cd4397 Improve clipboard copy utilities and dialogs 2026-03-28 22:55:45 +08:00
9f1924a797 Add real object pose source migration draft 2026-03-26 13:46:51 +08:00
3a5693a453 Add rail mount placement controls and persistence 2026-03-26 01:01:01 +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
d52b1aef08 Checkpoint animation rotation refactor state 2026-03-23 21:00:02 +08:00
e9128282b5 Fix rail rotation correction semantics 2026-03-23 00:11:49 +08:00
b1d4170334 Fix animation end alignment and YUp viewpoint focus 2026-03-22 14:45:50 +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
c53db7a6fd Finalize canonical rail coordinate integration 2026-03-21 19:19:13 +08:00
3fd184934b Establish canonical coordinate framework with tests 2026-03-21 06:10:34 +08:00
5e8c50e043 Stabilize rail 3D animation transforms 2026-03-20 12:50:08 +08:00
5847ba9ab3 Fix rail assembly pose and animation flow 2026-03-20 11:13:43 +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
3b801c6bd4 给“导出剖面盒”增加导出nwd文件;重构了可见性的保存和恢复 2026-03-11 19:03:43 +08:00