Files
bim_engine/docs/ENGINNE_3D/API文档.md
yuding b96e5f3262 refactor: slim down EngineManager from 861 to 290 lines by removing passthrough proxy pattern
- EngineManager now only exposes public SDK API (initialize, loadModel, pause/resumeRendering, getEngineComponent, destroy)
- Internal managers access Engine component directly via this.engineComponent getter on BaseManager
- Non-manager components use registry.engine3d.getEngineComponent() for direct Engine access
- Replaced getEngine() with onRawEvent()/offRawEvent() for raw engine event access
- Migrated 62 call sites across 13 files (9 managers, 1 panel, 3 toolbar buttons)
- Updated all architecture docs, API docs, and README to reflect new patterns
2026-03-05 11:15:57 +08:00

28 KiB
Raw Blame History

BIM Engine SDK API 文档

本文档为 BIM Engine SDK 的完整 API 参考,适合大模型阅读和理解引擎的功能结构。

2026-03 更新说明SDK 接入层)

本文档主体描述的是底层 3D 内核与模块能力。SDK 接入层在本次重构后有以下关键变化:

  1. EngineManager 已收敛为少量公共 API不再作为全量透传层。
  2. SDK 内部 Manager 统一通过 BaseManager.engineComponent 直接访问 Engine 组件能力。
  3. 非 Manager 组件通过 registry.engine3d?.getEngineComponent()?.xxx() 访问 Engine 组件。
  4. Engine.getEngine() 已移除,原始事件访问改为 onRawEvent()/offRawEvent()

若你在接入层实现新功能,请优先参考:

  • docs/架构设计.md
  • docs/API调用链.md
  • docs/引擎API对接.md

目录

  1. 核心引擎类
  2. 基础模块
  3. 功能管理器
  4. 状态管理

1. 核心引擎类

EngineKernelV2

引擎核心组件,负责整合和管理所有模块。

文件路径: src/core/v2/EngineKernel.ts

构造函数

constructor(options: any)

参数:

  • options.containerId: string - 容器元素的 ID

功能:

  • 初始化所有基础模块(场景、相机、渲染器、控制器等)
  • 初始化所有功能管理器(测量、剖切、模型树等)
  • 设置渲染循环
  • 添加性能监视器

公共属性

// 基础对象
public scene: THREE.Scene | null                    // 三维场景
public camera: THREE.Camera | null                  // 当前使用的相机
public renderer: THREE.WebGLRenderer | null         // 渲染器
public controls: any                                // 控制器(轨道控制或第一人称)

// 基础模块
public sceneModule: SceneModule                     // 场景模块
public cameraModule: CameraModule                   // 相机模块
public deviceModule: DeviceModule                   // 设备模块
public renderModule: RenderModule                   // 渲染模块
public controlModule: ControlModule                 // 控制模块
public composerModule: ComposerModule               // 合成器模块
public loaderModule: LoaderModule                   // 加载器模块
public lightModule: LightModule                     // 光照模块
public interactionModule: InteractionModule         // 交互模块
public modelToolModule: ModelToolModule             // 模型工具模块

// 功能管理器
public viewCube: ViewCube                           // 视图立方体
public rangeScale: RangeScale                       // 范围缩放
public setting: Setting                             // 设置
public measure: Measure                             // 测量
public clipping: Clipping                           // 剖切
public modelTree: ModelTree                         // 模型树
public engineInfo: EngineInfo                       // 引擎信息统计
public modelProperties: ModelProperties             // 模型属性
public modelMapperBatch: ModelMapperBatch           // 模型批量映射
public modelEdge: ModelEdge                         // 模型边线

// 状态管理
public engineStatus: EngineStatus                   // 引擎状态
public events: EventModule                          // 事件模块

// 业务数据
public models: any[]                                // 已加载的模型数组
public reactBoundingClientRect: { left: number; top: number }  // 容器的边界矩形

公共方法

pauseRendering()
public pauseRendering(): void

