3.2 KiB
3.2 KiB
iflow-engine 外部 API(第三方接入)
1) 获取构件树 getConstructTreeData()
所属模块
- 调用入口:
bimEngine.engine - 源码位置:
src/managers/engine-manager.ts
方法签名
getConstructTreeData(): {
level: EngineModelData[];
type: EngineModelData[];
major: EngineModelData[];
}
入参
- 无入参。
返回值
- 返回一个对象,包含三类构件树:
level: 楼层树type: 类型树major: 专业树
type EngineTreeNode = {
name?: string;
id?: string | null;
ids?: string[] | null;
children?: EngineTreeNode[] | null;
isLeaf?: boolean;
};
type EngineModelData = {
name?: string;
url: string;
children?: EngineTreeNode[] | null;
};
行为约定
- 当 3D 引擎未初始化(
engine.initialize(...)未成功)时,返回:
{ level: [], type: [], major: [] }
调用示例
const treeData = bimEngine.engine?.getConstructTreeData();
if (treeData) {
console.log('level tree:', treeData.level);
console.log('type tree:', treeData.type);
console.log('major tree:', treeData.major);
}
2) 获取构件信息 getComponentProperties(url, id, callback)
所属模块
- 调用入口:
bimEngine.engine - 源码位置:
src/managers/engine-manager.ts
方法签名
getComponentProperties(url: string, id: string, callback: (data: any) => void): void
入参
url: string:构件所属模型 URLid: string:构件 IDcallback: (data: any) => void:异步回调,返回构件属性
调用示例
bimEngine.engine?.getComponentProperties(modelUrl, componentId, (data) => {
console.log('component properties:', data);
});
3) 高亮指定构件 highlightModel(models)
所属模块
- 调用入口:
bimEngine.engine?.getEngineComponent() - 源码位置:
src/components/engine/index.ts
方法签名
highlightModel(models: { url: string; ids: number[] }[]): void
入参
models:构件列表(可批量)url: string:模型 URLids: number[]:要高亮的构件 ID 数组
调用示例
bimEngine.engine?.getEngineComponent()?.highlightModel([
{ url: modelUrl, ids: [350518] }
]);
4) 剖切指定构件(推荐流程)
当前引擎提供的是“剖切盒适配已高亮构件”的能力,推荐按两步调用:
- 先高亮目标构件:
highlightModel(...) - 再执行剖切盒适配:
fitSectionBoxToModel()
方法签名
fitSectionBoxToModel(): void
调用示例
const engineComp = bimEngine.engine?.getEngineComponent();
engineComp?.highlightModel([{ url: modelUrl, ids: [350518] }]);
engineComp?.fitSectionBoxToModel();
5) 隐藏其他构件 isolateModels(models)
所属模块
- 调用入口:
bimEngine.engine?.getEngineComponent() - 源码位置:
src/components/engine/index.ts
方法签名
isolateModels(models: { url: string; ids: number[] }[]): void
入参
models:要保留显示的构件(其他构件将隐藏)
调用示例
bimEngine.engine?.getEngineComponent()?.isolateModels([
{ url: modelUrl, ids: [350518] }
]);