提交代码
This commit is contained in:
@@ -5,15 +5,17 @@
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| **模块名** | components |
|
||||
| **职责** | 提供 BIM 3D 引擎 SDK 的所有 UI 组件 |
|
||||
| **公开 API** | 20+ 个组件类 |
|
||||
| **职责** | 提供 BIM SDK 的所有引擎组件(3D / 2D / 720)和 UI 组件 |
|
||||
| **公开 API** | 3 个引擎组件 + 20+ UI 组件 |
|
||||
| **状态** | ✅ 稳定 |
|
||||
|
||||
## 代码地图
|
||||
|
||||
```
|
||||
src/components/
|
||||
├── engine/ # 3D 引擎组件
|
||||
├── engine/ # 3D 引擎组件 (包装 iflow-engine-base)
|
||||
├── engine-2d/ # 2D 图纸引擎组件 (包装 createEngine2d)
|
||||
├── engine-720/ # 720° 全景引擎组件 (包装 createEngine720)
|
||||
├── dialog/ # 通用弹窗组件
|
||||
├── tree/ # 树形控件组件
|
||||
├── menu/ # 菜单组件
|
||||
@@ -30,7 +32,6 @@ src/components/
|
||||
├── walk-plan-view-panel/ # 漫游平面图面板
|
||||
├── right-key/ # 右键菜单组件
|
||||
└── map-panel/ # 地图面板组件
|
||||
```
|
||||
|
||||
## 组件接口
|
||||
|
||||
@@ -52,7 +53,7 @@ interface IBimComponent {
|
||||
|
||||
### 概述
|
||||
|
||||
包装第三方 3D 引擎 SDK,提供模型加载、视角控制、测量功能。
|
||||
包装第三方 3D 引擎 SDK,提供模型加载、视角控制、测量功能。仅由 `BimEngine` 通过 `EngineManager` 使用。
|
||||
|
||||
### 配置
|
||||
|
||||
@@ -69,33 +70,135 @@ interface EngineOptions {
|
||||
### API
|
||||
|
||||
```typescript
|
||||
class Engine {
|
||||
class Engine implements IBimComponent {
|
||||
init(): void;
|
||||
loadModel(url: string, options?: ModelLoadOptions): void;
|
||||
CameraGoHome(): void;
|
||||
getEngine(): any;
|
||||
activateMeasure(mode: MeasureMode): void;
|
||||
deactivateMeasure(): void;
|
||||
onRawEvent(event: string, handler: Function): void;
|
||||
offRawEvent(event: string, handler: Function): void;
|
||||
setTheme(theme: ThemeConfig): void;
|
||||
destroy(): void;
|
||||
}
|
||||
```
|
||||
|
||||
### 测量模式
|
||||
---
|
||||
|
||||
| 模式 | 说明 |
|
||||
|------|------|
|
||||
| `distance` | 距离测量 |
|
||||
| `minDistance` | 最小距离 |
|
||||
| `angle` | 角度测量 |
|
||||
| `elevation` | 标高测量 |
|
||||
| `volume` | 体积测量 |
|
||||
| `laserDistance` | 激光测距 |
|
||||
| `slope` | 坡度测量 |
|
||||
| `spaceVolume` | 空间体积 |
|
||||
## Engine2d(2D 图纸引擎组件)
|
||||
|
||||
### 概述
|
||||
|
||||
包装 `createEngine2d()`,提供 2D CAD/DWG 图纸加载与查看。由 `BimEngine2d` 直接使用,跳过 Manager 层。
|
||||
|
||||
### 配置
|
||||
|
||||
```typescript
|
||||
interface Engine2dOptions {
|
||||
container: HTMLElement;
|
||||
backgroundColor?: number;
|
||||
gridEnabled?: boolean;
|
||||
axesEnabled?: boolean;
|
||||
selectionColor?: number;
|
||||
highlightColor?: number;
|
||||
enablePerformanceMonitoring?: boolean;
|
||||
}
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
```typescript
|
||||
class Engine2d implements IBimComponent {
|
||||
init(): void;
|
||||
loadDrawing(url: string, options?: DrawingLoadOptions): Promise<void>;
|
||||
getLayers(): Drawing2dLayer[];
|
||||
setLayerVisible(name: string, visible: boolean): void;
|
||||
resetView(): void;
|
||||
fitToView(): void;
|
||||
setZoom(zoom: number): void;
|
||||
getZoom(): number;
|
||||
onRawEvent(event: string, handler: Function): void;
|
||||
offRawEvent(event: string, handler: Function): void;
|
||||
setTheme(theme: ThemeConfig): void;
|
||||
destroy(): void;
|
||||
}
|
||||
```
|
||||
|
||||
### 相关类型
|
||||
|
||||
```typescript
|
||||
interface DrawingLoadOptions {
|
||||
chunkSize?: number;
|
||||
enableChunkedLoading?: boolean;
|
||||
enableValidation?: boolean;
|
||||
}
|
||||
|
||||
interface Drawing2dLayer {
|
||||
name: string;
|
||||
visible: boolean;
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Engine720(720° 全景引擎组件)
|
||||
|
||||
### 概述
|
||||
|
||||
包装 `createEngine720()`,提供 720° 全景图加载与查看。由 `BimEngine720` 直接使用,跳过 Manager 层。
|
||||
|
||||
### 配置
|
||||
|
||||
```typescript
|
||||
interface Engine720Options {
|
||||
container: HTMLElement;
|
||||
fov?: number; // 默认 75
|
||||
enableZoom?: boolean; // 默认 true
|
||||
enableRotate?: boolean; // 默认 true
|
||||
sphereRadius?: number; // 默认 500
|
||||
rotateSpeed?: number;
|
||||
zoomSpeed?: number;
|
||||
enableDamping?: boolean;
|
||||
dampingFactor?: number;
|
||||
minFov?: number;
|
||||
maxFov?: number;
|
||||
}
|
||||
```
|
||||
|
||||
### API
|
||||
|
||||
```typescript
|
||||
class Engine720 implements IBimComponent {
|
||||
init(): void;
|
||||
loadPanorama(url: string, options?: PanoramaLoadOptions): Promise<void>;
|
||||
preloadPanoramas(urls: string[]): Promise<void>;
|
||||
setFov(fov: number): void;
|
||||
getFov(): number;
|
||||
lookAt(phi: number, theta: number, animated?: boolean): void;
|
||||
resetView(): void;
|
||||
onRawEvent(event: string, handler: Function): void;
|
||||
offRawEvent(event: string, handler: Function): void;
|
||||
setTheme(theme: ThemeConfig): void;
|
||||
destroy(): void;
|
||||
}
|
||||
```
|
||||
|
||||
### 相关类型
|
||||
|
||||
```typescript
|
||||
interface PanoramaLoadOptions {
|
||||
timeout?: number;
|
||||
}
|
||||
|
||||
interface PanoramaAnnotation {
|
||||
id: string;
|
||||
phi?: number;
|
||||
theta?: number;
|
||||
text?: string;
|
||||
data?: any;
|
||||
}
|
||||
```
|
||||
|
||||
## BimDialog(通用弹窗组件)
|
||||
|
||||
### 概述
|
||||
@@ -602,4 +705,4 @@ interface WalkControlState {
|
||||
|
||||
---
|
||||
|
||||
**文档生成时间**: 2026-01-23
|
||||
**文档更新时间**: 2026-03-10
|
||||
|
||||
Reference in New Issue
Block a user