0.6.0 • Published 1 week ago
@glodon-ecs/web-bridge-sdk
Licence
ISC
Version
0.6.0
Deps
0
Size
163 kB
Vulns
0
Weekly
0
ECS-BRIDGE-SDK
ECSHub Panel 存在与多个宿主环境交互的场景,因此抽离出桥接的 SDK,以适配不同宿主环境。
已支持:
- [√] SketchUp
- QT
- Web(for test)
- Rhino
- [√] Concetto
- [√] ConcettoWeb
前置项
- 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 | 日志对象类型 |