宏和钩子
Rayforge 提供两个强大的自动化功能来自定义您的工作流程:宏和钩子。两者都允许您将自定义 G 代码注入作业中,但它们服务于不同的目的。

概述
| 功能 | 目的 | 触发 | 用例 |
|---|---|---|---|
| 宏 | 可重用的 G 代码片段 | 手动执行 | 快速命令、测试模式、自定义例程 |
| 钩子 | 自动 G 代码注入 | 作业生命周期事件 | 启动序列、图层更改、清理 |
宏
宏是命名的、可重用的 G 代码脚本,您可以随时手动执行。
宏的用途
常见的宏用例:
- 归零机器 - 快速发送
$H - 设置工作偏移 - 存储和调用 G54/G55 位置
- 空气辅助控制 - 开/关空气辅助
- 焦点测试 - 运行快速焦点测试模式
- 自定义工具更换 - 用于多激光设置
- 紧急例程 - 快速关闭或清除警报
- 材料探测 - 自动对焦或高度测量
创建宏
-
打开机器设置:
- 导航到 设置 → 机器 → 宏
-
添加新宏:
- 点击 "+" 按钮
- 输入描述性名称(例如,"归零机器"、"启用空气辅助")
-
编写 G 代码:
- 每行是一个单独的 G 代码命令
- 注释以
;或(开头 - 可以使用变量(参见下面的变量替换)
-
保存宏
-
执行宏:
- 从宏列表中,点击宏
- 或分配键盘快捷键(如果支持)
宏示例
简单:归零机器
名称: 归零机器 代码:
$H
; 等待归零完成
用途: 在开始工作之前快速归零机器。
中等:设置工作偏移
名称: 将 G54 设置为当前位置 代码:
G10 L20 P1 X0 Y0
; 将 G54 工作坐标系原点设置为当前位置
用途: 将当前激光位置标记为作业原点。
高级:焦点测试网格
名称: 9 点焦点测试 代码:
; 用于找到最佳焦点的 9 点网格
G21 ; 毫米
G90 ; 绝对定位
G0 X10 Y10
M3 S1000
G4 P0.1
M5
G0 X20 Y10
M3 S1000
G4 P0.1
M5
; ...(对其余点重复)
用途: 在床的不同位置快速测试焦点。
钩子
钩子是由作业执行期间特定事件触发的自动 G 代码注入。
钩子触发器
Rayforge 支持这些钩子触发器:
| 触发器 | 何时运行 | 常见用途 |
|---|---|---|
| 图层开始 | 处理每个图层之前 | 工具更换、功率调整、注释 |
| 图层结束 | 处理每个图层之后 | 进度通知、暂停 |
| 工件开始 | 处理每个工件之前 | 零件编号、对齐标记 |
| 工件结束 | 处理每个工件之后 | 冷却、检查暂停 |
作业级 G 代码
作业开始和结束 G 代码通过方言的前导和后缀设置配置,而不是钩子。有关详细信息,请参阅 G 代码设置。
创建钩子
-
打开机器设置:
- 导航到 设置 → 机器 → 钩子
-
选择触发器:
- 选择此钩子应运行的事件
-
编写 G 代码:
- 钩子代码在触发点注入
- 使用变量获取动态值(见下文)
-
启用/禁用:
- 切换钩子开/关而不删除它们
钩子示例
图层开始:添加注释
触发器: 图层开始 代码:
; 开始图层:{layer_name}
; 图层索引:{layer_index}
目的: 使 G 代码更易于调试。
工件开始:零件编号
触发器: 工件开始 代码:
; 零件:{workpiece_name}
; 第 {workpiece_index} 个,共 {total_workpieces} 个
目的: 在多零件作业中跟踪进度。
钩子执行顺序
对于具有 2 个图层,每个图层有 2 个工件的作业:
[图层开始钩子](图层 1)
[工件开始钩子](工件 1)
... 工件 1 G 代码 ...
[工件结束钩子](工件 1)
[工件开始钩子](工件 2)
... 工件 2 G 代码 ...
[工件结束钩子](工件 2)
[图层结束钩子](图层 1)
[图层开始钩子](图层 2)
[工件开始钩子](工件 3)
... 工件 3 G 代码 ...
[工件结束钩子](工件 3)
[工件开始钩子](工件 4)
... 工件 4 G 代码 ...
[工件结束钩子](工件 4)
[图层结束钩子](图层 2)
变量替换
宏和钩子都支持变量替换以注入动态值。
可用变量
变量使用 {variable_name} 语法,在 G 代码生成期间替换。
作业级变量:
| 变量 | 描述 | 示例值 |
|---|---|---|
{job_name} | 当前作业/文档的名称 | "test-job" |
{date} | 当前日期 | "2025-10-03" |
{time} | 当前时间 | "14:30:25" |
图层级变量:
| 变量 | 描述 | 示例值 |
|---|---|---|
{layer_name} | 当前图层的名称 | "切割图层" |
{layer_index} | 当前图层的从零开始的索引 | 0, 1, 2... |
{total_layers} | 作业中的总图层数 | 3 |
工件级变量:
| 变量 | 描述 | 示例值 |
|---|---|---|
{workpiece_name} | 工件的名称 | "圆形 1" |
{workpiece_index} | 当前工件的从零开始的索引 | 0, 1, 2... |
{total_workpieces} | 总工件数 | 5 |
机器变量:
| 变量 | 描述 | 示例值 |
|---|---|---|
{machine_name} | 机器配置文件的名称 | "我的 K40" |
{max_speed} | 最大切割速度(mm/min) | 1000 |
{work_width} | 工作区域宽度(mm) | 300 |
{work_height} | 工作区域高度(mm) | 200 |
示例:进度通知
钩子: 图层开始 代码:
; ========================================
; 第 {layer_index} 层,共 {total_layers} 层:{layer_name}
; 作业:{job_name}
; 时间:{time}
; ========================================
G 代码中的结果:
; ========================================
; 第 0 层,共 3 层:切割图层
; 作业:test-project
; 时间:14:30:25
; ========================================
高级用例
多工具设置
对于具有多个激光器或工具的机器:
钩子: 工件开始 代码:
; 为工件 {workpiece_name} 选择工具
T{tool_number} ; 工具更换命令(如果支持)
G4 P1 ; 等待工具更换
条件暂停
添加可选的检查暂停:
钩子: 图层结束 代码:
; M0 ; 取消注释以在每个图层后暂停检查