保存扩展
每次保存图纸(文件 › 保存或另存为…)时,在文件写入之后都会运行保存扩展。它会获得有关图纸的所有已知信息(图纸是什么、备注、变量、图层、元素和合计)以及所写入的文件,因此可以把图纸记录到别处:例如图纸索引或数据库。
声明保存扩展
onSave({
name: "Drawing index",
description: "What each drawing is, for the database.",
saved(drawing, file) {
print(`Indexed ${file.fileName}`);
return {
file: file.path,
saved: file.saved,
category: drawing.classification.category,
style: drawing.classification.style,
tags: drawing.classification.tags,
customer: drawing.notes["Customer"] ?? null,
length: drawing.variables.L,
cut: drawing.totals.lengthByLayer["Cut"] ?? 0
};
}
});
| 属性 | 含义 |
|---|---|
name、description |
在消息中显示的名称,以及它的作用。 |
saved(drawing, file) |
图纸保存后运行。 |
drawing 是有关图纸的所有已知信息,与 drawingInfo() 返回的内容相同。file 是所写入的文件:
| 属性 | 含义 |
|---|---|
path |
完整路径。 |
name、fileName、folder |
不含和包含扩展名的文件名,以及所在文件夹。 |
format |
小写的扩展名:"piq"。 |
size |
以字节为单位的大小。 |
saved |
保存时间(UTC):"2026-11-03T14:05:00Z"。 |
user、machine |
保存者及所用计算机。 |
返回内容
saved 返回的内容(对象、数组或文本)会以 JSON 形式随图纸窗口保留,供应用程序转交;不返回任何内容也可以。如果您保留了图纸索引,返回内容也会随图纸的条目(saveExtensions)写入其中。扩展运行在沙箱中:扩展本身无法访问数据库或文件。用 print(…) 或 console.log(…) 打印的内容会显示在交互窗口中。
说明
- 每次保存时,所有保存扩展会依次运行。某个扩展出错时,会在交互窗口中说明,并给出文件和行号;图纸照常保存,其他扩展仍会运行。
- 保存扩展只能查看图纸:若试图更改图纸(
setNote、classify、line…),会被停止并给出消息。 - 文件 › 扩展 › 重新加载扩展会显示找到的保存扩展数量。