1505 lines
28 KiB
Markdown
1505 lines
28 KiB
Markdown
|
|
# 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 辅助设计
|