|
|
5bdfa8281d
|
docs: 强化 AGENTS.md 单位原则——模型单位≠米(取决于文档单位),补充测试警示
- 新增三层单位语义表(模型单位/米/配置项)
- 强调模型单位取决于当前 NW 文档单位(如 Floor2 为英尺,1米=3.281模型单位),禁止假设等于米
- 明确 TotalLength 等长度属性返回米,禁止二次换算
- 新增 §6.4 测试警示:集成测试断言长度必须按文档单位因子换算,涉及单位换算的断言不放单测
- 排查指引新增'长度/尺寸偏差约 3.28 倍'条目(源于本次集成测试单位踩坑)
|
2026-08-02 21:22:31 +08:00 |
|
|
|
c9c29c7170
|
refactor: 依赖 Navisworks 的路径导入验证从单测迁移至集成测试
- 删除 UnitTests/Core/PathPersistenceTests.cs:单测进程无法初始化 Navisworks API,
Rail/Hoisting 路径导入必经的长度计算(Point3D 访问)必然失败,测试'假通过'且每次产生 ERROR 日志噪音
- 新增集成测试 PathImportValidityAutomationTests:验证完整流程
JSON/XML 导入 → Rail 属性映射 → 长度计算(含文档单位换算)→ 切换路径 → 完整动画/碰撞流程
- TestAutomationHttpService 新增 /api/test/import-route-file 端点(overwrite 语义保证可重复执行)
- NavisworksTestAutomationClient 新增 ImportRouteFileAsync/SelectRouteAsync/routeName 重载
- 修正 auto-test-routes.xml Rail 属性为有效枚举值(UnderRail/RailCenterLine,与原路径一致)
验证:单测 255/255 且 API must be initialized 错误日志归零;集成测试 6/6 通过
|
2026-08-02 21:19:23 +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 |
|
|
|
488e69d27a
|
fix: 脚本统一用 pwsh 替代 powershell,MSTest adapter 动态查找
- start-navisworks.bat / run-ground-virtual-collision-test.bat:
powershell → pwsh(避免依赖 shim/PS5.1,UTF-8 中文输出更可靠)
- deploy-plugin.bat 提权兜底:PowerShell → pwsh(内外一致)
- run-unit-tests.bat:MSTest adapter 路径硬编码 3.0.4 → 通配符动态查找
(包升级后不再失效)
|
2026-08-02 20:41:18 +08:00 |
|
|
|
8ee06586af
|
docs: Shell规范更新——rg/fd等读取命令用bash直接执行
历史:早期默认shell有UTF-8乱码才统一用pwsh;现已配置Git Bash
(shellPath),原生支持UTF-8。更新规范:
- rg/fd/读日志等搜索读取 → bash 直接执行
- .bat 部署/编译/测试流水线 → 仍走 pwsh
|
2026-08-02 20:33:38 +08:00 |
|
|
|
81ddf5997f
|
refactor: 调整物体统一接口,任何调整后自动触发路径对齐
新增统一接口:
- ApplyObjectAdjustment(correction, lift):只设置调整结果(第一步),
内部自动调用 ApplyObjectStartPlacementRequest 触发路径对齐(第二步)
- ApplyObjectTranslationOnly(lift):平移模式(保持姿态)
所有调整功能统一走此接口:
- 对话框确认(角度输入/自动调整/平移)
- 贴合地面(ApplyAlignToGround)
不再各自手工定位,路径对齐统一由 ApplyObjectStartPlacementRequest 处理。
257 单测全过
|
2026-08-01 13:31:54 +08:00 |
|
|
|
d1ab271578
|
fix: 贴合地面改为走第二步路径对齐定位,不再手工底边贴地
此前贴合地面自行手工定位"底边贴地"(Ground 语义),绕过了路径对齐,
Free 路径下物体中心未对齐路径点。改为:
- 第一步:计算姿态修正 + 上下偏移(路径无关)
- 第二步:ApplyObjectStartPlacementRequest 按路径语义定位起点
(Ground → 底面贴地+lift;Free → 中心在路径点+lift)
移除手工原地旋转和底边贴地平移。
257 单测全过
|
2026-08-01 13:26:11 +08:00 |
|
|
|
775c7b6fad
|
fix: 贴合地面 yaw 搜索移除路径类型 gate
贴合地面后绕宿主Up搜索最小截面对齐路径方向,与路径类型无关。
移除 Ground/Hoisting/Free 条件,只要路径有方向(≥2点)就执行。
257 单测全过
|
2026-08-01 13:12:28 +08:00 |
|
|
|
a4b7b679f0
|
fix: 贴合地面 Free 路径补上路径方向 yaw 对齐
ApplyAlignToGround 的路径 yaw 搜索条件只含 Ground/Hoisting,
Free 被排除导致贴合地面后物体面朝下但未对齐路径方向。
加入 Free,贴合地面后同样搜索最小截面对齐路径。
257 单测全过
|
2026-08-01 13:09:45 +08:00 |
|
|
|
53ae232ebc
|
refactor: 起点放置按两步架构分离(调整物体统一 + 路径对齐各自处理)
按架构原则重构 MoveObjectToPathStart 和 PreservingInitialPose:
- 第二步:路径起点位置对齐(各路径类型各自处理,不含 lift)
- 第一步:调整物体的上下偏移(统一应用,路径无关,无分支)
- Rail 因流程提前返回(三维姿态就地应用),lift 在其分支内应用
- 更新设计文档记录架构原则
257 单测全过
|
2026-08-01 12:56:11 +08:00 |
|
|
|
fc8ff51ae1
|
fix: 平移功能 Free 路径物体中心对齐起点
MoveObjectToPathStartPreservingInitialPose 无 Free 分支,Free 落入
else(Ground)逻辑加了半高偏移,导致平移后物体中心不在起点。
新增 Free 分支:路径点即物体几何中心,仅叠加上下偏移。
257 单测全过
|
2026-08-01 12:48:32 +08:00 |
|
|
|
7fd57832e5
|
refactor: 上下偏移改为路径类型无关,统一沿宿主up应用
- ApplyGroundPathObjectLiftOffset 移除 Ground/Free gate,所有路径类型生效
- 起点:Free/Hoisting/Rail/Ground 统一在解析中心后应用 lift
- 帧循环:空中路径分支结束后统一应用 lift(Hoisting/Rail/Free)
- '调整物体'窗口对所有路径类型启用上下偏移,更新提示文字
257 单测全过
|
2026-08-01 12:38:01 +08:00 |
|
|
|
c2f0bfbece
|
fix: 自由路径上下偏移在位置解析统一应用
重构后真实物体走增量链、虚拟物体走平面链,都未应用 lift(仅兜底分支应用)。
改为在 Free 位置解析分支统一应用 ApplyGroundPathObjectLiftOffset,
各旋转/平移路径都使用带 lift 的起点位置。移除兜底分支重复应用。
257 单测全过
|
2026-08-01 12:35:48 +08:00 |
|
|
|
8ae28463b7
|
refactor: 分离虚拟物体平面姿态的路径对齐与角度修正
将两件事分开,修正始终生效、与路径几何无关:
- 新增 TryResolvePlanarVirtualObjectRotation:先尝试路径对齐+修正,
纯垂直路径(无水平方向)时无法对齐则仅把角度修正叠加到当前姿态
- 起点和帧两处虚拟物体平面姿态都改用它
- 修复:虚拟物体在纯垂直路径上角度修正被丢弃的问题
257 单测全过
|
2026-08-01 12:31:53 +08:00 |
|
|
|
2cce2f77c5
|
fix: 自由路径XYZ角度调整复用现成平面增量旋转链
此前自定义 Free 分支用 ApplyRotationCorrectionInPlace 应用角度修正,
旋转轴错误。改为复用现成方法:
- shouldUsePlanarPureIncrementStart 加入 Free → 真实物体走
TryApplyPlanarRealObjectStartIncrementalTransform(MoveItemCombinedAxisRotationAndTranslation)
- TryApplyPlanarRealObjectStartIncrementalTransform guard 接受 Free
- 平面姿态分支移除 Free 排除 → 虚拟物体走 TryCreatePlanarPathRotationAtStart
- 自定义 Free 分支降为兜底(仅纯垂直等失败场景保持姿态纯平移)
257 单测全过
|
2026-08-01 12:23:03 +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 |
|
|
|
bd7deea0e5
|
fix: 自由路径移动到起点时排除平面旋转分支,保持原始姿态
根因:MoveObjectToPathStart 中 'PathType != Rail && TryCreatePlanarPathRotationAtStart'
分支会捕获 Free(Free != Rail),应用基于路径方向(含与地面的夹角)的
平面旋转,导致物体姿态被修改。已将 Free 从该分支排除,使 Free 走
纯平移分支(ApplyTrackedTranslationOnly),保持物体原始姿态。
257 单测全过。
|
2026-07-31 17:05:08 +08:00 |
|
|
|
d3535fc5a0
|
fix: 自由路径保持物体原始姿态,起点不做自动旋转调整
真实物体(YUp)的自由路径自动对齐路径方向的旋转在宿主/几何姿态
解析上容易出错(对齐了错误前向、侧滚90°)。按用户要求,自由路径
改为保持物体原始姿态:
- MoveObjectToPathStart:自由路径纯平移(ApplyTrackedTranslationOnly),
不应用任何自动旋转
- ShouldPreservePathRotationForFrames:对 Free 始终返回 true,帧锁定
起点姿态,物体沿路径平移而保持朝向
- 移除废弃的 TryCreateFreePathRotationForFrame/AtStart(平面自动旋转)
257 单测全过。
|
2026-07-31 17:01:03 +08:00 |
|
|
|
ead8a35372
|
refactor: 部署脚本先普通权限部署,失败才提权,避免无谓UAC
deploy-plugin.bat 原为:非管理员直接 Start-Process RunAs 提权弹UAC。
但文件可写且 Roamer 可被当前用户关闭时根本不需要管理员。
重构:抽取部署主体到 deploy-body.ps1(关Roamer+等解锁+复制+校验+设写权限)。
deploy-plugin.bat 先以当前用户运行 deploy-body.ps1,成功则免UAC;
失败(如文件被管理员所有)才提权重试。
bat 用纯ASCII注释避免中文编码乱码问题。
|
2026-07-31 16:52:48 +08:00 |
|
|
|
84f67dbd79
|
fix: 自由路径姿态改为平面旋转(只绕垂直轴yaw,不绕前进轴滚动)
用户反馈:自由路径动画起点物体沿前进轴旋转90°(侧滚),
期望像地面路径一样只转向前进方向、仅绕垂直轴旋转。
根因:TryCreateFreePathRotationForFrame/AtStart 用了
CanonicalRailPoseBuilder(完整三维姿态,forward=3D切线),
会绕前进轴滚动。改为 CanonicalPlanarPoseBuilder
(forward=切线水平投影,up=世界up,只转yaw)。
撤销此前 ShouldPreservePathRotationForFrames 让 Free 保留姿态的改动。
同步更新 FreePathTests 断言(斜路径投影水平、纯垂直无水平方向返回false)。
257 单测全过。
|
2026-07-31 16:50:35 +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 |
|
|
|
20d66e9988
|
fix: 自由路径取点改用 ForceReinitializeToolPlugin 而非 StartClickTool
StartClickTool 会把 PathEditState 设为 AddingPoints,导致点击走 SetPreviewPoint
分支(白色半透明临时预览点,不保存)。改为与地面路径一致:用
ForceReinitializeToolPlugin 保持 Creating 状态,点击走 AddPathPointIn3D
正常保存路径点并渲染连线。
|
2026-07-31 16:27:15 +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 |
|
|
|
c3731316d4
|
fix: 恢复状态栏对齐,仅缩减帮助按钮右侧空间
|
2026-07-16 11:16:36 +08:00 |
|
|
|
a1bc23d1dc
|
chore: 状态栏右侧边距和padding继续缩减
|
2026-07-16 11:12:18 +08:00 |
|
|
|
a782e29dea
|
chore: 状态栏右侧边距减半
|
2026-07-16 11:11:24 +08:00 |
|
|
|
2fe3b495e7
|
fix: 帮助按钮前竖线改为 TextBlock | 风格,去掉中间列右边距
|
2026-07-16 11:09:56 +08:00 |
|
|
|
6d2778047c
|
fix: 竖线分隔改用 Rectangle 替代 Separator
|
2026-07-16 11:07:10 +08:00 |
|
|
|
b2481ffa5b
|
chore: 状态栏帮助按钮前加竖线分隔
|
2026-07-16 11:05:27 +08:00 |
|
|
|
cd615badb9
|
docs: 帮助窗口补充批处理任务页签说明
|
2026-07-16 11:00:24 +08:00 |
|
|
|
d7b5cf38f1
|
fix: 系统管理的实验特性区保持原名,不改高级
|
2026-07-16 10:56:35 +08:00 |
|
|
|
bbd58cdff0
|
chore: 关于按钮移至帮助窗口内,关闭按钮左侧
|
2026-07-16 10:43:16 +08:00 |
|
|
|
ce4b2a0c06
|
chore: 状态栏左侧空白缩小,显示更多信息
|
2026-07-16 10:38:09 +08:00 |
|
|
|
b179adb2a0
|
chore: 实验特性区改名为高级,移除emoji前缀
|
2026-07-16 10:34:11 +08:00 |
|
|
|
80bd7b7c65
|
chore: 预计算高亮按钮移至折叠的实验特性区
|
2026-07-16 10:30:29 +08:00 |
|
|
|
b00f0093ab
|
fix: 坐标系检测按钮移至快速取面的空位
|
2026-07-16 10:25:41 +08:00 |
|
|
|
5e0af1def7
|
chore: 功能测试区更名为实验特性,移除快速取面按钮
|
2026-07-16 10:22:30 +08:00 |
|
|
|
c35138ef25
|
feat: 坐标系检测按钮加入 Fragment 矩阵分析法(选一个水平物体后可用)
|
2026-07-16 10:14:07 +08:00 |
|
|
|
00afbeec73
|
chore: 坐标系检测按钮移至功能测试区
|
2026-07-16 10:06:44 +08:00 |
|
|
|
823c2de74d
|
refactor: 合并坐标系设置——FragmentUp 自动从 CoordinateSystemManager 派生,删除独立的 FragmentUp 控件和检测按钮
|
2026-07-16 10:03:03 +08:00 |
|
|
|
0629384639
|
feat: 包围盒按钮图标替换为线框立方体;过弯检测按钮图标增强为L形通道+方块
|
2026-07-16 09:41:47 +08:00 |
|
|
|
a0a0687bde
|
feat: 包围盒图标改为双立方体线框样式,与剖面盒图标风格统一
|
2026-07-16 09:09:38 +08:00 |
|
|
|
c379eb1bed
|
feat: 替换包围盒信息和过弯检测按钮图标为更合适的几何图形
|
2026-07-16 08:52:08 +08:00 |
|