功能: 暂停渲染循环

  • 停止动画帧请求
  • 禁用控制器
  • 用于性能优化或后台运行
resumeRendering()
public resumeRendering(): void

功能: 恢复渲染循环

  • 重新启动动画帧请求
  • 恢复控制器状态
isRenderingPausedState()
public isRenderingPausedState(): boolean

功能: 检查渲染是否暂停

返回值: boolean - true 表示已暂停

dispose()
public dispose(): void

功能: 销毁引擎,释放所有资源

  • 停止渲染循环
  • 清理所有模块
  • 释放几何体、材质、纹理
  • 移除 DOM 元素
  • 清理事件监听器

注意: 调用此方法后引擎不可再使用


2. 基础模块

2.1 SceneModule - 场景模块

文件路径: src/core/v2/modules/sceneModule.ts

公共属性

public scene: THREE.Scene | null  // 三维场景对象

功能:

  • 创建并管理 THREE.Scene
  • 初始化边线组groupEdge用于存储模型边线

2.2 CameraModule - 相机模块

文件路径: src/core/v2/modules/cameraModule.ts

公共属性

public perspectiveCamera: THREE.PerspectiveCamera    // 透视相机
public orthographicCamera: THREE.OrthographicCamera  // 正交相机

公共方法

switchCurrentCamera()
public switchCurrentCamera(): void

功能: 切换当前相机类型(透视 ↔ 正交)

switchToPerspectiveCamera()
public switchToPerspectiveCamera(): void

功能: 切换到透视相机

  • 保持当前位置和目标点
  • 更新控制器
  • 重新初始化合成器
switchToOrthographicCamera()
public switchToOrthographicCamera(): void

功能: 切换到正交相机

  • 保持当前位置和目标点
  • 更新控制器
  • 重新初始化合成器
getCameraType()
public getCameraType(): CameraType

功能: 获取当前相机类型

返回值:

  • CameraType.PERSPECTIVE - 透视相机
  • CameraType.ORTHOGRAPHIC - 正交相机
getCameraPose()
public getCameraPose(): ICameraPose

功能: 获取当前相机姿态(位置、旋转、目标点、缩放等)

返回值: ICameraPose 对象

interface ICameraPose {
    type: CameraType;
    position: { x: number; y: number; z: number };
    rotation: { x: number; y: number; z: number };
    quaternion: { x: number; y: number; z: number; w: number };
    target?: { x: number; y: number; z: number };
    zoom?: number;
}
restoreCameraPose()
public restoreCameraPose(pose: ICameraPose): void

功能: 通过相机姿态还原相机位置

  • 自动切换相机类型
  • 恢复位置、旋转、目标点
  • 恢复正交相机的缩放值

参数:

  • pose: ICameraPose - 相机姿态对象

2.3 DeviceModule - 设备模块

文件路径: src/core/v2/modules/deviceModule.ts

公共属性

public deviceType: string  // 设备类型(默认 'PC'

公共方法

getDeviceType()
public getDeviceType(): string

功能: 获取设备类型

返回值: 'PC' 或其他设备标识

getContainerSize()
public getContainerSize(): { width: number; height: number }

功能: 获取容器尺寸

返回值: 容器的宽度和高度


2.4 RenderModule - 渲染模块

文件路径: src/core/v2/modules/renderModule.ts

公共属性

public renderer: THREE.WebGLRenderer | null  // WebGL 渲染器

公共方法

createRenderer()
public createRenderer(): THREE.WebGLRenderer

功能: 创建并配置 WebGL 渲染器

  • 启用抗锯齿
  • 启用阴影映射PCFSoftShadowMap
  • 启用本地裁剪(用于剖切平面)
  • 配置色彩空间和色调映射

返回值: 配置好的渲染器实例

disposeRenderer()
public disposeRenderer(): void

功能: 释放渲染器资源


2.5 ControlModule - 控制模块

文件路径: src/core/v2/modules/controlModule.ts

