2.9 KiB
2.9 KiB
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 暴露:
data-three-scene-units="m"
data-three-linear-units="<mm|inch|m>"
data-three-linear-unit-scale-to-meters="<factor>"
已执行验证
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
结果均通过。
后续工作
- 增加浏览器截图证据,确认米尺度 Three.js 画面在 desktop/mobile 下不空白、不偏移。
- 如果后续接入真实 task/motion HAL feedback,需要确认 feedback 坐标是否已经按 INI 单位输出,并继续填充
programRuntimeFeedback.linearUnits。 - 可继续补 G-code 中途 G20/G21 切换的多段浏览器端预览用例。