401 lines
22 KiB
Markdown
401 lines
22 KiB
Markdown
# 08-xyzbc-trt 界面与图标分析
|
||
|
||
## 目标
|
||
|
||
本文面向后续 Web 数控系统界面开发,集中整理 `xyzbc-trt` 相关的界面组成、交互入口和图标资产。分析依据来自:
|
||
|
||
- LinuxCNC `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini`
|
||
- LinuxCNC `xyzbc-trt.xml` PyVCP 面板与 `switchkins_postgui.hal`
|
||
- LinuxCNC `xyzbc-trt-gui.py` Vismach 三维机床模型
|
||
- Web 项目 `app/src/ui/gmoccapy-shell.js`
|
||
- Web 项目 `app/src/profiles/xyzbc-trt.js`
|
||
- Web 图标清单 `app/src/ui-reference/gmoccapy-button-icons.json`
|
||
- Web 图标注册表 `app/src/ui/gmoccapy-icon-registry.js`
|
||
|
||
## xyzbc-trt 机床界面基线
|
||
|
||
| 项 | 内容 |
|
||
| --- | --- |
|
||
| 机床配置 | `sim-xyzbc-trt-kins (switchkins)` |
|
||
| 坐标/轴 | `XYZBC`,5 轴/5 joints |
|
||
| 主界面来源 | LinuxCNC AXIS |
|
||
| 右侧扩展面板 | PyVCP `SWITCHKINS` |
|
||
| 三维机床 | Vismach `xyzbc-trt-gui` |
|
||
| 默认程序 | `demos/xyzbc_switchkins.ngc` |
|
||
| 工具表 | `xyzbc-trt.tbl` |
|
||
| 参数文件 | `xyzbc.var` |
|
||
| 运动学 | `xyzbc-trt-kins sparm=identityfirst` |
|
||
| 切换模式 | `M429` identity、`M428` XYZBC TCP、`M430` USERK |
|
||
|
||
## 必须覆盖的界面
|
||
|
||
### 1. 主工作台 Shell
|
||
|
||
Web 首屏应直接是可操作 CNC 仿真界面,不做营销页。当前 `gmoccapy-shell` 已拆出以下区域:
|
||
|
||
| 区域 | Web region | 必备内容 | 关键状态 |
|
||
| --- | --- | --- | --- |
|
||
| 标题/会话栏 | `titlebar` | 项目名、profile 选择、会话名、来源、当前行、运行状态 | `machineProfile`、`sessionName`、`sourceMode`、`machine.mode` |
|
||
| 五轴预览 | `preview` | 3D/Canvas 机床、刀路、TCP、刀轴、当前程序、工具摘要、RTCP 状态 | `preview`、`toolPreview`、`toolAxisVector`、`rtcpState` |
|
||
| DRO 坐标 | `dro` | X/Y/Z/A/B/C、G54/Abs、DTG、TCP、tool-axis、RTCP 状态 | `dro`、`toolAxisVector` |
|
||
| G-code/MDI | `gcode` | 程序行、当前行、高亮、执行状态、LinuxCNC source 选择、staging、MDI 输入、MDI 历史 | `programLines`、`activeLine`、`machineFileStaging`、`mdiHistory` |
|
||
| 右侧状态栏 | `status-sidebar` | 急停、上电、复位、AUTO、MANUAL、JOG、MDI、IDENTITY、TCP | task gate、mode、estop、power、switchkins |
|
||
| 信息/诊断页 | `info-tabs` | Tool info、G-code properties、gmoccapy diagnostics、LinuxCNC parity、Task/HAL、HAL pins | runtime readiness、source map、HAL/model 状态 |
|
||
| Override | `override` | Rapid override、Feed override、ignore limits、optional block、optional stop | `feed`、`gmoccapyGui` |
|
||
| 主轴/冷却 | `spindle-coolant` | Flood、Mist、主轴 FWD/STOP/REV、RPM、spindle override | `coolant`、`spindle` |
|
||
| 底部控制栏 | `bottom-controls` | Open、Reload、Run、Stop、Pause/Resume、Step、Home、Tool、Touch、MDI、Full、Save/Restore、Audit | command gates、session、program run |
|
||
|
||
### 2. AXIS 等效页面
|
||
|
||
LinuxCNC 原生 `xyzbc-trt` 使用 AXIS,因此 Web 需要覆盖这些 AXIS 语义:
|
||
|
||
| 原生 AXIS 区域 | Web 等效模块 | 开发要点 |
|
||
| --- | --- | --- |
|
||
| 菜单/工具栏 | 底部控制栏 + 文件/编辑/工具页入口 | 文件打开、重载、运行、暂停、停止、单步、从行运行、编辑 |
|
||
| 程序文本区 | G-code panel | 当前行高亮、执行进度、状态、解释器/canonical 来源 |
|
||
| 预览区 | Preview panel | 机床模型、完整预览路径、已执行路径、视角/缩放/清除 |
|
||
| 坐标显示 | DRO panel | XYZBC、DTG、G54/Abs、TCP、tool-axis |
|
||
| MDI | MDI panel | 输入框、执行按钮、历史/快捷命令、M428/M429/M430 |
|
||
| 状态栏 | Sidebar + titlebar | ESTOP、POWER、MODE、RUN、PAUSE、HOMED、INTERP/TASK |
|
||
| Override | Override panel | Feed/Rapid/Spindle override、可选段跳过、可选停止 |
|
||
|
||
### 3. PyVCP SWITCHKINS 面板
|
||
|
||
原生 `xyzbc-trt.xml` 提供一个必须在 Web 中等效实现的 PyVCP 面板:
|
||
|
||
| 控件 | 文本 | HAL pin/net | LinuxCNC 动作 | Web 动作 |
|
||
| --- | --- | --- | --- | --- |
|
||
| `kinstype-legends` | `0:IDENTITY` / `1: XYZBC` / `2: USERK` | `kinstype.is-0/1/2 -> pyvcp.multilabel.0.legend*` | 显示当前 kinematics 类型 | 高亮当前 switchkins 类型 |
|
||
| `type0-button` | `IDENTITY` | `pyvcp.type0-button -> halui.mdi-command-00` | `M429` | `SET_KINS_TYPE identity` |
|
||
| `type1-button` | `TCP:XYZBC` | `pyvcp.type1-button -> halui.mdi-command-01` | `M428` | `SET_KINS_TYPE tcp-xyzbc` |
|
||
| `type2-button` | `userk` | `pyvcp.type2-button -> halui.mdi-command-02` | `M430` | USERK 占位/受 gate 控制 |
|
||
| `vismach-clear` | `vismach-clear` | `pyvcp.vismach-clear -> vismach.plotclear` | 清除 Vismach 轨迹 | `CLEAR_PREVIEW` |
|
||
|
||
### 4. Vismach 等效三维机床界面
|
||
|
||
Web 五轴场景必须按 `xyzbc-trt-gui.py` 的 HAL 语义驱动,不应只画静态模型。
|
||
|
||
| Vismach/HAL 信号 | 来源 | 目标 | Web 展示 |
|
||
| --- | --- | --- | --- |
|
||
| `table-x` | `joint.0.pos-fb` | `xyzbc-trt-gui.table-x` | 工作台 X 平移 |
|
||
| `saddle-y` | `joint.1.pos-fb` | `xyzbc-trt-gui.saddle-y` | 鞍座 Y 平移 |
|
||
| `spindle-z` | `joint.2.pos-fb` | `xyzbc-trt-gui.spindle-z` | 主轴 Z 平移 |
|
||
| `tilt-b` | `joint.3.pos-fb` | `xyzbc-trt-gui.tilt-b` | B 倾斜轴 |
|
||
| `rotate-c` | `joint.4.pos-fb` | `xyzbc-trt-gui.rotate-c` | C 回转轴 |
|
||
| `tool-offset` | `motion.tooloffset.z` / `xyzbc-trt-kins.tool-offset` | GUI + kins | 刀长/刀具 TCP 偏置 |
|
||
| `x-offset` | `xyzbc-trt-kins.x-offset` | GUI | TRT 几何 X 偏置,默认 `-20` |
|
||
| `z-offset` | `xyzbc-trt-kins.z-offset` | GUI | TRT 几何 Z 偏置,默认 `-15` |
|
||
|
||
### 5. 文件/程序页面
|
||
|
||
| 页面/状态 | 必备能力 | 关联图标 |
|
||
| --- | --- | --- |
|
||
| 程序加载 | 打开本地 `.ngc/.nc/.tap/.gcode/.txt`,选择 LinuxCNC staged source | `open_file`、`select_file` |
|
||
| 文件浏览 | 上级目录、Home、Jump to、刷新、上一项/下一项、选择、返回 | `chevron_up`、`home_folder`、`user_defined_folder`、`refresh`、`chevron_left/right`、`back_to_app` |
|
||
| 程序运行 | Run、Stop、Pause、Step、Run from line、Reload、Optional block | `play`、`stop`、`pause`、`pause_active`、`step`、`run_from_line`、`refresh`、`skip_optional_*` |
|
||
| 编辑 | 编辑、保存、另存、新建、撤销、重做、注释、搜索、分屏预览 | `edit_code`、`save`、`save_as`、`new_document`、`edit_undo`、`edit_redo`、`comment`、`split_view` |
|
||
|
||
### 6. 手动/JOG/回零/对刀页面
|
||
|
||
| 页面 | 必备控件 | xyzbc-trt 注意点 |
|
||
| --- | --- | --- |
|
||
| 回零 | Ref all、Unref all、X/Y/Z/B/C 单轴回零、返回、分页 | XYZBC 应使用 X/Y/Z/B/C;A 图标是资产存在但本机型不应作为主轴显示 |
|
||
| Touch off | X/Y/Z/B/C touch off、返回、分页、可选 block height | 同上,优先按当前 profile 轴生成 |
|
||
| Jog | 连续/增量、慢速/快速、Ignore limits、轴 jog、关节 jog | 非平凡 kinematics 下 joint jog 需要单独 gate |
|
||
| MDI | MDI 输入、历史命令、M428/M429/M430 快捷 | M428/M429/M430 是 switchkins 核心入口 |
|
||
|
||
### 7. 刀具/偏置/设置/诊断页面
|
||
|
||
| 页面 | 必备能力 | 说明 |
|
||
| --- | --- | --- |
|
||
| Tool page | 选择刀具、换刀、M61 Q 设置当前刀、X/Z tool touch off、ToolEdit 添加/删除/保存/刷新/计算器 | `xyzbc-trt.tbl` 是数据源 |
|
||
| Offset page | 坐标偏置计算器、编辑 offsets、set selected、zero G92 | 文字按钮为主,少量计算器图标 |
|
||
| Settings page | 声音、字体、DRO/DTG/offset 显示、键盘行为、窗口模式、run from line、unlock、tool measurement | 很多控件无图标,按表单控件实现 |
|
||
| Diagnostics | LinuxCNC parity、Task/HAL、INI、source map、HAL pins、gmoccapy comms、native/Web 对比 | 以只读诊断表格为主 |
|
||
|
||
## Web 已注册核心图标
|
||
|
||
`app/src/ui/gmoccapy-icon-registry.js` 当前直接注册的核心按钮如下,开发首屏应优先使用这些 id:
|
||
|
||
| buttonId | 语义 | active 图标 | inactive/default 图标 |
|
||
| --- | --- | --- | --- |
|
||
| `tbtn_estop` | 急停/急停复位 | `main_switch_on` | `main_switch_off` |
|
||
| `tbtn_on` | 机器上电 | `power_on` | `power_off` |
|
||
| `rbt_manual` | 手动模式 | `mode_manual_active` | `mode_manual_inactive` |
|
||
| `rbt_mdi` | MDI 模式 | `mode_mdi_active` | `mode_mdi_inactive` |
|
||
| `rbt_auto` | Auto 模式 | `mode_auto_active` | `mode_auto_inactive` |
|
||
| `tbtn_setup` | 设置页 | `mode_settings_active` | `mode_settings_inactive` |
|
||
| `tbtn_user_tabs` | 用户/Jog 页 | `mode_user_tabs_active` | `mode_user_tabs_inactive` |
|
||
| `btn_load` | 打开程序 | - | `open_file` |
|
||
| `btn_reload` | 重载 | - | `refresh` |
|
||
| `btn_run` | 运行 | - | `play` |
|
||
| `btn_stop` | 停止 | - | `stop` |
|
||
| `tbtn_pause` | 暂停 | `pause_active` | `pause` |
|
||
| `btn_step` | 单步 | - | `step` |
|
||
| `btn_homing` | 回零菜单 | - | `ref_all` |
|
||
| `btn_tool` | 刀具页 | - | `hsk_mill_tool` |
|
||
| `btn_touch` | 对刀/坐标设定 | - | `touch_off` |
|
||
| `ref_all` | 全部回零 | - | `ref_all` |
|
||
| `btn_fullscreen` | 全屏预览 | `fullscreen_close` | `fullscreen_open` |
|
||
| `rbt_forward` | 主轴正转 | `spindle_right_on` | `spindle_right` |
|
||
| `rbt_reverse` | 主轴反转 | `spindle_left_on` | `spindle_left` |
|
||
| `rbt_stop` | 主轴停止 | `spindle_stop_on` | `spindle_stop` |
|
||
| `tbtn_flood` | Flood 冷却 | `coolant_flood_active` | `coolant_flood_inactive` |
|
||
| `tbtn_mist` | Mist 冷却 | `coolant_mist_active` | `coolant_mist_inactive` |
|
||
| `btn_zoom_in` | 放大 | - | `zoom_in` |
|
||
| `btn_zoom_out` | 缩小 | - | `zoom_out` |
|
||
| `rbt_view_x` | X 视角 | - | `tool_axis_x` |
|
||
| `rbt_view_y` | Y 视角 | - | `tool_axis_y` |
|
||
| `rbt_view_z` | Z 视角 | - | `tool_axis_z` |
|
||
| `rbt_view_p` | 透视/Fit | - | `tool_axis_p` |
|
||
| `tbtn_view_tool_path` | 刀路显示/清除 | - | `toolpath` |
|
||
| `tbtn_view_dimension` | 尺寸显示 | - | `dimensions` |
|
||
| `btn_exit` | 退出 | - | `logout` |
|
||
| `btn_save_session` | 保存会话 | - | `save` |
|
||
|
||
## 图标分类总览
|
||
|
||
原始 gmoccapy 图标清单包含 `211` 行记录,当前复制到项目资产中的图标文件为 `112` 个。按界面类别统计如下:
|
||
|
||
| 类别 | 行数 | 按钮数 | 主要按钮 |
|
||
| --- | ---: | ---: | --- |
|
||
| 右侧主状态栏 | 14 | 7 | `rbt_auto`、`rbt_manual`、`rbt_mdi`、`tbtn_estop`、`tbtn_on`、`tbtn_setup`、`tbtn_user_tabs` |
|
||
| 底部主按钮栏 | 7 | 6 | `btn_exit`、`btn_homing`、`btn_tool`、`btn_touch`、`tbtn_fullsize_preview0`、`tbtn_switch_mode` |
|
||
| Auto 程序运行栏 | 13 | 10 | `btn_edit`、`btn_from_line`、`btn_load`、`btn_reload`、`btn_run`、`btn_step`、`btn_stop`、`tbtn_pause` |
|
||
| MDI/宏按钮栏 | 11 | 9 | `calculator`、`keyboard`、`macro_0..4`、`next_button`、`previous_button` |
|
||
| 回零按钮栏 | 10 | 10 | `home_axis_x/y/z/a/b`、`ref_all`、`unref_all`、分页、返回 |
|
||
| 对刀/坐标设定按钮栏 | 9 | 9 | `touch_x/y/z/a/b`、分页、返回、`block_height` |
|
||
| 手动/Jog 面板 | 4 | 2 | `chk_ignore_limits`、`tbtn_turtle_jog` |
|
||
| Jog 增量选择栏 | 6 | 6 | `rbt_0..5` |
|
||
| Jog 轴按钮 | 10 | 10 | `x+/x-`、`y+/y-`、`z+/z-`、`a+/a-`、`b+/b-` |
|
||
| Jog 关节按钮 | 10 | 10 | `0+/0-` 到 `4+/4-` |
|
||
| 冷却/主轴控制 | 11 | 5 | `rbt_forward`、`rbt_reverse`、`rbt_stop`、`tbtn_flood`、`tbtn_mist` |
|
||
| 预览/视图 | 10 | 10 | 缩放、视角、尺寸、刀路、清除 |
|
||
| 编辑器搜索/编辑 | 8 | 8 | 注释、撤销、重做、搜索、替换 |
|
||
| 编辑页底部栏 | 9 | 8 | 返回、计算器、键盘、新建、重载、保存、另存、分屏 |
|
||
| 刀具页底部栏 | 6 | 6 | 返回、换刀、设置当前刀、按编号选择、X/Z tool touch off |
|
||
| 文件选择栏 | 9 | 9 | 返回、上级、home、jump、刷新、上一项、下一项、选择、排序 |
|
||
| 内嵌 ToolEdit 控件 | 5 | 5 | 添加、保存、计算器、删除、刷新 |
|
||
| 内嵌 OffsetPage 控件 | 4 | 4 | 计算器、编辑、设置选中、Zero G92 |
|
||
| 设置页控件 | 42 | 42 | 声音、字体、DRO、DTG、offset、键盘、窗口、unlock、tool measurement |
|
||
| Glade 静态按钮 | 13 | 13 | HAL meter/scope/show、status、calibration、classicladder 等 |
|
||
|
||
## 已复制图标文件清单
|
||
|
||
图标根目录:
|
||
|
||
```text
|
||
web-rtcp-5axis-xyzbc-trt-sim-plan/app/src/assets/gmoccapy-icons
|
||
```
|
||
|
||
### 状态/模式/电源
|
||
|
||
- `img_emergency__main_switch_on__48.png`
|
||
- `img_emergency_off__main_switch_off__48.png`
|
||
- `img_machine_on__power_on__48.png`
|
||
- `img_machine_off__power_off__48.png`
|
||
- `img_auto_on__mode_auto_active__48.png`
|
||
- `img_auto__mode_auto_inactive__48.png`
|
||
- `img_manual_on__mode_manual_active__48.png`
|
||
- `img_manual__mode_manual_inactive__48.png`
|
||
- `img_mdi_on__mode_mdi_active__48.png`
|
||
- `img_mdi__mode_mdi_inactive__48.png`
|
||
- `img_settings_on__mode_settings_active__48.png`
|
||
- `img_settings__mode_settings_inactive__48.png`
|
||
- `img_user_tabs_on__mode_user_tabs_active__48.png`
|
||
- `img_user_tabs__mode_user_tabs_inactive__48.png`
|
||
|
||
### 程序运行/编辑/文件
|
||
|
||
- `img_open__open_file__32.svg`
|
||
- `img_reload1__refresh__32.png`
|
||
- `img_run__play__32.png`
|
||
- `img_stop__stop__32.png`
|
||
- `img_pause__pause__32.png`
|
||
- `img_pause_active__pause_active__32.png`
|
||
- `img_step__step__32.png`
|
||
- `img_run_from__run_from_line__48.png`
|
||
- `img_skip_optional_active__skip_optional_active__32.png`
|
||
- `img_skip_optional_inactive__skip_optional_inactive__32.png`
|
||
- `img_editor__edit_code__32.png`
|
||
- `img_edit-undo__edit_undo__32.png`
|
||
- `img_edit-redo__edit_redo__32.png`
|
||
- `img_edit_comment__comment__32.png`
|
||
- `img_edit_menu_new__new_document__32.svg`
|
||
- `img_edit_menu_reload__refresh__32.png`
|
||
- `img_edit_menu_save__save__32.png`
|
||
- `img_edit_menu_save_as__save_as__32.png`
|
||
- `img_edit_menu_close__back_to_app__48.svg`
|
||
- `img_edit_menu_calculator__calculator_open__32.png`
|
||
- `img_edit_menu_keyboard__keyboard__32.png`
|
||
- `img_edit_menu_keyboard_hide__keyboard_hide__32.png`
|
||
- `img_split_view__split_view__32.png`
|
||
|
||
### 预览/视角/刀路
|
||
|
||
- `img_zoom_in__zoom_in__24.png`
|
||
- `img_zoom_out__zoom_out__24.png`
|
||
- `img_view_x__tool_axis_x__24.png`
|
||
- `img_view_y__tool_axis_y__24.png`
|
||
- `img_view_y2__tool_axis_y_inv__24.png`
|
||
- `img_view_z__tool_axis_z__24.png`
|
||
- `img_view_p__tool_axis_p__24.png`
|
||
- `img_tool_path__toolpath__24.png`
|
||
- `img_dimensions__dimensions__24.png`
|
||
- `img_tool_clear__clear__24.png`
|
||
- `img_fullsize_preview0_open__fullscreen_open__48.png`
|
||
- `img_fullsize_preview0_close__fullscreen_close__48.png`
|
||
- `img_fullsize_preview1_open__fullscreen_open__48.png`
|
||
- `img_fullsize_preview1_close__fullscreen_close__48.png`
|
||
|
||
### 主轴/冷却
|
||
|
||
- `img_spindle_forward__spindle_right__48.png`
|
||
- `img_spindle_forward_on__spindle_right_on__48.png`
|
||
- `img_spindle_reverse__spindle_left__48.png`
|
||
- `img_spindle_reverse_on__spindle_left_on__48.png`
|
||
- `img_spindle_stop__spindle_stop__48.png`
|
||
- `img_spindle_stop_on__spindle_stop_on__48.png`
|
||
- `img_coolant_on__coolant_flood_active__48.png`
|
||
- `img_coolant_off__coolant_flood_inactive__48.png`
|
||
- `img_mist_on__coolant_mist_active__48.png`
|
||
- `img_mist_off__coolant_mist_inactive__48.png`
|
||
|
||
### 回零/对刀/Jog
|
||
|
||
- `img_ref_all__ref_all__48.png`
|
||
- `img_ref_menu__ref_all__48.png`
|
||
- `img_unref_all__unref_all__48.png`
|
||
- `img_ref_x__ref_x__48.png`
|
||
- `img_ref_y__ref_y__48.png`
|
||
- `img_ref_z__ref_z__48.png`
|
||
- `img_ref_a__ref_a__48.png`
|
||
- `img_ref_b__ref_b__48.png`
|
||
- `img_ref_menu_close__back_to_app__48.svg`
|
||
- `img_ref_paginate_next__chevron_right__32.svg`
|
||
- `img_ref_paginate_prev__chevron_left__32.svg`
|
||
- `img_touch_off__touch_off__48.png`
|
||
- `img_touch_x__touch_x__48.png`
|
||
- `img_touch_y__touch_y__48.png`
|
||
- `img_touch_z__touch_z__48.png`
|
||
- `img_touch_a__touch_a__48.png`
|
||
- `img_touch_b__touch_b__48.png`
|
||
- `img_touch_menu_close__back_to_app__48.svg`
|
||
- `img_touch_paginate_next__chevron_right__32.svg`
|
||
- `img_touch_paginate_prev__chevron_left__32.svg`
|
||
- `img_continuous__jog_continuous__24.png`
|
||
- `img_turtle_jog__jog_speed_slow__32.png`
|
||
- `img_rabbit_jog__jog_speed_fast__32.png`
|
||
|
||
### 文件浏览/导航
|
||
|
||
- `img_back_file_load__back_to_app__48.svg`
|
||
- `img_back_tool__back_to_app__48.svg`
|
||
- `img_close__logout__48.png`
|
||
- `img_dir_up__chevron_up__32.svg`
|
||
- `img_home__home_folder__32.svg`
|
||
- `img_jump_to__user_defined_folder__32.svg`
|
||
- `img_refresh_dir__refresh__32.png`
|
||
- `img_sel_next__chevron_right__32.svg`
|
||
- `img_sel_prev__chevron_left__32.svg`
|
||
- `img_select__select_file__32.png`
|
||
- `img_up__chevron_up__24.svg`
|
||
- `img_down__chevron_down__24.svg`
|
||
|
||
### 刀具/ToolEdit/Offset
|
||
|
||
- `img_tools__hsk_mill_tool__48.png`
|
||
- `img_toolchange__mill_tool_change__48.png`
|
||
- `img_index_tool__mill_tool_set_num__48.svg`
|
||
- `img_tool_by_no__mill_tool_change_num__48.svg`
|
||
- `img_tool_add__add__32.png`
|
||
- `img_tool_save__save__32.png`
|
||
- `img_tool_calculator__calculator_open__32.png`
|
||
- `img_tool_delete__delete__32.png`
|
||
- `img_tool_reload__refresh__32.png`
|
||
- `img_offset_calculator__calculator_open__32.png`
|
||
|
||
### MDI/宏/键盘
|
||
|
||
- `img_macro_menu_calculator__calculator_open__32.png`
|
||
- `img_macro_menu_keyboard__keyboard__32.png`
|
||
- `img_macro_menu_keyboard_hide__keyboard_hide__32.png`
|
||
- `img_macro_menu_stop__stop__32.png`
|
||
- `macro_0__macro_image.png`
|
||
- `macro_4__macro_image.png`
|
||
|
||
## xyzbc-trt 专用界面规则
|
||
|
||
1. 轴显示以 `XYZBC` 为准。A 轴相关图标可保留为通用资产,但 `xyzbc-trt` 主界面、回零、Touch Off、DRO、Jog 应显示 X/Y/Z/B/C。
|
||
2. `TCP:XYZBC` 是核心按钮,不应写成 `TCP:XYZAC`。对应 MDI 命令为 `M428`。
|
||
3. `IDENTITY` 对应 `M429`,在 `identityfirst` 配置中 switchkins type `0` 是 identity。
|
||
4. `USERK` 对应 `M430`,若 Web runtime 暂未实现完整 USERK,应保留按钮但通过 gate/提示标明状态。
|
||
5. `vismach-clear` 必须清除 Web 机床/刀路预览,不应只清除文本状态。
|
||
6. B/C 角轴限制、joint 限制和 TCP/toolAxis 计算必须来自 profile/INI/kinematics runtime,不应从 UI 字符串推断。
|
||
7. 诊断页面要明确区分“图标/界面参考已具备”和“WASM artifact/runtime 已具备”,避免把 UI 对标误判为运动语义完成。
|
||
|
||
## AXIS 源程序按钮级对标矩阵
|
||
|
||
本轮新增要求:Web 页面按钮不仅要“看起来像 AXIS”,还要按 LinuxCNC 源程序按钮语义逐项验证。依据路径:
|
||
|
||
```text
|
||
/home/mes123456/cnc_wams/linuxcnc/src/emc/usr_intf/axis/scripts/axis.py
|
||
configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.xml
|
||
configs/sim/axis/vismach/5axis/table-rotary-tilting/switchkins_postgui.hal
|
||
```
|
||
|
||
Web 端按钮矩阵实现位置:
|
||
|
||
```text
|
||
app/src/ui/axis-shell.js :: AXIS_BUTTON_PARITY
|
||
```
|
||
|
||
验收要求:
|
||
|
||
| 类别 | Web action | LinuxCNC 来源 | 必须验证的状态效果 |
|
||
| --- | --- | --- | --- |
|
||
| 急停/上电 | `estop`、`power` | `commands.estop_clicked`、`commands.onoff_clicked` | ESTOP/ESTOP_RESET 可双向切换;上电后 `taskState=on` |
|
||
| 程序运行 | `run-ready`、`run`、`pause`、`resume`、`step`、`stop`、`reload` | `task_run`、`task_pause`、`task_resume`、`task_step`、`task_stop`、`reload_file` | 运行前置、AUTO 模式、暂停/继续/单步/停止状态正确 |
|
||
| 文件 | `open`、`stage` | `open_file`、`PROGRAM_PREFIX` | Open 从全局 AXIS shell 触发文件选择;LinuxCNC 文件 staging 可验证 |
|
||
| 手动/MDI | `tab-manual`、`tab-mdi`、`mdi-form`、`mdi-history` | `ensure_manual`、`ensure_mdi`、`send_mdi`、MDI history | 模式切换、MDI 历史和 MDI 命令状态一致 |
|
||
| 回零/Jog/对刀 | `home-all`、`jog-minus`、`jog-plus`、`touch-off`、`tool-touch-off` | `home_all_joints`、`jog_minus`、`jog_plus`、touch off 逻辑 | 选中关节映射到 X/Y/Z/B/C;Jog 改变对应轴;touch off 发等效 MDI |
|
||
| Override | `feed/rapid/spindle-override-*` | `set_feedrate`、`set_rapidrate`、`set_spindlerate` | override 按 LinuxCNC 范围约束变化 |
|
||
| 主轴/冷却 | `spindle-forward`、`spindle-stop`、`spindle-reverse`、`toggle-flood`、`toggle-mist` | AXIS spindle/coolant 控件与 F7/F8/F9/F10 | 主轴方向、使能、冷却状态变化 |
|
||
| 视图/轨迹 | `view-x/y/z/p`、`clear-preview` | `set_view_x/y/z/p`、`clear_live_plot` | 视角状态和 live plot buffer 清除 |
|
||
| PyVCP switchkins | `kins-identity`、`kins-tcp`、`kins-userk`、`clear-preview` | `pyvcp.type*-button -> halui.mdi-command-*`、`vismach.plotclear` | M429/M428/M430 分别设置 identity/TCP/userk,清轨迹生效 |
|
||
|
||
浏览器验收必须实际点击关键按钮并观察状态变化,不得只检查 DOM 存在。当前 `tests/browser/xyzbc_trt_browser_smoke.html` 已覆盖 ESTOP/复位、上电、回零、MDI、M428/M429/M430、Jog、override、主轴、冷却、视图、清轨迹和 run-ready。
|
||
|
||
## 开发组件拆分建议
|
||
|
||
| 组件 | 输入状态 | 输出动作 |
|
||
| --- | --- | --- |
|
||
| `MachineTitlebar` | profile、session、source、mode、activeLine | `select-profile` |
|
||
| `FiveAxisPreview` | path samples、joint pose、tcp、toolAxis、toolPreview、selectedView | view/zoom/fit/clear/fullscreen |
|
||
| `DroPanel` | XYZBC DRO、DTG、TCP、toolAxis、offset mode | 切换 DRO 显示模式 |
|
||
| `ProgramPanel` | program lines、activeLine、execution feedback、source list | open/reload/stage/select source/run MDI |
|
||
| `StatusSidebar` | task policy、estop、power、mode、switchkins | estop/power/reset/mode/kintype |
|
||
| `PyvcpSwitchkinsPanel` | kinstype active、panel schema | M429/M428/M430/clear |
|
||
| `OverridePanel` | feed/rapid/spindle override、optional block/stop | override step/reset/toggle |
|
||
| `SpindleCoolantPanel` | spindle、coolant、gates | FWD/STOP/REV/flood/mist |
|
||
| `HomingPanel` | axes、homed state | home axis/ref all/unref all |
|
||
| `TouchOffPanel` | axes、offset context | touch axis/block height |
|
||
| `JogPanel` | jog axis/joint mode、increment、limits | jog press/release、increment、ignore limits |
|
||
| `ToolPage` | tool table、selected tool、tool offsets | select/change/index/save/edit |
|
||
| `FilePage` | OPFS/project files、current dir、selected file | navigate/select/open |
|
||
| `SettingsPage` | gmoccapy settings | form updates |
|
||
| `DiagnosticsPage` | INI、HAL、Task/HAL、WASM、parity、evidence | audit/refresh |
|
||
|
||
## 最小首屏 icon 集合
|
||
|
||
如果先实现可运行首屏,必须先接入这些图标:
|
||
|
||
- 急停/上电:`tbtn_estop`、`tbtn_on`
|
||
- 模式:`rbt_manual`、`rbt_mdi`、`rbt_auto`
|
||
- 程序:`btn_load`、`btn_reload`、`btn_run`、`btn_stop`、`tbtn_pause`、`btn_step`
|
||
- Switchkins:`IDENTITY`、`TCP:XYZBC`、`USERK` 可先用文字按钮,但状态要接 HAL/MDI 语义
|
||
- 预览:`rbt_view_x`、`rbt_view_y`、`rbt_view_z`、`rbt_view_p`、`btn_zoom_in`、`btn_zoom_out`、`tbtn_view_tool_path`
|
||
- 主轴/冷却:`rbt_forward`、`rbt_stop`、`rbt_reverse`、`tbtn_flood`、`tbtn_mist`
|
||
- 回零/刀具/对刀:`btn_homing`、`btn_tool`、`btn_touch`
|
||
- 会话/退出:`btn_save_session`、`btn_exit`
|