3.4 KiB
3.4 KiB
项目功能内容
目标
在 Web LinuxCNC 控制面板的机床预览区增加“三维机床管理”按钮。对话框内完成机床部件装配和坐标标定,最终生成可由现有 XYZAC/XYZBC TRT 运行链使用的机床模型。
功能范围
- 对话框包含独立的 Three.js 三维预览,实时显示正在配置的机床。
- 支持逐个导入自包含
.glb机床部件,不允许依赖外部纹理或网格文件。 - 每个部件可绑定
底座、X、Y、Z、刀具、A/B、C、工件角色,并编辑父级关系。可运行结构必须满足:- 刀具链:底座 → X → Y → Z → 刀具。
- 转台链:底座 → A/B → C → 工件。
- 每个部件可定义局部坐标原点。模型网格相对该原点偏移,运动关节围绕该原点运动。
- 每个部件可独立显示或隐藏原点坐标轴辅助线。
- 每个部件可用数值和 Three.js 操纵器平移、旋转;变换只修改装配配置,不修改原 GLB 字节。Three.js 管理器通过
camera.up.set(0, 0, 1)使用机床 Z-up 场景,机床 XY 为地面平面;导入 GLB 的节点、几何、材质、内部层级和原始变换保持不变。 - 可定义 C 轴原点位置和 A/B 到 C 的运动学偏置。应用时写入底座场景节点及整机场景的
userData.linuxcncMachineGeometry,同时生成 URDF:C 原点 P = (x-rot-point, y-rot-point, z-rot-point)。A/B 偏置 D = (x-offset, y-offset, z-offset)。- 倾转关节原点
T=P+D,C 关节原点U=-D,工件固定原点-P。
- 可定义 X/Y/Z/A或B/C 的物理零点。模型运动量为 LinuxCNC 实际关节值减去配置的物理零点。
- 应用后,控制面板程序执行、Jog、RTCP 切换和刀长变化继续以 Worker/WASM 快照为唯一运动输入;模型不得在 React 中重新计算刀尖逆解。
数据和单位
- UI 中平移、局部原点、C 原点和偏置使用毫米;旋转和物理旋转轴零点使用度。
- GLB 遵循 glTF 米制、Y-up;生成的 URDF 使用米和弧度、Z-up。
- 部件源文件、哈希和原始场景保持不变;运行装配使用深复制后的几何与材质。显式“导出组合 GLB”会生成新文件,并将标定数据同时写入整机场景和底座节点
userData。 - 底座
userData至少保存 schema、机型、C 原点、A/B 偏置、物理零点和部件装配摘要。
安全边界
- 当前只生成项目已有求解器支持的 XYZAC 或 XYZBC 双分支 TRT 结构。
- 层级编辑器允许建立关系,但“应用到控制器”前必须严格验证两条受支持机械链、角色唯一性和无环结构。
- 未完成八个角色时允许预览和保存草稿,不允许应用到控制器。
- 模型外观变换不能代替 INI/运动学参数;C 原点和 A/B 偏置必须通过现有配置重载进入 WASM。
- 不做碰撞、质量、刚体动力学或任意 URDF 求解。
验收结果
- AC 与 BC 均能由八个独立部件建立结构并应用。
- 对话框预览、原点辅助、平移/旋转和层级变化实时可见。
- 底座
userData含完整几何及物理零点字段。 - 运行控制面板后,X/Y/Z/A或B/C Jog 和五轴程序驱动对应部件;工件路径继续附着 C 轴,刀具长度来自 WASM。
- 非法层级、重复角色、缺失部件、错误机型和外部资源 GLB 明确拒绝,已生效模型不改变。