扩展
扩展用 JavaScript 为 ParametriQ CAD 添加功能:为机器生成其所需 G-code 和 HPGL 的后处理器、在切割前检查图纸的设计规则、根据几个尺寸构建新参数化图纸的模板,对图纸内容进行计数和测量的报表,以及每次保存图纸时将其记录到别处的保存扩展。有些扩展随应用提供;您可以修改它们,也可以编写自己的扩展。
| 类型 | 声明方式 | 使用位置 |
|---|---|---|
| 后处理器 | postProcessor({…}) |
文件 › 导出 › 导出 › 使用后处理器导出… |
| 设计规则 | designRule({…}) |
文件 › 检查设计,以及每次机器导出之前 |
| 模板 | template({…}) |
文件 › 扩展 › 从模板新建… |
| 报表 | drawingReport({…}) |
文件 › 报表… |
| 保存扩展 | onSave({…}) |
每次文件 › 保存和另存为… |
| 相机对位 | cameraRegistration({…}) |
通过文件 › 使用机器配置文件发送发送到指定了它的机器配置文件时 |
| 命令(位于扩展包中) | command({…}) |
其菜单项和工具栏按钮、快捷键、文件 › 扩展 › 运行命令… |
| 菜单和工具栏(位于扩展包中) | uiExtension({…}) |
应用启动时的菜单和工具栏 |
所有这些扩展都使用图纸 API,与图纸中的 JavaScript 函数所用的相同:图纸的变量和点,以及创建点和图元的函数。
自动化脚本使用同一 API 在不打开应用窗口的情况下打开、修改、导出和保存图纸,可供订单系统或数据库系统使用,也可用于批量处理文件:在命令行中用 PiQ run script.js 运行,或使用 文件 › 扩展 › 运行脚本…。
扩展的存放位置
扩展文件是一个声明一个或多个扩展的 JavaScript .js 文件。ParametriQ CAD 启动时会读取两个文件夹中的每个
.js 文件:
- 程序自带的
Extensions文件夹,位于程序旁边:其中包含随程序提供的后处理器、规则、模板和报表。 - 您自己的:文件 › 扩展 › 打开扩展文件夹 可打开它(首次使用时会创建它)。请将您自己的文件放在这里;应用更新时这些文件会被保留。
修改文件后,请使用 文件 › 扩展 › 重新加载扩展:它会重新读取所有文件,并报告每种类型各找到了多少个。无法读取的文件会被忽略,消息中会说明是哪个文件、哪一行以及原因。
包含 manifest.json 的文件夹是一个扩展包:它将脚本、各语言的字符串和图标连同其使用的权限放在一起。扩展包可以向窗口添加命令、菜单项、工具栏按钮和对话框,也可以隐藏应用自带的这些内容,形成精简的工作区;文件 › 扩展 › 管理扩展… 可分别启用或停用每个扩展包。
这些文件夹还存放应用的其他库,每个库位于各自的文件夹中:Parametric 存放用于运行参数化的图纸,
Parts 用于零件面板,Materials 用于 文件 › 新建(参见材料),
Appearances 用于 3D 页面的材质(参见外观),而 Ask Claude.md 用于询问 Claude。材料和外观有各自的编辑器:文件 › 扩展 › 材料… 和 文件 › 扩展 › 外观… 可查看应用自带的内容、创建您自己的副本并修改您的副本,无需手动编辑其文件。文件 › 扩展 › 生成缩略图… 为您自己的 Parametric 图纸生成运行参数化所显示的图片(参见运行参数化)。
要修改应用自带的扩展,请将其文件复制到您的文件夹,重命名,然后修改副本(为其中的扩展起新名称,否则两个版本都会被列出)。
扩展文件示例
// my-shop.js
postProcessor({
name: "Router 2",
base: "gcode",
options: { header: "(Router 2)" },
edit(lines, program, options) {
return [options.header, ...lines];
}
});
designRule({
name: "Nothing outside the sheet",
check(drawing) {
for (const e of drawing.elements)
if (e.bounds.maxX > 1600 || e.bounds.maxY > 1200)
report(`${e.id} is off the 1600 × 1200 sheet`, [e]);
}
});
每个声明都是一个对象,包含一个 name(显示在菜单和消息中)、一个可选的 description(选择时显示)以及该类型所需的内容。文件顶层的代码(常量、辅助函数)在读取文件时运行一次,可供文件中的所有内容共享。
选项
后处理器、报表和模板可以要求提供设置:后处理器和报表称为 options,模板称为 parameters。每项设置显示为对话框中的一行,所做的选择会被记住以供下次使用。以对象形式给出,每项设置一个属性:
options: {
feed: { label: "Feed", type: "number", value: 1500, min: 1, max: 20000, unit: "mm/min",
description: "Used when an element has no tool feed of its own." },
coolant: { label: "Coolant", type: "bool", value: false },
header: { label: "Header", type: "text", value: "(Machine 1)" },
machine: { label: "Machine", type: "choice", values: ["Small", "Large"], value: "Large" }
}
| 属性 | 含义 |
|---|---|
label |
该行显示的文字(省略时为属性名)。 |
type |
"number"、"bool"、"text" 或 "choice"(省略时根据值判断,如果有 values 则为 "choice")。 |
value |
初始值。 |
values |
选择项的各个选项。 |
min, max |
数字的上下限。 |
unit |
显示在数字之后。 |
description |
显示在标签下方。 |
简写形式:feed: 1500 是数字,coolant: false 是开关,header: "(M1)" 是文本,
machine: ["Small", "Large"] 是选择项(初始选中第一个)。
扩展能做什么
扩展在沙盒中运行。它们可以通过图纸 API读取和创建几何图形,此外别无他能:不能访问计算机的文件、网络、程序或设置。如果一次调用执行超过一百万条语句或超过十秒、递归调用深度超过 200 层,或占用内存过多,调用就会停止。与图纸中的 JavaScript 函数不同,扩展可以使用 Date 和 Math.random()
(后处理器可以为其输出标注日期)。
设计规则、报表、后处理器和保存扩展只读取图纸:试图修改图纸的扩展会被停止并给出消息。模板的图纸是新建的,可以按其需要随意创建。
另请参见:图纸 API、JavaScript 函数、 G-code、HP-GL。