公共属性

public orbitControls: any          // 轨道控制器
public firstPersonControls: any    // 第一人称控制器
public isActive: boolean           // 控制器是否激活

公共方法

init()
public init(): void

功能: 初始化控制器

  • 创建轨道控制器和第一人称控制器
  • 创建旋转中心指示器 UI
active()
public active(): void

功能: 激活控制器

disActive()
public disActive(): void

功能: 禁用控制器

switchFirstPersonMode()
public switchFirstPersonMode(): void

功能: 切换到第一人称漫游模式

  • 禁用轨道控制器
  • 启用第一人称控制器
switchDefaultMode()
public switchDefaultMode(): void

功能: 切换到默认模式(轨道控制)

  • 禁用第一人称控制器
  • 启用轨道控制器
update()
public update(): void

功能: 更新控制器状态

  • 更新旋转中心指示器位置
  • 在渲染循环中调用

2.6 ComposerModule - 合成器模块

文件路径: src/core/v2/modules/composerModule.ts

公共属性

public composer: any  // 效果合成器

公共方法

init()
public init(): void

功能: 初始化后处理管线

  • RenderPass - 基础渲染
  • GTAOPass - 环境光遮蔽(默认禁用)
  • UnrealBloomPass - 辉光效果(默认禁用)
  • SaturationPass - 饱和度和对比度调整
  • OutputPass - 色调映射和颜色校正
  • FXAAPass - 抗锯齿
resize()
public resize(): void

功能: 调整合成器大小

  • 更新所有 pass 的分辨率
  • 更新 FXAA 的分辨率参数

2.7 LoaderModule - 加载器模块

文件路径: src/core/v2/modules/loaderModule.ts

公共方法

loadModels()
async loadModels(urls: string[], options?: LoadModelOptions): Promise<void>

功能: 加载多个模型

  • 支持轻量化模型格式
  • 支持 GLTF/GLB 格式
  • 异步加载

参数:

  • urls: string[] - 模型 URL 数组
  • options: LoadModelOptions - 加载选项(可选)

2.8 EventModule - 事件模块

文件路径: src/core/v2/modules/eventModule.ts

公共方法

on()
on<T = any>(event: EventType, callback: (data: T) => void): void

功能: 注册事件监听器

参数:

  • event: EventType - 事件类型
  • callback: 回调函数
off()
off<T = any>(event: EventType, callback: (data: T) => void): void

功能: 移除事件监听器

参数:

  • event: EventType - 事件类型
  • callback: 要移除的回调函数
trigger()
trigger(event: EventType, data?: any): void

功能: 触发事件

参数:

  • event: EventType - 事件类型
  • data: 传递给监听器的数据

常用事件类型:

  • EventType.Click - 点击事件
  • EventType.ViewportResize - 视口大小改变
  • EventType.EngineFree - 引擎空闲
  • EventType.EngineBusy - 引擎繁忙

2.9 LightModule - 光照模块

文件路径: src/core/v2/modules/lightModule.ts

公共方法

init()
public init(): void

功能: 初始化场景基本光照

  • 添加定向光DirectionalLight
    • 强度: 2
    • 位置: (10, 20, 10)
    • 阴影贴图: 4096x4096高质量
  • 添加环境光AmbientLight
    • 强度: 1

2.10 InteractionModule - 交互模块

文件路径: src/core/v2/modules/interactionModule.ts

公共方法

init()
public init(): void

功能: 初始化交互行为处理器

active()
public active(): void

功能: 激活交互功能

disActive()
public disActive(): void

功能: 禁用交互功能

handleMouseClick()
public handleMouseClick(event: any): void

功能: 处理鼠标单击事件

  • 射线检测点击的模型
  • 高亮选中的模型
  • 设置旋转中心
  • 支持 Ctrl 多选
handleMouseDoubleClick()
public handleMouseDoubleClick(event: any): void

功能: 处理鼠标双击事件

  • 双击模型后缩放到该模型
  • 计算模型包围盒并调整相机视角
