后处理器
后处理器以机器所需的形式为其写出图纸:机器自己的 G-code 方言、文件头和文件尾、绘图仪的速度和压力、激光功率的代码。使用 文件 › 导出 › 导出 › 使用后处理器导出…:先选择后处理器,然后选择保存位置,再设置其选项。
后处理器有两种:
- 基于切割列表(
write):给出所有要切割的路径(以直线和圆弧表示),由后处理器自行写出全部文本。 - 基于内置输出(
base和edit):先写出标准的 G-code 或 HP-GL(使用其选项),再由后处理器修改其中的行。
在写出任何内容之前,都会像其他机器导出一样检查设计规则。
声明后处理器
postProcessor({
name: "Laser (G-code, no Z)",
description: "M3 / M5 round each cut.",
extension: "nc",
options: { feed: 1500, power: 1000 },
write(program, options) {
const out = ["G21", "G90"];
for (const job of program.jobs) {
if (job.drill || !job.cutting) continue;
out.push(`G0 X${job.segments[0].from.x} Y${job.segments[0].from.y}`, `M3 S${options.power}`);
for (const s of job.segments)
out.push(`G1 X${s.to.x} Y${s.to.y} F${options.feed}`);
out.push("M5");
}
out.push("M30");
return out;
}
});
| 属性 | 含义 |
|---|---|
name、description |
选择后处理器时显示的内容。 |
extension |
写出文件的扩展名(省略时为 nc;以 HPGL 为基础时为 plt)。 |
base |
"gcode" 或 "hpgl":以该导出的输出为基础。省略时:由 write 写出全部内容。 |
options |
其选项,在选择文件后显示。 |
write(program, options) |
没有基础输出时:返回文件的文本,或由其各行组成的数组。 |
edit(lines, program, options) |
有基础输出时:传入内置输出的各行;返回文本或由各行组成的数组。 |
newLine |
返回数组时各行之间的分隔符(省略时为 "\n";对于需要的机器为 "\r\n")。 |
options 是按名称保存所选值的对象:options.feed、options.power。
程序
无论后处理器属于哪种,program 都描述要切割的内容:
| 属性 | 含义 |
|---|---|
name |
图纸的文件名,不含扩展名(如果尚未保存则为 PIQ)。 |
units |
"mm" 或 "in"。 |
bounds |
所有切割内容的 {minX, minY, maxX, maxY}(如果没有切割内容则为 null)。 |
jobs |
每条路径一个作业,按内置导出的切割顺序排列。 |
每个作业包含:
| 属性 | 含义 |
|---|---|
element |
其来源图元:"@12"。 |
layer、layerName |
其图层的编号和名称。 |
cutting |
该图层是否切穿(而不是压痕、划痕、绘制……)。 |
tool |
图元切削所用的刀具设置(先是其自身的设置,然后是其图层在生产 › 工具选项中的设置):number、name、diameter、spindleSpeed、clockwise、feedRate、plungeRate、startDepth、depth、stepDown、safeHeight、side、coolant、holeDiameter、peckDepth、dwell、pocket("zigzag"、"spiral" 或 "contour":该图元要挖槽,而不是沿线切割)、stepOver;或为 null。 |
drill |
为 true 表示要钻的孔;此时还有 at(其中心)和 diameter。 |
closed |
路径是否回到起点。 |
segments |
按顺序排列的路径:{type: "line", from, to} 或 {type: "arc", from, to, centre, radius, clockwise}。曲线(贝塞尔曲线、椭圆、样条曲线)以误差在 0.01 以内的圆弧和直线给出。 |
位置为图纸单位下的 {x, y}。
应用自带的示例
- Laser (G-code, no Z):根据切割列表写出 G-code,在每次切割前后开启(
M3 S…)和关闭(M5)光束,圆弧以带I和J的G2/G3写出,仅在要求时切割压痕线。 - G-code with header and footer:内置 G-code,在其开头和结尾加上您自己的行(行之间用
|分隔)、日期,并可根据需要省略注释。 - HPGL cutting plotter:内置 HPGL,在每次换笔后加上速度(
VS)和压力(FS)。
它们所在的文件 machines.js 位于应用的 Extensions 文件夹中:是编写您自己后处理器的良好起点。
说明
- 出错时会显示文件和行号:
machines.js, line 31: options.feed is not a number。 print(…)和console.log(…)在交互窗口中显示值,可用于查看程序中的内容。- 后处理器可以读取图纸的变量(
variable("L"))和点(getPoint(4)),但不能更改图纸。
要通过电子邮件发送后处理器的输出而不是保存它,请使用文件 › 通过电子邮件发送 › 使用后处理器导出…:请参阅通过电子邮件发送导出文件。 另请参阅:扩展、G-code、HP-GL、 绘图 API。