Plugin Development
Less than 1 minute
Plugin Development
WebCAD plugin system for extending features, adding commands, and customizing the UI.
Online Examples
| Example | Description | Link |
|---|---|---|
| Basic Plugin | Example plugin structure | Online Demo{target="_blank"} |
| Validation Plugin | Data validation example | Online Demo{target="_blank"} |
| Standard Plugin | Standard PluginManager pattern (see @webcad-plugins/tools-plugin) | Online Demo{target="_blank"} |
Plugin Structure
Basic Plugin
// plugin.js
export default {
name: 'my-plugin',
version: '1.0.0',
// Plugin initialization
install(context) {
// Register command
context.registerCommand({
name: 'MYPLUGIN_CMD',
description: 'My plugin command',
execute: async () => {
// Command logic
}
});
// Add menu
context.addRibbonButton({
tab: 'Plugins',
panel: 'My Plugin',
text: 'Feature Button',
command: 'MYPLUGIN_CMD'
});
},
// Plugin unload
uninstall(context) {
// Clean up resources
}
};Plugin Manifest
{
"name": "my-plugin",
"version": "1.0.0",
"description": "My WebCAD plugin",
"main": "plugin.js",
"webcad": {
"minVersion": "1.0.0"
}
}Core API
Plugin Context
// APIs provided by context
context.registerCommand(cmdDef); // Register command
context.unregisterCommand(name); // Unregister command
context.addRibbonButton(config); // Add Ribbon button
context.addContextMenuItem(config); // Add context menu item
context.getEngine(); // Get Engine instance
context.getDocument(); // Get current documentLoad Plugin
const { PluginManager } = vjcad;
// Load plugin from URL
await PluginManager.loadPlugin('https://example.com/my-plugin.js');
// Unload plugin
PluginManager.unloadPlugin('my-plugin');
// Get loaded plugins
const plugins = PluginManager.getLoadedPlugins();