Files
cnc_wams/web-rtcp-5axis-sim-plan/working_run/09-linear-units-meter-scene-complete-next-steps.md

59 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 09 单位换算与 Three.js 米单位场景完成记录
生成时间2026-06-22
## 本轮目标
解决英寸、毫米、米之间的单位换算问题,重点覆盖:
- 实时轴值显示;
- 刀具路径预览;
- 刀具执行轨迹;
- Three.js 绘图坐标统一使用米。
## 完成情况矩阵
| 项目 | 完成状态 | 代码落点 | 验证 |
| --- | --- | --- | --- |
| 公共线性单位换算 | 已完成 | `app/src/runtime/linear-units.js` | `verify_linear_unit_conversion.mjs` |
| mm/inch/m 到米转换 | 已完成 | `linearValueToMeters()``axesToSceneMeters()` | `25.4mm == 1inch == 0.0254m` |
| 执行计时距离归一到毫米 | 已完成 | `app/src/runtime/execution-timing.js` | inch 段长 `1 inch -> 25.4 mm` |
| 执行计时进给归一到 mm/min | 已完成 | `app/src/runtime/execution-timing.js` | inch feed `1 inch/min -> 25.4 mm/min` |
| G20/G21 程序单位解析 | 已完成 | `app/src/runtime/linuxcnc-interpreter-runtime.js` | G20 motion 标记 `inch`G21 motion 标记 `mm` |
| 刀具路径预览使用米 | 已完成 | `app/src/visualization/five-axis-scene.js` | motion axes 经 `axesToSceneMeters()` |
| 刀具执行轨迹使用米 | 已完成 | `app/src/visualization/five-axis-scene.js` | timing samples 携带/继承 motion 单位 |
| 当前刀位 marker 使用米 | 已完成 | `app/src/visualization/five-axis-scene.js` | runtime feedback linearUnits 参与转换 |
| Three.js 机床参考模型使用米尺度 | 已完成 | `app/src/visualization/five-axis-scene.js` | 参考模型尺寸从任意倍率改为米尺度 |
| 2D fallback 使用米尺度 | 已完成 | `app/src/visualization/five-axis-scene.js` | fallback scale 改为米坐标范围 |
| 轴值实时显示 | 已确认边界 | `store.axisPose` / DRO | 保留机床/程序单位,不改成米 |
## 关键设计结论
实时轴值显示不应强制转换为米。DRO/axisPose 表示当前机床或程序坐标单位,应保留 LinuxCNC/INI/G-code 的语义Three.js 预览层才统一转换为米。
Three.js 场景现在通过 dataset 暴露:
```text
data-three-scene-units="m"
data-three-linear-units="<mm|inch|m>"
data-three-linear-unit-scale-to-meters="<factor>"
```
## 已执行验证
```text
node web-rtcp-5axis-sim-plan/tests/node/verify_linear_unit_conversion.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_rtcp_store.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_real_linuxcnc_5axis_program_cases.mjs
node web-rtcp-5axis-sim-plan/tests/node/verify_linuxcnc_ini_runtime.mjs
npm --prefix web-rtcp-5axis-sim-plan/app run build
```
结果均通过。
## 后续工作
1. 增加浏览器截图证据,确认米尺度 Three.js 画面在 desktop/mobile 下不空白、不偏移。
2. 如果后续接入真实 task/motion HAL feedback需要确认 feedback 坐标是否已经按 INI 单位输出,并继续填充 `programRuntimeFeedback.linearUnits`
3. 可继续补 G-code 中途 G20/G21 切换的多段浏览器端预览用例。