Files
bim_engine/docs/ENGINNE_3D/API文档.md

1505 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BIM Engine SDK API 文档
本文档为 BIM Engine SDK 的完整 API 参考,适合大模型阅读和理解引擎的功能结构。
## 目录
1. [核心引擎类](#1-核心引擎类)
2. [基础模块](#2-基础模块)
3. [功能管理器](#3-功能管理器)
4. [状态管理](#4-状态管理)
---
## 1. 核心引擎类
### EngineKernelV2
引擎核心组件,负责整合和管理所有模块。
**文件路径**: `src/core/v2/EngineKernel.ts`
#### 构造函数
```typescript
constructor(options: any)
```
**参数**:
- `options.containerId`: string - 容器元素的 ID
**功能**:
- 初始化所有基础模块(场景、相机、渲染器、控制器等)
- 初始化所有功能管理器(测量、剖切、模型树等)
- 设置渲染循环
- 添加性能监视器
#### 公共属性
```typescript
// 基础对象
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()
```typescript
public pauseRendering(): void
```
**功能**: 暂停渲染循环
- 停止动画帧请求
- 禁用控制器
- 用于性能优化或后台运行
##### resumeRendering()
```typescript
public resumeRendering(): void
```
**功能**: 恢复渲染循环
- 重新启动动画帧请求
- 恢复控制器状态
##### isRenderingPausedState()
```typescript
public isRenderingPausedState(): boolean
```
**功能**: 检查渲染是否暂停
**返回值**: boolean - true 表示已暂停
##### dispose()
```typescript
public dispose(): void
```
**功能**: 销毁引擎,释放所有资源
- 停止渲染循环
- 清理所有模块
- 释放几何体、材质、纹理
- 移除 DOM 元素
- 清理事件监听器
**注意**: 调用此方法后引擎不可再使用
---
## 2. 基础模块
### 2.1 SceneModule - 场景模块
**文件路径**: `src/core/v2/modules/sceneModule.ts`
#### 公共属性
```typescript
public scene: THREE.Scene | null // 三维场景对象
```
**功能**:
- 创建并管理 THREE.Scene
- 初始化边线组groupEdge用于存储模型边线
---
### 2.2 CameraModule - 相机模块
**文件路径**: `src/core/v2/modules/cameraModule.ts`
#### 公共属性
```typescript
public perspectiveCamera: THREE.PerspectiveCamera // 透视相机
public orthographicCamera: THREE.OrthographicCamera // 正交相机
```
#### 公共方法
##### switchCurrentCamera()
```typescript
public switchCurrentCamera(): void
```
**功能**: 切换当前相机类型(透视 ↔ 正交)
##### switchToPerspectiveCamera()
```typescript
public switchToPerspectiveCamera(): void
```
**功能**: 切换到透视相机
- 保持当前位置和目标点
- 更新控制器
- 重新初始化合成器
##### switchToOrthographicCamera()
```typescript
public switchToOrthographicCamera(): void
```
**功能**: 切换到正交相机
- 保持当前位置和目标点
- 更新控制器
- 重新初始化合成器
##### getCameraType()
```typescript
public getCameraType(): CameraType
```
**功能**: 获取当前相机类型
**返回值**:
- `CameraType.PERSPECTIVE` - 透视相机
- `CameraType.ORTHOGRAPHIC` - 正交相机
##### getCameraPose()
```typescript
public getCameraPose(): ICameraPose
```
**功能**: 获取当前相机姿态(位置、旋转、目标点、缩放等)
**返回值**: ICameraPose 对象
```typescript
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()
```typescript
public restoreCameraPose(pose: ICameraPose): void
```
**功能**: 通过相机姿态还原相机位置
- 自动切换相机类型
- 恢复位置、旋转、目标点
- 恢复正交相机的缩放值
**参数**:
- `pose`: ICameraPose - 相机姿态对象
---
### 2.3 DeviceModule - 设备模块
**文件路径**: `src/core/v2/modules/deviceModule.ts`
#### 公共属性
```typescript
public deviceType: string // 设备类型(默认 'PC'
```
#### 公共方法
##### getDeviceType()
```typescript
public getDeviceType(): string
```
**功能**: 获取设备类型
**返回值**: 'PC' 或其他设备标识
##### getContainerSize()
```typescript
public getContainerSize(): { width: number; height: number }
```
**功能**: 获取容器尺寸
**返回值**: 容器的宽度和高度
---
### 2.4 RenderModule - 渲染模块
**文件路径**: `src/core/v2/modules/renderModule.ts`
#### 公共属性
```typescript
public renderer: THREE.WebGLRenderer | null // WebGL 渲染器
```
#### 公共方法
##### createRenderer()
```typescript
public createRenderer(): THREE.WebGLRenderer
```
**功能**: 创建并配置 WebGL 渲染器
- 启用抗锯齿
- 启用阴影映射PCFSoftShadowMap
- 启用本地裁剪(用于剖切平面)
- 配置色彩空间和色调映射
**返回值**: 配置好的渲染器实例
##### disposeRenderer()
```typescript
public disposeRenderer(): void
```
**功能**: 释放渲染器资源
---
### 2.5 ControlModule - 控制模块
**文件路径**: `src/core/v2/modules/controlModule.ts`
#### 公共属性
```typescript
public orbitControls: any // 轨道控制器
public firstPersonControls: any // 第一人称控制器
public isActive: boolean // 控制器是否激活
```
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化控制器
- 创建轨道控制器和第一人称控制器
- 创建旋转中心指示器 UI
##### active()
```typescript
public active(): void
```
**功能**: 激活控制器
##### disActive()
```typescript
public disActive(): void
```
**功能**: 禁用控制器
##### switchFirstPersonMode()
```typescript
public switchFirstPersonMode(): void
```
**功能**: 切换到第一人称漫游模式
- 禁用轨道控制器
- 启用第一人称控制器
##### switchDefaultMode()
```typescript
public switchDefaultMode(): void
```
**功能**: 切换到默认模式(轨道控制)
- 禁用第一人称控制器
- 启用轨道控制器
##### update()
```typescript
public update(): void
```
**功能**: 更新控制器状态
- 更新旋转中心指示器位置
- 在渲染循环中调用
---
### 2.6 ComposerModule - 合成器模块
**文件路径**: `src/core/v2/modules/composerModule.ts`
#### 公共属性
```typescript
public composer: any // 效果合成器
```
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化后处理管线
- RenderPass - 基础渲染
- GTAOPass - 环境光遮蔽(默认禁用)
- UnrealBloomPass - 辉光效果(默认禁用)
- SaturationPass - 饱和度和对比度调整
- OutputPass - 色调映射和颜色校正
- FXAAPass - 抗锯齿
##### resize()
```typescript
public resize(): void
```
**功能**: 调整合成器大小
- 更新所有 pass 的分辨率
- 更新 FXAA 的分辨率参数
---
### 2.7 LoaderModule - 加载器模块
**文件路径**: `src/core/v2/modules/loaderModule.ts`
#### 公共方法
##### loadModels()
```typescript
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()
```typescript
on<T = any>(event: EventType, callback: (data: T) => void): void
```
**功能**: 注册事件监听器
**参数**:
- `event`: EventType - 事件类型
- `callback`: 回调函数
##### off()
```typescript
off<T = any>(event: EventType, callback: (data: T) => void): void
```
**功能**: 移除事件监听器
**参数**:
- `event`: EventType - 事件类型
- `callback`: 要移除的回调函数
##### trigger()
```typescript
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()
```typescript
public init(): void
```
**功能**: 初始化场景基本光照
- 添加定向光DirectionalLight
- 强度: 2
- 位置: (10, 20, 10)
- 阴影贴图: 4096x4096高质量
- 添加环境光AmbientLight
- 强度: 1
---
### 2.10 InteractionModule - 交互模块
**文件路径**: `src/core/v2/modules/interactionModule.ts`
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化交互行为处理器
##### active()
```typescript
public active(): void
```
**功能**: 激活交互功能
##### disActive()
```typescript
public disActive(): void
```
**功能**: 禁用交互功能
##### handleMouseClick()
```typescript
public handleMouseClick(event: any): void
```
**功能**: 处理鼠标单击事件
- 射线检测点击的模型
- 高亮选中的模型
- 设置旋转中心
- 支持 Ctrl 多选
##### handleMouseDoubleClick()
```typescript
public handleMouseDoubleClick(event: any): void
```
**功能**: 处理鼠标双击事件
- 双击模型后缩放到该模型
- 计算模型包围盒并调整相机视角
##### handleMouseClickInstance()
```typescript
public handleMouseClickInstance(raycaster: any): any
```
**功能**: 判断点击实例化网格节点
**参数**:
- `raycaster`: 射线投射器
**返回值**: 相交结果数组
---
### 2.11 ModelToolModule - 模型工具模块
**文件路径**: `src/core/v2/modules/modelToolModule.ts`
#### 公共方法
##### highlightModel()
```typescript
public highlightModel(models: any): void
```
**功能**: 设置模型高亮显示
**参数**:
- `models`: 模型数组,格式: `[{url: string, ids: string[]}]`
##### unhighlightModel()
```typescript
public unhighlightModel(models: any): void
```
**功能**: 取消模型高亮
**参数**:
- `models`: 模型数组
##### unhighlightAllModels()
```typescript
public unhighlightAllModels(): void
```
**功能**: 取消所有模型高亮
##### hideModel()
```typescript
public hideModel(models: any): void
```
**功能**: 隐藏模型
**参数**:
- `models`: 模型数组,格式: `[{url: string, ids: string[]}]`
##### showModel()
```typescript
public showModel(models: any): void
```
**功能**: 显示模型
**参数**:
- `models`: 模型数组
##### isolateModel()
```typescript
public isolateModel(models: any): void
```
**功能**: 隔离模型(只显示指定模型,隐藏其他)
**参数**:
- `models`: 要显示的模型数组
##### showAllModels()
```typescript
public showAllModels(): void
```
**功能**: 显示所有模型
##### getModelsBox()
```typescript
public getModelsBox(models: any): THREE.Box3
```
**功能**: 获取模型的包围盒
**参数**:
- `models`: 模型数组
**返回值**: THREE.Box3 包围盒对象
---
## 3. 功能管理器
### 3.1 ViewCube - 视图立方体
**文件路径**: `src/core/v2/managers/viewCube/index.ts`
#### 公共属性
```typescript
public cubeTool: any // 视图立方体工具
```
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化视图立方体
- 创建 3D 小立方体辅助视图
- 支持六个面和边角视图切换
##### CameraGoHome()
```typescript
public CameraGoHome(): void
```
**功能**: 相机回归正位(默认视角)
##### zoomToModel()
```typescript
public zoomToModel(box: THREE.Box3): void
```
**功能**: 缩放到指定模型包围盒
**参数**:
- `box`: THREE.Box3 - 目标包围盒
---
### 3.2 RangeScale - 范围缩放工具
**文件路径**: `src/core/v2/managers/rangeScale/index.ts`
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化范围缩放工具
- 创建绘制框 UI 元素
- 初始化坐标转换工具
##### active()
```typescript
public active(): void
```
**功能**: 激活范围缩放工具
- 禁用控制器
- 启用框选功能
- 鼠标变为十字光标
**使用方式**:
1. 激活工具
2. 鼠标拖拽绘制矩形区域
3. 松开鼠标自动缩放到该区域
4. 按 ESC 键退出
##### disActive()
```typescript
public disActive(): void
```
**功能**: 停用范围缩放工具
- 恢复控制器
- 移除事件监听
---
### 3.3 Setting - 设置管理器
**文件路径**: `src/core/v2/managers/setting/index.ts`
#### 公共方法
##### setStatsVisible()
```typescript
public setStatsVisible(visible: boolean): void
```
**功能**: 显示/隐藏性能监视器
**参数**:
- `visible`: true 显示false 隐藏
##### setAmbientLightIntensity()
```typescript
public setAmbientLightIntensity(intensity: number): void
```
**功能**: 设置环境光照强度
**参数**:
- `intensity`: 光照强度,范围 0-5
##### setAmbientLightColor()
```typescript
public setAmbientLightColor(color: number | string): void
```
**功能**: 设置环境光照颜色
**参数**:
- `color`: 颜色0xffffff 或 '#ffffff'
##### setDirectionalLightIntensity()
```typescript
public setDirectionalLightIntensity(intensity: number): void
```
**功能**: 设置定向光源强度
**参数**:
- `intensity`: 光照强度,范围 0-5
##### setDirectionalLightColor()
```typescript
public setDirectionalLightColor(color: number | string): void
```
**功能**: 设置定向光源颜色
**参数**:
- `color`: 颜色
##### setShadowQuality()
```typescript
public setShadowQuality(quality: 'low' | 'medium' | 'high' | 'ultra'): void
```
**功能**: 设置阴影精细度
**参数**:
- `quality`: 质量等级
- 'low': 1024
- 'medium': 2048
- 'high': 4096
- 'ultra': 8192
##### setDirectionalLightShadow()
```typescript
public setDirectionalLightShadow(enabled: boolean): void
```
**功能**: 开启/关闭定向光阴影
**参数**:
- `enabled`: true 开启false 关闭
##### setGTAOEnabled()
```typescript
public setGTAOEnabled(enabled: boolean): void
```
**功能**: 开启/关闭 GTAO 环境光遮蔽
**参数**:
- `enabled`: true 开启false 关闭
##### setSceneSaturation()
```typescript
public setSceneSaturation(saturation: number): void
```
**功能**: 设置场景饱和度
**参数**:
- `saturation`: 饱和度值1.0 为正常,推荐范围 0.5-2.0
##### setSceneContrast()
```typescript
public setSceneContrast(contrast: number): void
```
**功能**: 设置场景对比度
**参数**:
- `contrast`: 对比度值1.0 为正常,推荐范围 0.5-2.0
##### setGroundEnabled()
```typescript
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()
```typescript
public setHDRBackground(hdrTexture: THREE.Texture | null): void
```
**功能**: 设置 HDR 背景
**参数**:
- `hdrTexture`: HDR 环境贴图null 则移除
---
### 3.4 Measure - 测量工具
**文件路径**: `src/core/v2/managers/measure/index.ts`
#### 公共方法
##### active()
```typescript
public active(): void
```
**功能**: 激活测量工具
##### disActive()
```typescript
public disActive(): void
```
**功能**: 停用测量工具
- 清除所有测量
- 恢复点选功能
##### clearAllPoints()
```typescript
public clearAllPoints(): void
```
**功能**: 清空所有测量点
##### clearAll()
```typescript
public clearAll(): void
```
**功能**: 清除所有测量标注
##### update()
```typescript
update(): void
```
**功能**: 更新测量标注
- 在渲染循环中调用
- 更新屏幕坐标
**测量类型**:
- 距离测量DistanceMeasure
- 净高测量ClearHeightMeasure
- 净距测量ClearDistanceMeasure
- 标高测量ElevationMeasure
- 点测量PointMeasure
- 角度测量AngleMeasure
- 面积测量AreaMeasure
- 坡度测量SlopeMeasure
---
### 3.5 Clipping - 剖切管理器
**文件路径**: `src/core/v2/managers/clipping/index.ts`
#### 公共属性
```typescript
public sectionPlaneX: any // X 轴剖切平面
public sectionPlaneY: any // Y 轴剖切平面
public sectionPlaneZ: any // Z 轴剖切平面
public sectionBox: any // 剖切盒
```
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化剖切管理器
- 创建 6 个剖切平面(前、后、左、右、顶、底)
- 初始化 X/Y/Z 轴剖切工具
- 初始化剖切盒工具
##### disActive()
```typescript
public disActive(): void
```
**功能**: 停用所有剖切工具
---
### 3.6 ModelTree - 模型树
**文件路径**: `src/core/v2/managers/modelTree/index.ts`
#### 公共方法
##### getTreeData()
```typescript
public getTreeData(): any[]
```
**功能**: 获取模型树数据
**返回值**: 模型树数组
```typescript
[{
name: string, // 模型名称
children: any[] // 模型层级树
}]
```
---
### 3.7 EngineInfo - 引擎信息统计
**文件路径**: `src/core/v2/managers/engineInfo/index.ts`
#### 公共方法
##### getEngineInfo()
```typescript
public getEngineInfo(): {
totalVertices: number;
totalTriangles: number;
meshCount: number;
}
```
**功能**: 获取引擎统计信息
- 统计所有网格的顶点数
- 统计所有网格的三角面数
- 统计网格数量
**返回值**:
- `totalVertices`: 总顶点数
- `totalTriangles`: 总三角面数
- `meshCount`: 网格数量
---
### 3.8 ModelProperties - 模型属性
**文件路径**: `src/core/v2/managers/modelProperties/index.ts`
#### 公共方法
##### getModelProperties()
```typescript
public getModelProperties(url: string, id: string, callback: (properties: any) => void): void
```
**功能**: 查询构件属性
- 异步加载属性数据(如果未加载)
- 从压缩的 JSON 中解析属性
**参数**:
- `url`: 模型 URL
- `id`: 构件 ID
- `callback`: 回调函数,接收属性对象
**返回值格式**:
```typescript
{
properties: [{
name: string, // 分类名称
children: [{
name: string, // 属性名
value: any // 属性值
}]
}],
materials: []
}
```
---
### 3.9 ModelMapperBatch - 模型批量映射
**文件路径**: `src/core/v2/managers/modelMapperBatch/index.ts`
#### 公共方法
##### getModelTypes()
```typescript
public getModelTypes(): any[]
```
**功能**: 获取模型中所有的构件类型
##### getModelMajors()
```typescript
public getModelMajors(): any[]
```
**功能**: 获取模型中所有的专业
##### getModelLevels()
```typescript
public getModelLevels(): any[]
```
**功能**: 获取模型中所有的楼层
##### getModelMapper()
```typescript
public getModelMapper(url: string, id: number): any
```
**功能**: 获取指定构件的映射信息
**参数**:
- `url`: 模型 URL
- `id`: 构件 ID
**返回值**: Mapper 对象(包含类型、专业、楼层等信息)
##### getModelSWithType()
```typescript
public getModelSWithType(type: string, callback: any): any[]
```
**功能**: 获取同类型的所有构件
**参数**:
- `type`: 构件类型名称
- `callback`: 回调函数
**返回值**: `[{url: string, ids: number[]}]`
##### getModelSWithLevel()
```typescript
public getModelSWithLevel(level: string, callback: any): any[]
```
**功能**: 获取同楼层的所有构件
**参数**:
- `level`: 楼层名称
- `callback`: 回调函数
**返回值**: `[{url: string, ids: number[]}]`
##### getModelsWithMajor()
```typescript
public getModelsWithMajor(major: string, callback: any): any[]
```
**功能**: 获取同专业的所有构件
**参数**:
- `major`: 专业名称
- `callback`: 回调函数
**返回值**: `[{url: string, ids: number[]}]`
---
### 3.10 ModelEdge - 模型边线管理器
**文件路径**: `src/core/v2/managers/modelEdge/index.ts`
#### 公共方法
##### active()
```typescript
public active(): void
```
**功能**: 启动边线显示
- 显示所有模型的边线
- 用于技术制图风格渲染
##### disActive()
```typescript
public disActive(): void
```
**功能**: 关闭边线显示
##### getModelEdge()
```typescript
public getModelEdge(url: string, id: Number): any
```
**功能**: 获取指定模型的边线数据
**参数**:
- `url`: 模型 URL
- `id`: 构件 ID
**返回值**: 边线数据 `[startIndex, endIndex, points]`
##### hideModelEdge()
```typescript
public hideModelEdge(url: string, id: Number): void
```
**功能**: 隐藏指定构件的边线
**参数**:
- `url`: 模型 URL
- `id`: 构件 ID
##### showModelEdge()
```typescript
public showModelEdge(url: string, id: Number): void
```
**功能**: 显示指定构件的边线
**参数**:
- `url`: 模型 URL
- `id`: 构件 ID
---
## 4. 状态管理
### 4.1 EngineStatus - 引擎状态
**文件路径**: `src/core/v2/status/engineStatus.ts`
#### 公共属性
```typescript
public isFree: boolean // 引擎是否空闲
public highlightModels: any[] // 高亮的模型数组
public hideModels: any[] // 隐藏的模型数组
public models: any[] // 已加载的模型数组
```
#### 公共方法
##### init()
```typescript
public init(): void
```
**功能**: 初始化引擎状态监听
- 监听 `EventType.EngineFree` 事件
- 监听 `EventType.EngineBusy` 事件
##### updateFree()
```typescript
public updateFree(status: boolean): void
```
**功能**: 更新引擎空闲状态
**参数**:
- `status`: true 表示空闲false 表示繁忙
##### closeAllFunction()
```typescript
public closeAllFunction(): void
```
**功能**: 关闭所有功能
---
### 4.2 HandelBehaved - 行为处理器
**文件路径**: `src/core/v2/status/handelBehaved.ts`
这是一个工厂函数,返回行为处理器对象。
#### 公共方法
##### init()
```typescript
init(self: any, options: any): void
```
**功能**: 初始化行为处理器
**参数**:
- `self`: 当前激活的行为对象
- `options`: 行为配置选项
- `showCatch`: boolean - 是否显示捕捉点
##### active()
```typescript
active(): void
```
**功能**: 开启事务(激活事件监听)
- 监听鼠标事件mousedown, mouseup, mousemove
- 监听键盘事件keydown, keyup
##### disActive()
```typescript
disActive(): void
```
**功能**: 关闭事务(禁用事件监听)
**支持的键盘事件**:
- Delete / Backspace - 删除
- Escape - 取消
- Enter - 确认
- Space - 空格
- Ctrl / Control - 控制键
- Shift - 切换键
- Alt - 辅助键
- Meta / Command - 命令键
**支持的鼠标事件**:
- handleMouseDown - 鼠标按下
- handleMouseMove - 鼠标移动
- handleMouseUp - 鼠标弹起
- handleMouseClick - 鼠标单击
- handleMouseDoubleClick - 鼠标双击
**捕捉功能**:
- 点捕捉(距离 < 5 像素
- 线捕捉距离 < 5 像素
- 面捕捉默认
---
## 使用示例
### 初始化引擎
```typescript
import { EngineKernelV2 } from './src/core/v2/EngineKernel';
const engine = new EngineKernelV2({
containerId: 'canvas-container',
antialias: true
});
```
### 加载模型
```typescript
await engine.loaderModule.loadModels([
'https://example.com/model1.light',
'https://example.com/model2.light'
]);
```
### 高亮模型
```typescript
engine.modelToolModule.highlightModel([
{ url: 'model1.light', ids: ['wall-001', 'wall-002'] }
]);
```
### 切换相机
```typescript
// 切换到正交相机
engine.cameraModule.switchToOrthographicCamera();
// 或切换当前相机类型
engine.cameraModule.switchCurrentCamera();
```
### 保存和恢复相机姿态
```typescript
// 保存当前相机姿态
const pose = engine.cameraModule.getCameraPose();
// 恢复相机姿态
engine.cameraModule.restoreCameraPose(pose);
```
### 设置光照和渲染质量
```typescript
// 设置环境光强度
engine.setting.setAmbientLightIntensity(1.5);
// 设置阴影质量
engine.setting.setShadowQuality('ultra');
// 开启 GTAO
engine.setting.setGTAOEnabled(true);
// 调整饱和度和对比度
engine.setting.setSceneSaturation(1.3);
engine.setting.setSceneContrast(1.1);
```
### 获取模型属性
```typescript
engine.modelProperties.getModelProperties('model.light', 'wall-001', (data) => {
console.log('属性:', data.properties);
});
```
### 按类型筛选构件
```typescript
engine.modelMapperBatch.getModelSWithType('墙', (models) => {
// 高亮所有墙体
engine.modelToolModule.highlightModel(models);
});
```
### 监听事件
```typescript
// 监听点击事件
engine.events.on(EventType.Click, (hit) => {
console.log('点击了:', hit.object.name);
});
// 监听视口大小改变
engine.events.on(EventType.ViewportResize, ({ width, height }) => {
console.log('视口大小:', width, height);
});
```
### 暂停和恢复渲染
```typescript
// 暂停渲染(节省性能)
engine.pauseRendering();
// 恢复渲染
engine.resumeRendering();
// 检查渲染状态
if (engine.isRenderingPausedState()) {
console.log('渲染已暂停');
}
```
### 销毁引擎
```typescript
// 释放所有资源
engine.dispose();
```
---
## 总结
BIM Engine SDK 提供了完整的 3D BIM 模型渲染和交互能力主要特性包括
- **完整的相机系统**: 支持透视和正交相机可保存和恢复相机姿态
- **强大的模型操作**: 高亮隐藏隔离批量筛选
- **丰富的测量工具**: 距离净高净距标高角度面积坡度
- **灵活的剖切功能**: 支持 X/Y/Z 轴剖切和剖切盒
- **可配置的渲染质量**: 阴影环境光遮蔽饱和度对比度
- **事件驱动架构**: 支持自定义事件监听和触发
- **性能优化**: 支持暂停/恢复渲染八叉树加速
- **完善的资源管理**: 自动释放几何体材质纹理等资源
适用场景
- BIM 模型在线浏览
- 建筑设计审查
- 施工模拟
- 运维管理
- AI 辅助设计