插件开发
大约 1 分钟
插件开发
WebCAD 插件系统,支持扩展功能、添加命令、定制 UI。
在线示例
| 示例 | 描述 | 链接 |
|---|---|---|
| 基本插件 | 插件结构示例 | 在线演示{target="_blank"} |
| 校验插件 | 数据校验示例 | 在线演示{target="_blank"} |
| 标准插件 | PluginManager 标准写法(参考 @webcad-plugins/tools-plugin) | 在线演示{target="_blank"} |
插件结构
基本插件
// plugin.js
export default {
name: 'my-plugin',
version: '1.0.0',
// 插件初始化
install(context) {
// 注册命令
context.registerCommand({
name: 'MYPLUGIN_CMD',
description: '我的插件命令',
execute: async () => {
// 命令逻辑
}
});
// 添加菜单
context.addRibbonButton({
tab: '插件',
panel: '我的插件',
text: '功能按钮',
command: 'MYPLUGIN_CMD'
});
},
// 插件卸载
uninstall(context) {
// 清理资源
}
};插件清单
{
"name": "my-plugin",
"version": "1.0.0",
"description": "我的 WebCAD 插件",
"main": "plugin.js",
"webcad": {
"minVersion": "1.0.0"
}
}核心 API
插件上下文
// context 提供的 API
context.registerCommand(cmdDef); // 注册命令
context.unregisterCommand(name); // 取消命令
context.addRibbonButton(config); // 添加 Ribbon 按钮
context.addContextMenuItem(config); // 添加右键菜单项
context.getEngine(); // 获取 Engine 实例
context.getDocument(); // 获取当前文档加载插件
const { PluginManager } = vjcad;
// 从 URL 加载插件
await PluginManager.loadPlugin('https://example.com/my-plugin.js');
// 卸载插件
PluginManager.unloadPlugin('my-plugin');
// 获取已加载的插件
const plugins = PluginManager.getLoadedPlugins();