Files
cnc_wams/备忘/备忘1.txt
2026-06-22 22:28:27 +08:00

92 lines
6.2 KiB
Plaintext
Raw Permalink 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.
需要完善的内容,做个备忘
按 web-rtcp-5axis-sim-plan/docs/native-task-hal-sync-implementation-steps.md 的边界要求,本次只处理 Web Three.js 可视化层,不改 LinuxCNC task/HAL runtime 语义。
完成内容:
Three.js 三维显示区改为 toolpath-only删除画布内地板、网格、坐标轴、机床包络、转台、刀具实体只保留刀具预览路径线。
补齐 Three.js 相机交互:
- 鼠标左键/单指拖动:旋转
- 鼠标中键、右键或 Shift+拖动:平移
- 鼠标滚轮:缩放
- 双指:缩放并平移
- X/Y/Z/Fit 按钮:预设视角/复位视角
边界说明:
这次没有提升 nativeTaskReady/nativeHalSyncReady它仍属于 Web simulation UI 显示层调整。task/HAL native/WASM 边界仍需继续按执行文档阶段 0-8 推进。
继续按 web-rtcp-5axis-sim-plan/docs/native-task-hal-sync-implementation-steps.md 边界推进 Three.js 显示层:程序预览和刀具执行过程已显示在 Three.js 区域。
完成内容:
Three.js 区域现在同时显示:
- 完整程序预览路径:来自 state.programExecution.motion也就是 LinuxCNC interpreter/WASM canonical motion events。
- 已执行路径:优先来自 state.programExecutionTiming.samples也就是 LinuxCNC TP queue runtime timing samples没有 samples 时回退到 canonical motion 端点。
- 当前刀具/TCP 执行标记:来自 state.programRuntimeFeedback.axisPose / task-HAL runtime feedback并显示刀轴方向线。
- 快速移动路径辅助层:从 canonical motion 中的 STRAIGHT_TRAVERSE 提取。
保留功能:
- 鼠标/触控旋转、平移、缩放仍可用。
- X/Y/Z/Fit 预设视角仍可用。
- Clear 会同步清空完整预览路径和已执行路径。
实现文件:
[five-axis-scene.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/visualization/five-axis-scene.js)
[gmoccapy_shell_smoke.html](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html)
新增可观测状态:
canvas.dataset.threeSceneMode=program-preview-and-tool-execution
canvas.dataset.threeProgramPreviewSource=linuxcnc-interpreter-wasm / linuxcnc-machine-file-remap-wasm / fixture-line-playback
canvas.dataset.threePathPoints=完整程序预览点数
canvas.dataset.threeExecutedPathPoints=已执行路径点数
canvas.dataset.threeToolExecutionMarker=true/false
验证已通过:
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
边界说明:
Three.js 不解析 G-code不手写 LinuxCNC 运动语义;只消费已有 LinuxCNC interpreter canonical motion、TP timing samples、task/HAL runtime feedback。nativeTaskReady/nativeHalSyncReady 的提升仍按执行文档阶段任务另行完成。
发布站点已经可访问,但第一次远端 smoke 卡在无 GPU 的 WebGL 上了,页面退回了 2D fallback。这个不是业务逻辑失败我现在切换浏览器参数强制 swiftshader再跑同一套发布后测试。
我先确认当前程序执行数据从哪里来,以及 LinuxCNC 示例程序在仓库里如何被加载。目标是让 Three.js 区域既能显示完整程序预览路径,也能显示执行中的刀具位置/已执行轨迹,并尽量复用已有 interpreter/task/HAL 输出,不手写新的 CNC 语义。
文档更新会比较小:把 “下一步要做 Worker/store” 改为 “已接线”,把当前边界标为 Web simulation promoted同时仍明确 hardware/realtime kernel/external user-M/tool DB 不支持。历史 M18/M13 记录不改。
公网测试已经跑到一个明确失败点Save Session 在 http://82.156.24.101:8092 下抛出 OPFS is not available in this browser。这类浏览器存储 API 在公网 HTTP/IP 环境不是安全上下文,很多“保存、恢复、暂存机床文件、完整边界审计”都会受影响;我会继续把其余功能用异常隔离方式跑完,确认还有没有独立问题。
代码确认了:会话保存和机床文件暂存都硬依赖 OPFS。公网 HTTP/IP 不满足安全上下文,因此这些功能天然不可用;我会先用降级后的脚本继续测试不依赖 OPFS 的操作功能,再给出完整问题清单。
本轮继续处理公网 HTTP/IP 测试失败点Save Session 在 http://82.156.24.101:8092 下因 OPFS 不可用报错。
完成内容:
- five-axis session runtime 现在会优先使用 OPFS如果当前浏览器没有 navigator.storage.getDirectory则自动使用页面内存会话存储。
- Save Session / Restore Session 返回并记录 storageMode
- opfs安全上下文下的 OPFS 持久化;
- memory-fallback公网 HTTP/IP 等无 OPFS 环境下的页面内存后备;
- memory测试显式注入的内存存储。
- gmoccapy 信息面板 Session 行现在显示 status / storageMode / path避免把 memory-fallback 误认成 OPFS 持久化。
- browser smoke 覆盖默认 Save/Restore 按钮路径,确认无 OPFS 环境不会再抛出 “OPFS is not available in this browser.”。
实现文件:
[five-axis-session.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/five-axis-session.js)
[store.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js)
[gmoccapy-shell.js](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js)
[verify_five_axis_session.mjs](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs)
[gmoccapy_shell_smoke.html](/home/cnc/桌面/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html)
验证已通过:
node web-rtcp-5axis-sim-plan/tests/node/verify_five_axis_session.mjs
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_shell_browser.sh
npm --prefix web-rtcp-5axis-sim-plan/app run smoke:node
bash web-rtcp-5axis-sim-plan/tests/browser/verify_gmoccapy_dist_browser.sh
边界说明:
memory-fallback 只解决公网 HTTP/IP 下“当前页面生命周期内保存/恢复会话”的可用性,不声称提供 OPFS 持久化。机床文件暂存、完整边界审计中仍硬依赖 OPFS 的部分,公网 HTTP/IP 下还需要继续按功能逐项降级或标记 blocked。