handleMouseClickInstance()
public handleMouseClickInstance(raycaster: any): any

功能: 判断点击实例化网格节点

参数:

  • raycaster: 射线投射器

返回值: 相交结果数组


2.11 ModelToolModule - 模型工具模块

文件路径: src/core/v2/modules/modelToolModule.ts

公共方法

highlightModel()
public highlightModel(models: any): void

功能: 设置模型高亮显示

参数:

  • models: 模型数组,格式: [{url: string, ids: string[]}]
unhighlightModel()
public unhighlightModel(models: any): void

功能: 取消模型高亮

参数:

  • models: 模型数组
unhighlightAllModels()
public unhighlightAllModels(): void

功能: 取消所有模型高亮

hideModel()
public hideModel(models: any): void

功能: 隐藏模型

参数:

  • models: 模型数组,格式: [{url: string, ids: string[]}]
showModel()
public showModel(models: any): void

功能: 显示模型

参数:

  • models: 模型数组
isolateModel()
public isolateModel(models: any): void

功能: 隔离模型(只显示指定模型,隐藏其他)

参数:

  • models: 要显示的模型数组
showAllModels()
public showAllModels(): void

功能: 显示所有模型

getModelsBox()
public getModelsBox(models: any): THREE.Box3

功能: 获取模型的包围盒

参数:

  • models: 模型数组

返回值: THREE.Box3 包围盒对象


3. 功能管理器

3.1 ViewCube - 视图立方体

文件路径: src/core/v2/managers/viewCube/index.ts

公共属性

public cubeTool: any  // 视图立方体工具

公共方法

init()
public init(): void

功能: 初始化视图立方体

  • 创建 3D 小立方体辅助视图
  • 支持六个面和边角视图切换
CameraGoHome()
public CameraGoHome(): void

功能: 相机回归正位(默认视角)

zoomToModel()
public zoomToModel(box: THREE.Box3): void

功能: 缩放到指定模型包围盒

参数:

  • box: THREE.Box3 - 目标包围盒

3.2 RangeScale - 范围缩放工具

文件路径: src/core/v2/managers/rangeScale/index.ts

公共方法

init()
public init(): void

功能: 初始化范围缩放工具

  • 创建绘制框 UI 元素
  • 初始化坐标转换工具
active()
public active(): void

功能: 激活范围缩放工具

  • 禁用控制器
  • 启用框选功能
  • 鼠标变为十字光标

使用方式:

  1. 激活工具
  2. 鼠标拖拽绘制矩形区域
  3. 松开鼠标自动缩放到该区域
  4. 按 ESC 键退出
disActive()
public disActive(): void

功能: 停用范围缩放工具

  • 恢复控制器
  • 移除事件监听

3.3 Setting - 设置管理器

文件路径: src/core/v2/managers/setting/index.ts

公共方法

setStatsVisible()
public setStatsVisible(visible: boolean): void

功能: 显示/隐藏性能监视器

参数:

  • visible: true 显示false 隐藏
setAmbientLightIntensity()
public setAmbientLightIntensity(intensity: number): void

功能: 设置环境光照强度

参数:

  • intensity: 光照强度,范围 0-5
setAmbientLightColor()
public setAmbientLightColor(color: number | string): void

功能: 设置环境光照颜色

参数:

  • color: 颜色0xffffff 或 '#ffffff'
setDirectionalLightIntensity()
public setDirectionalLightIntensity(intensity: number): void

功能: 设置定向光源强度

参数:

  • intensity: 光照强度,范围 0-5
setDirectionalLightColor()
public setDirectionalLightColor(color: number | string): void

功能: 设置定向光源颜色

参数:

  • color: 颜色
setShadowQuality()
public setShadowQuality(quality: 'low' | 'medium' | 'high' | 'ultra'): void

功能: 设置阴影精细度

参数:

  • quality: 质量等级
    • 'low': 1024
    • 'medium': 2048
    • 'high': 4096
    • 'ultra': 8192
