Files
bim_engine/docs/外部API总览.md
2026-04-14 10:16:37 +08:00

3.2 KiB
Raw Blame History

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:构件所属模型 URL
  • id: string:构件 ID
  • callback: (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:模型 URL
    • ids: number[]:要高亮的构件 ID 数组

调用示例

bimEngine.engine?.getEngineComponent()?.highlightModel([
  { url: modelUrl, ids: [350518] }
]);

4) 剖切指定构件(推荐流程)

当前引擎提供的是“剖切盒适配已高亮构件”的能力,推荐按两步调用:

  1. 先高亮目标构件:highlightModel(...)
  2. 再执行剖切盒适配: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] }
]);