提交代码

This commit is contained in:
yuding
2026-03-16 16:13:36 +08:00
parent 507112fcf9
commit dd4600bb5b
35 changed files with 31811 additions and 9696 deletions

View File

@@ -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` | 空间体积 |
## Engine2d2D 图纸引擎组件)
### 概述
包装 `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;
}
```
---
## Engine720720° 全景引擎组件)
### 概述
包装 `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