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

1505 lines
28 KiB
Markdown
Raw Normal View History

# 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 辅助设计