setDirectionalLightShadow()
public setDirectionalLightShadow(enabled: boolean): void

功能: 开启/关闭定向光阴影

参数:

  • enabled: true 开启false 关闭
setGTAOEnabled()
public setGTAOEnabled(enabled: boolean): void

功能: 开启/关闭 GTAO 环境光遮蔽

参数:

  • enabled: true 开启false 关闭
setSceneSaturation()
public setSceneSaturation(saturation: number): void

功能: 设置场景饱和度

参数:

  • saturation: 饱和度值1.0 为正常,推荐范围 0.5-2.0
setSceneContrast()
public setSceneContrast(contrast: number): void

功能: 设置场景对比度

参数:

  • contrast: 对比度值1.0 为正常,推荐范围 0.5-2.0
setGroundEnabled()
public setGroundEnabled(enabled: boolean, options?: {
    size?: number;
    color?: number | string;
    opacity?: number;
}): void

功能: 开启/关闭地面

参数:

  • enabled: true 开启false 关闭
  • options: 地面配置选项
    • size: 地面大小(默认 100
    • color: 地面颜色(默认 0x808080
    • opacity: 透明度(默认 0.3
setHDRBackground()
public setHDRBackground(hdrTexture: THREE.Texture | null): void

功能: 设置 HDR 背景

参数:

  • hdrTexture: HDR 环境贴图null 则移除

3.4 Measure - 测量工具

文件路径: src/core/v2/managers/measure/index.ts

公共方法

active()
public active(): void

功能: 激活测量工具

disActive()
public disActive(): void

功能: 停用测量工具

  • 清除所有测量
  • 恢复点选功能
clearAllPoints()
public clearAllPoints(): void

功能: 清空所有测量点

clearAll()
public clearAll(): void

功能: 清除所有测量标注

update()
update(): void

功能: 更新测量标注

  • 在渲染循环中调用
  • 更新屏幕坐标

测量类型:

  • 距离测量DistanceMeasure
  • 净高测量ClearHeightMeasure
  • 净距测量ClearDistanceMeasure
  • 标高测量ElevationMeasure
  • 点测量PointMeasure
  • 角度测量AngleMeasure
  • 面积测量AreaMeasure
  • 坡度测量SlopeMeasure

3.5 Clipping - 剖切管理器

文件路径: src/core/v2/managers/clipping/index.ts

公共属性

public sectionPlaneX: any  // X 轴剖切平面
public sectionPlaneY: any  // Y 轴剖切平面
public sectionPlaneZ: any  // Z 轴剖切平面
public sectionBox: any     // 剖切盒

公共方法

init()
public init(): void

功能: 初始化剖切管理器

  • 创建 6 个剖切平面(前、后、左、右、顶、底)
  • 初始化 X/Y/Z 轴剖切工具
  • 初始化剖切盒工具
disActive()
public disActive(): void

功能: 停用所有剖切工具


3.6 ModelTree - 模型树

文件路径: src/core/v2/managers/modelTree/index.ts

公共方法

getTreeData()
public getTreeData(): any[]

功能: 获取模型树数据

返回值: 模型树数组

[{
    name: string,        // 模型名称
    children: any[]      // 模型层级树
}]

3.7 EngineInfo - 引擎信息统计

文件路径: src/core/v2/managers/engineInfo/index.ts

公共方法

getEngineInfo()
public getEngineInfo(): {
    totalVertices: number;
    totalTriangles: number;
    meshCount: number;
}

功能: 获取引擎统计信息

  • 统计所有网格的顶点数
  • 统计所有网格的三角面数
  • 统计网格数量

返回值:

  • totalVertices: 总顶点数
  • totalTriangles: 总三角面数
  • meshCount: 网格数量

3.8 ModelProperties - 模型属性

文件路径: src/core/v2/managers/modelProperties/index.ts

公共方法

getModelProperties()
public getModelProperties(url: string, id: string, callback: (properties: any) => void): void

功能: 查询构件属性

  • 异步加载属性数据(如果未加载)
  • 从压缩的 JSON 中解析属性

参数:

  • url: 模型 URL
  • id: 构件 ID
  • callback: 回调函数,接收属性对象

返回值格式:

{
    properties: [{
        name: string,      // 分类名称
        children: [{
            name: string,  // 属性名
            value: any     // 属性值
        }]
    }],
    materials: []
}

3.9 ModelMapperBatch - 模型批量映射

文件路径: src/core/v2/managers/modelMapperBatch/index.ts

公共方法

getModelTypes()
public getModelTypes(): any[]

功能: 获取模型中所有的构件类型

getModelMajors()
public getModelMajors(): any[]

功能: 获取模型中所有的专业

getModelLevels()
public getModelLevels(): any[]

功能: 获取模型中所有的楼层

getModelMapper()
public getModelMapper(url: string, id: number): any

功能: 获取指定构件的映射信息

参数:

  • url: 模型 URL
  • id: 构件 ID

返回值: Mapper 对象(包含类型、专业、楼层等信息)

getModelSWithType()
public getModelSWithType(type: string, callback: any): any[]

功能: 获取同类型的所有构件

参数:

  • type: 构件类型名称
  • callback: 回调函数

返回值: [{url: string, ids: number[]}]

getModelSWithLevel()
public getModelSWithLevel(level: string, callback: any): any[]

功能: 获取同楼层的所有构件

参数:

  • level: 楼层名称
  • callback: 回调函数

返回值: [{url: string, ids: number[]}]

getModelsWithMajor()
public getModelsWithMajor(major: string, callback: any): any[]

功能: 获取同专业的所有构件

参数:

  • major: 专业名称
  • callback: 回调函数

返回值: [{url: string, ids: number[]}]


3.10 ModelEdge - 模型边线管理器

文件路径: src/core/v2/managers/modelEdge/index.ts

公共方法

active()
public active(): void

功能: 启动边线显示

  • 显示所有模型的边线
  • 用于技术制图风格渲染
disActive()
public disActive(): void

功能: 关闭边线显示

getModelEdge()
public getModelEdge(url: string, id: Number): any

功能: 获取指定模型的边线数据

参数:

  • url: 模型 URL
  • id: 构件 ID

返回值: 边线数据 [startIndex, endIndex, points]

hideModelEdge()
public hideModelEdge(url: string, id: Number): void

功能: 隐藏指定构件的边线

参数:

  • url: 模型 URL
  • id: 构件 ID
showModelEdge()
public showModelEdge(url: string, id: Number): void

功能: 显示指定构件的边线

参数:

  • url: 模型 URL
  • id: 构件 ID

4. 状态管理

4.1 EngineStatus - 引擎状态

文件路径: src/core/v2/status/engineStatus.ts

公共属性

public isFree: boolean              // 引擎是否空闲
public highlightModels: any[]       // 高亮的模型数组
public hideModels: any[]            // 隐藏的模型数组
public models: any[]                // 已加载的模型数组

公共方法

init()
public init(): void

功能: 初始化引擎状态监听

  • 监听 EventType.EngineFree 事件
  • 监听 EventType.EngineBusy 事件
updateFree()
public updateFree(status: boolean): void

功能: 更新引擎空闲状态

参数:

  • status: true 表示空闲false 表示繁忙
closeAllFunction()
public closeAllFunction(): void

功能: 关闭所有功能


4.2 HandelBehaved - 行为处理器

文件路径: src/core/v2/status/handelBehaved.ts

这是一个工厂函数,返回行为处理器对象。

公共方法

init()
init(self: any, options: any): void

功能: 初始化行为处理器

参数:

  • self: 当前激活的行为对象
  • options: 行为配置选项
    • showCatch: boolean - 是否显示捕捉点
active()
active(): void

功能: 开启事务(激活事件监听)

  • 监听鼠标事件mousedown, mouseup, mousemove
  • 监听键盘事件keydown, keyup
disActive()
disActive(): void

功能: 关闭事务(禁用事件监听)

支持的键盘事件:

  • Delete / Backspace - 删除
  • Escape - 取消
  • Enter - 确认
  • Space - 空格
  • Ctrl / Control - 控制键
  • Shift - 切换键
  • Alt - 辅助键
  • Meta / Command - 命令键

支持的鼠标事件:

  • handleMouseDown - 鼠标按下
  • handleMouseMove - 鼠标移动
  • handleMouseUp - 鼠标弹起
  • handleMouseClick - 鼠标单击
  • handleMouseDoubleClick - 鼠标双击

捕捉功能:

  • 点捕捉(距离 < 5 像素)
  • 线捕捉(距离 < 5 像素)
  • 面捕捉(默认)

使用示例

初始化引擎

import { EngineKernelV2 } from './src/core/v2/EngineKernel';

const engine = new EngineKernelV2({
    containerId: 'canvas-container',
    antialias: true
});

加载模型

await engine.loaderModule.loadModels([
    'https://example.com/model1.light',
    'https://example.com/model2.light'
]);

高亮模型

engine.modelToolModule.highlightModel([
    { url: 'model1.light', ids: ['wall-001', 'wall-002'] }
]);

切换相机

// 切换到正交相机
engine.cameraModule.switchToOrthographicCamera();

// 或切换当前相机类型
engine.cameraModule.switchCurrentCamera();

保存和恢复相机姿态

// 保存当前相机姿态
const pose = engine.cameraModule.getCameraPose();

// 恢复相机姿态
engine.cameraModule.restoreCameraPose(pose);

设置光照和渲染质量

// 设置环境光强度
engine.setting.setAmbientLightIntensity(1.5);

// 设置阴影质量
engine.setting.setShadowQuality('ultra');

// 开启 GTAO
engine.setting.setGTAOEnabled(true);

// 调整饱和度和对比度
engine.setting.setSceneSaturation(1.3);
engine.setting.setSceneContrast(1.1);

获取模型属性

engine.modelProperties.getModelProperties('model.light', 'wall-001', (data) => {
    console.log('属性:', data.properties);
});

按类型筛选构件

engine.modelMapperBatch.getModelSWithType('墙', (models) => {
    // 高亮所有墙体
    engine.modelToolModule.highlightModel(models);
});

监听事件

// 监听点击事件
engine.events.on(EventType.Click, (hit) => {
    console.log('点击了:', hit.object.name);
});

// 监听视口大小改变
engine.events.on(EventType.ViewportResize, ({ width, height }) => {
    console.log('视口大小:', width, height);
});

暂停和恢复渲染

// 暂停渲染(节省性能)
engine.pauseRendering();

// 恢复渲染
engine.resumeRendering();

// 检查渲染状态
if (engine.isRenderingPausedState()) {
    console.log('渲染已暂停');
}

销毁引擎

// 释放所有资源
engine.dispose();

总结

BIM Engine SDK 提供了完整的 3D BIM 模型渲染和交互能力,主要特性包括:

  • 完整的相机系统: 支持透视和正交相机,可保存和恢复相机姿态
  • 强大的模型操作: 高亮、隐藏、隔离、批量筛选
  • 丰富的测量工具: 距离、净高、净距、标高、角度、面积、坡度
  • 灵活的剖切功能: 支持 X/Y/Z 轴剖切和剖切盒
  • 可配置的渲染质量: 阴影、环境光遮蔽、饱和度、对比度
  • 事件驱动架构: 支持自定义事件监听和触发
  • 性能优化: 支持暂停/恢复渲染,八叉树加速
  • 完善的资源管理: 自动释放几何体、材质、纹理等资源

适用场景:

  • BIM 模型在线浏览
  • 建筑设计审查
  • 施工模拟
  • 运维管理
  • AI 辅助设计