@glodon-ecs/web-bridge-sdk
v0.4.0
Published
ecs web-bridge-sdk
Readme
ECS-BRIDGE-SDK
ECSHub Panel 存在与多个宿主环境交互的场景,因此抽离出桥接的 SDK,以适配不同宿主环境。
已支持:
- [x] SketchUp
- [ ] QT
- [ ] Web(for test)
- [ ] Rhino
- [x] Concetto
前置项
- node >= 16
安装
npm install @glodon-ecs/web-bridge-sdk使用示例
import ECSHubBridge, { BridgeEnv } from '@glodon-ecs/web-bridge-sdk';
// 或使用命名导入:import { ECSHubBridge, BridgeEnv } from "@glodon-ecs/web-bridge-sdk";
// 使用示例
async function main() {
// initialize 方法需要先被调用
// await ECSHubBridge.initialize(); // 自动检测初始化,QT、SU、Web环境
const options = { env: BridgeEnv.sketchup, logger: window.console }; // options 可选
await ECSHubBridge.initialize(options);
const bridge = ECSHubBridge.getInstance();
// 调用方法
const data = await bridge.callMethod('getInitialData', 'param1');
// 订阅
const unsubscribe = bridge.subscribe('modelChanged', (data) => {});
// 取消订阅
unsubscribe();
}扩展适配器
继承
BaseAdapter并实现三个抽象方法
import { BaseAdapter } from '@glodon-ecs/web-bridge-sdk';
import type { LoggerType } from '@glodon-ecs/web-bridge-sdk';
class CADAdapter extends BaseAdapter {
// 初始方法
async init() {
this.client = window.CADPlugin; // 假设第三方CAD插件
}
// 调用内部函数
async call(method: string, args: unknown[]) {
return this.client.execCommand(method, ...args);
}
// 注册事件监听
onEvent(event: string, callback: (...args: unknown[]) => void) {
this.client.on(event, callback);
return () => this.client.off(event, callback);
}
}
// 注入自定义适配器
await ECSHubBridge.initialize();
ECSHubBridge.setAdapter(new CADAdapter(), 'cad');
// 设置自定义适配器的 client 交互对象,如 ecsClient
await ECSHubBridge.initialize();
ECSHubBridge.setAdapterClient(client);导出列表
| 导出 | 类型 | 说明 |
| --------------- | --------------- | ---------------------------------------------------------- |
| ECSHubBridge | class (default) | 桥接器主类 |
| BridgeEnv | enum | 环境枚举:qt / web / sketchup / concetto / rhino |
| BaseAdapter | abstract class | 适配器基类,扩展适配器时继承 |
| BridgeOptions | interface | 初始化配置项类型 |
| LoggerType | type | 日志对象类型 |
