@fishdingding/bim-engine-sdk 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +552 -0
- package/dist/bim-engine-sdk.es.js +42632 -0
- package/dist/bim-engine-sdk.es.js.map +1 -0
- package/dist/bim-engine-sdk.umd.js +4872 -0
- package/dist/bim-engine-sdk.umd.js.map +1 -0
- package/dist/index.d.ts +1432 -0
- package/package.json +64 -0
package/README.md
ADDED
|
@@ -0,0 +1,552 @@
|
|
|
1
|
+
# BIM Engine SDK
|
|
2
|
+
|
|
3
|
+
> 一个功能强大的 BIM(建筑信息模型)引擎 SDK,提供 3D 可视化、构件管理、测量工具、剖切功能和漫游控制等完整功能。支持 Vue 2、Vue 3、React 和原生 HTML 等多种前端框架。
|
|
4
|
+
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://vitejs.dev/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
## ✨ 核心特性
|
|
10
|
+
|
|
11
|
+
- 🎯 **框架无关**: 支持 Vue 2/3、React 和原生 HTML
|
|
12
|
+
- 📦 **开箱即用**: 提供完整的 BIM 功能组件
|
|
13
|
+
- 🎨 **主题系统**: 内置暗色/亮色主题,支持自定义
|
|
14
|
+
- 🌍 **国际化**: 支持中英文切换
|
|
15
|
+
- 📐 **测量工具**: 标高、距离、角度、坡度、体积等
|
|
16
|
+
- ✂️ **剖切功能**: 拾取面剖切、轴向剖切、剖切盒
|
|
17
|
+
- 🚶 **漫游控制**: 第一人称漫游、路径漫游、平面图导航
|
|
18
|
+
- 🎛️ **组件管理**: 树形构件树、属性面板、右键菜单
|
|
19
|
+
- 💪 **TypeScript**: 完整的类型定义支持
|
|
20
|
+
|
|
21
|
+
## 📦 安装
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install bim-engine-sdk
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
或使用 yarn/pnpm:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
yarn add bim-engine-sdk
|
|
31
|
+
pnpm add bim-engine-sdk
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 🚀 快速开始
|
|
35
|
+
|
|
36
|
+
### 在 Vue 3 中使用
|
|
37
|
+
|
|
38
|
+
```vue
|
|
39
|
+
<template>
|
|
40
|
+
<div ref="containerRef" style="width: 100vw; height: 100vh;"></div>
|
|
41
|
+
</template>
|
|
42
|
+
|
|
43
|
+
<script setup lang="ts">
|
|
44
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
45
|
+
import { BimEngine } from 'bim-engine-sdk';
|
|
46
|
+
|
|
47
|
+
const containerRef = ref<HTMLElement>();
|
|
48
|
+
let bimEngine: BimEngine | null = null;
|
|
49
|
+
|
|
50
|
+
onMounted(() => {
|
|
51
|
+
if (containerRef.value) {
|
|
52
|
+
// 初始化 BIM 引擎
|
|
53
|
+
bimEngine = new BimEngine(containerRef.value, {
|
|
54
|
+
locale: 'zh-CN', // 语言: 'zh-CN' | 'en-US'
|
|
55
|
+
theme: 'dark' // 主题: 'dark' | 'light'
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// 初始化各个管理器
|
|
59
|
+
bimEngine.initToolbar(); // 底部工具栏
|
|
60
|
+
bimEngine.initButtonGroup(); // 按钮组
|
|
61
|
+
bimEngine.initDialog(); // 对话框管理器
|
|
62
|
+
bimEngine.initEngine(); // 3D 引擎
|
|
63
|
+
bimEngine.initRightKey(); // 右键菜单
|
|
64
|
+
bimEngine.initConstructTreeBtn(); // 构件树
|
|
65
|
+
bimEngine.initPropertyPanel(); // 属性面板
|
|
66
|
+
bimEngine.initMeasure(); // 测量工具
|
|
67
|
+
bimEngine.initSectionPlane(); // 拾取面剖切
|
|
68
|
+
bimEngine.initSectionAxis(); // 轴向剖切
|
|
69
|
+
bimEngine.initSectionBox(); // 剖切盒
|
|
70
|
+
bimEngine.initWalkControl(); // 漫游控制
|
|
71
|
+
bimEngine.initMap(); // 地图
|
|
72
|
+
|
|
73
|
+
// 加载模型
|
|
74
|
+
bimEngine.engine?.loadModel({
|
|
75
|
+
url: '/path/to/your/model.ifc',
|
|
76
|
+
onProgress: (progress) => {
|
|
77
|
+
console.log(`加载进度: ${progress}%`);
|
|
78
|
+
},
|
|
79
|
+
onComplete: () => {
|
|
80
|
+
console.log('模型加载完成');
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
onUnmounted(() => {
|
|
87
|
+
bimEngine?.destroy();
|
|
88
|
+
});
|
|
89
|
+
</script>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 在 React 中使用
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
import { useEffect, useRef } from 'react';
|
|
96
|
+
import { BimEngine } from 'bim-engine-sdk';
|
|
97
|
+
|
|
98
|
+
function App() {
|
|
99
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
100
|
+
const bimEngineRef = useRef<BimEngine | null>(null);
|
|
101
|
+
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (containerRef.current) {
|
|
104
|
+
const bimEngine = new BimEngine(containerRef.current, {
|
|
105
|
+
locale: 'zh-CN',
|
|
106
|
+
theme: 'dark'
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// 初始化各个管理器
|
|
110
|
+
bimEngine.initToolbar();
|
|
111
|
+
bimEngine.initButtonGroup();
|
|
112
|
+
bimEngine.initDialog();
|
|
113
|
+
bimEngine.initEngine();
|
|
114
|
+
bimEngine.initRightKey();
|
|
115
|
+
|
|
116
|
+
bimEngineRef.current = bimEngine;
|
|
117
|
+
|
|
118
|
+
return () => {
|
|
119
|
+
bimEngine.destroy();
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}, []);
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<div
|
|
126
|
+
ref={containerRef}
|
|
127
|
+
style={{ width: '100vw', height: '100vh' }}
|
|
128
|
+
/>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default App;
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 在原生 HTML 中使用
|
|
136
|
+
|
|
137
|
+
```html
|
|
138
|
+
<!DOCTYPE html>
|
|
139
|
+
<html lang="zh-CN">
|
|
140
|
+
<head>
|
|
141
|
+
<meta charset="UTF-8">
|
|
142
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
143
|
+
<title>BIM Engine SDK Demo</title>
|
|
144
|
+
<style>
|
|
145
|
+
body { margin: 0; padding: 0; }
|
|
146
|
+
#container { width: 100vw; height: 100vh; }
|
|
147
|
+
</style>
|
|
148
|
+
</head>
|
|
149
|
+
<body>
|
|
150
|
+
<div id="container"></div>
|
|
151
|
+
|
|
152
|
+
<!-- 使用 UMD 版本 -->
|
|
153
|
+
<script src="./node_modules/bim-engine-sdk/dist/bim-engine-sdk.umd.js"></script>
|
|
154
|
+
<script>
|
|
155
|
+
const container = document.getElementById('container');
|
|
156
|
+
const bimEngine = new BimEngineSdk.BimEngine(container, {
|
|
157
|
+
locale: 'zh-CN',
|
|
158
|
+
theme: 'dark'
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
// 初始化各个管理器
|
|
162
|
+
bimEngine.initToolbar();
|
|
163
|
+
bimEngine.initButtonGroup();
|
|
164
|
+
bimEngine.initDialog();
|
|
165
|
+
bimEngine.initEngine();
|
|
166
|
+
</script>
|
|
167
|
+
</body>
|
|
168
|
+
</html>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 🏗️ 技术架构
|
|
172
|
+
|
|
173
|
+
### 核心设计理念
|
|
174
|
+
|
|
175
|
+
BIM Engine SDK 采用 **管理器模式 (Manager Pattern)** 作为核心架构,确保:
|
|
176
|
+
|
|
177
|
+
- ✅ 组件的生命周期统一管理
|
|
178
|
+
- ✅ 避免内存泄漏
|
|
179
|
+
- ✅ 简化集成复杂度
|
|
180
|
+
- ✅ 支持按需加载
|
|
181
|
+
|
|
182
|
+
### 架构分层
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
┌─────────────────────────────────────────┐
|
|
186
|
+
│ BimEngine (主引擎类) │
|
|
187
|
+
│ - 生命周期管理 │
|
|
188
|
+
│ - 事件系统 │
|
|
189
|
+
│ - 主题/国际化 │
|
|
190
|
+
└─────────────────────────────────────────┘
|
|
191
|
+
↓
|
|
192
|
+
┌─────────────────────────────────────────┐
|
|
193
|
+
│ Manager 层 (管理器) │
|
|
194
|
+
│ - ToolbarManager (工具栏) │
|
|
195
|
+
│ - DialogManager (对话框) │
|
|
196
|
+
│ - EngineManager (3D引擎) │
|
|
197
|
+
│ - MeasureDialogManager (测量) │
|
|
198
|
+
│ - SectionPlaneDialogManager (剖切) │
|
|
199
|
+
│ - WalkControlManager (漫游) │
|
|
200
|
+
│ - ... │
|
|
201
|
+
└─────────────────────────────────────────┘
|
|
202
|
+
↓
|
|
203
|
+
┌─────────────────────────────────────────┐
|
|
204
|
+
│ Component 层 (UI组件) │
|
|
205
|
+
│ - Dialog (对话框) │
|
|
206
|
+
│ - Tree (树形控件) │
|
|
207
|
+
│ - ButtonGroup (按钮组) │
|
|
208
|
+
│ - MeasurePanel (测量面板) │
|
|
209
|
+
│ - SectionPlanePanel (剖切面板) │
|
|
210
|
+
│ - ... │
|
|
211
|
+
└─────────────────────────────────────────┘
|
|
212
|
+
↓
|
|
213
|
+
┌─────────────────────────────────────────┐
|
|
214
|
+
│ Service 层 (服务) │
|
|
215
|
+
│ - LocaleManager (国际化) │
|
|
216
|
+
│ - ThemeManager (主题) │
|
|
217
|
+
│ - EventEmitter (事件总线) │
|
|
218
|
+
└─────────────────────────────────────────┘
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 技术栈
|
|
222
|
+
|
|
223
|
+
- **语言**: TypeScript 5.9.3
|
|
224
|
+
- **构建工具**: Vite 7.2.6 (Library Mode)
|
|
225
|
+
- **类型生成**: vite-plugin-dts
|
|
226
|
+
- **样式注入**: vite-plugin-css-injected-by-js
|
|
227
|
+
- **开发环境**: Vue 3 (用于 Playground)
|
|
228
|
+
|
|
229
|
+
## 📁 项目结构
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
bim-engine-sdk/
|
|
233
|
+
├── src/ # 源代码
|
|
234
|
+
│ ├── bim-engine.ts # 主引擎类
|
|
235
|
+
│ ├── index.ts # 入口文件
|
|
236
|
+
│ ├── managers/ # 管理器层
|
|
237
|
+
│ │ ├── toolbar-manager.ts
|
|
238
|
+
│ │ ├── dialog-manager.ts
|
|
239
|
+
│ │ ├── engine-manager.ts
|
|
240
|
+
│ │ ├── measure-dialog-manager.ts
|
|
241
|
+
│ │ ├── section-plane-dialog-manager.ts
|
|
242
|
+
│ │ ├── section-axis-dialog-manager.ts
|
|
243
|
+
│ │ ├── section-box-dialog-manager.ts
|
|
244
|
+
│ │ ├── walk-control-manager.ts
|
|
245
|
+
│ │ └── ...
|
|
246
|
+
│ ├── components/ # UI 组件层
|
|
247
|
+
│ │ ├── dialog/ # 对话框组件
|
|
248
|
+
│ │ ├── tree/ # 树形控件
|
|
249
|
+
│ │ ├── button-group/ # 按钮组
|
|
250
|
+
│ │ ├── measure-panel/ # 测量面板
|
|
251
|
+
│ │ ├── section-plane-panel/ # 拾取面剖切面板
|
|
252
|
+
│ │ ├── section-axis-panel/ # 轴向剖切面板
|
|
253
|
+
│ │ ├── section-box-panel/ # 剖切盒面板
|
|
254
|
+
│ │ ├── walk-control-panel/ # 漫游控制面板
|
|
255
|
+
│ │ └── ...
|
|
256
|
+
│ ├── services/ # 服务层
|
|
257
|
+
│ │ ├── locale.ts # 国际化服务
|
|
258
|
+
│ │ └── theme.ts # 主题服务
|
|
259
|
+
│ ├── core/ # 核心模块
|
|
260
|
+
│ │ └── event-emitter.ts # 事件系统
|
|
261
|
+
│ ├── types/ # 类型定义
|
|
262
|
+
│ │ ├── component.ts # 组件接口
|
|
263
|
+
│ │ └── events.ts # 事件类型
|
|
264
|
+
│ ├── themes/ # 主题配置
|
|
265
|
+
│ │ ├── dark.ts # 暗色主题
|
|
266
|
+
│ │ └── light.ts # 亮色主题
|
|
267
|
+
│ ├── locales/ # 国际化资源
|
|
268
|
+
│ │ ├── zh-CN.ts # 简体中文
|
|
269
|
+
│ │ └── en-US.ts # 英文
|
|
270
|
+
│ ├── utils/ # 工具函数
|
|
271
|
+
│ │ └── icon-manager.ts # 图标管理器
|
|
272
|
+
│ └── assets/ # 静态资源
|
|
273
|
+
├── dist/ # 构建产物
|
|
274
|
+
│ ├── bim-engine-sdk.es.js # ESM 格式
|
|
275
|
+
│ ├── bim-engine-sdk.umd.js # UMD 格式
|
|
276
|
+
│ └── index.d.ts # TypeScript 类型定义
|
|
277
|
+
├── demo/ # HTML Demo
|
|
278
|
+
├── demo-vue/ # Vue Demo
|
|
279
|
+
├── playground/ # 开发调试环境 (Vue 3)
|
|
280
|
+
├── docs/ # 文档
|
|
281
|
+
│ ├── components/ # 组件文档
|
|
282
|
+
│ └── utils/ # 工具文档
|
|
283
|
+
├── vite.config.ts # Vite 配置
|
|
284
|
+
├── tsconfig.json # TypeScript 配置
|
|
285
|
+
└── package.json # 项目配置
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
## 🎯 核心 API
|
|
289
|
+
|
|
290
|
+
### BimEngine 主类
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
class BimEngine {
|
|
294
|
+
constructor(
|
|
295
|
+
container: HTMLElement | string,
|
|
296
|
+
options?: {
|
|
297
|
+
locale?: 'zh-CN' | 'en-US';
|
|
298
|
+
theme?: 'dark' | 'light';
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
// 管理器初始化方法
|
|
303
|
+
initToolbar(): void;
|
|
304
|
+
initButtonGroup(): void;
|
|
305
|
+
initDialog(): void;
|
|
306
|
+
initEngine(options?: EngineOptions): void;
|
|
307
|
+
initRightKey(): void;
|
|
308
|
+
initConstructTreeBtn(): void;
|
|
309
|
+
initPropertyPanel(): void;
|
|
310
|
+
initMeasure(): void;
|
|
311
|
+
initSectionPlane(): void;
|
|
312
|
+
initSectionAxis(): void;
|
|
313
|
+
initSectionBox(): void;
|
|
314
|
+
initWalkControl(): void;
|
|
315
|
+
initMap(): void;
|
|
316
|
+
|
|
317
|
+
// 主题和国际化
|
|
318
|
+
setTheme(theme: 'dark' | 'light', config?: ThemeConfig): void;
|
|
319
|
+
setLocale(locale: 'zh-CN' | 'en-US'): void;
|
|
320
|
+
|
|
321
|
+
// 事件系统
|
|
322
|
+
on(event: string, handler: Function): void;
|
|
323
|
+
off(event: string, handler: Function): void;
|
|
324
|
+
emit(event: string, ...args: any[]): void;
|
|
325
|
+
|
|
326
|
+
// 销毁
|
|
327
|
+
destroy(): void;
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 管理器
|
|
332
|
+
|
|
333
|
+
每个管理器负责特定功能的生命周期管理:
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
// 3D 引擎管理器
|
|
337
|
+
bimEngine.engine?.loadModel({
|
|
338
|
+
url: '/path/to/model.ifc',
|
|
339
|
+
onProgress: (progress) => console.log(progress),
|
|
340
|
+
onComplete: () => console.log('完成')
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// 测量工具管理器
|
|
344
|
+
bimEngine.measure?.show();
|
|
345
|
+
bimEngine.measure?.hide();
|
|
346
|
+
|
|
347
|
+
// 剖切管理器
|
|
348
|
+
bimEngine.sectionPlane?.show();
|
|
349
|
+
bimEngine.sectionAxis?.show();
|
|
350
|
+
bimEngine.sectionBox?.show();
|
|
351
|
+
|
|
352
|
+
// 漫游控制管理器
|
|
353
|
+
bimEngine.walkControl?.show();
|
|
354
|
+
bimEngine.walkControl?.hide();
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## 🎨 主题定制
|
|
358
|
+
|
|
359
|
+
### 使用内置主题
|
|
360
|
+
|
|
361
|
+
```typescript
|
|
362
|
+
const bimEngine = new BimEngine(container, {
|
|
363
|
+
theme: 'dark' // 'dark' | 'light'
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
// 运行时切换主题
|
|
367
|
+
bimEngine.setTheme('light');
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### 自定义主题
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
bimEngine.setTheme('dark', {
|
|
374
|
+
primaryColor: '#1890ff',
|
|
375
|
+
bgColor: '#1a1a1a',
|
|
376
|
+
textColor: '#ffffff',
|
|
377
|
+
borderColor: '#333333',
|
|
378
|
+
// ... 更多配置
|
|
379
|
+
});
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### 主题变量
|
|
383
|
+
|
|
384
|
+
SDK 使用 CSS 变量实现主题系统,所有组件自动响应主题变化:
|
|
385
|
+
|
|
386
|
+
```css
|
|
387
|
+
--bim-primary-color
|
|
388
|
+
--bim-bg-color
|
|
389
|
+
--bim-text-color
|
|
390
|
+
--bim-border-color
|
|
391
|
+
--bim-dialog-bg
|
|
392
|
+
--bim-dialog-header-bg
|
|
393
|
+
--bim-icon-color
|
|
394
|
+
/* ... 更多变量 */
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## 🌍 国际化
|
|
398
|
+
|
|
399
|
+
### 切换语言
|
|
400
|
+
|
|
401
|
+
```typescript
|
|
402
|
+
const bimEngine = new BimEngine(container, {
|
|
403
|
+
locale: 'zh-CN' // 'zh-CN' | 'en-US'
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
// 运行时切换语言
|
|
407
|
+
bimEngine.setLocale('en-US');
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### 支持的语言
|
|
411
|
+
|
|
412
|
+
- `zh-CN`: 简体中文
|
|
413
|
+
- `en-US`: English
|
|
414
|
+
|
|
415
|
+
## 🔧 开发指南
|
|
416
|
+
|
|
417
|
+
### 环境准备
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# 安装依赖
|
|
421
|
+
npm install
|
|
422
|
+
|
|
423
|
+
# 启动开发环境 (Playground)
|
|
424
|
+
npm run dev
|
|
425
|
+
|
|
426
|
+
# 构建 SDK
|
|
427
|
+
npm run build
|
|
428
|
+
|
|
429
|
+
# 运行 HTML Demo
|
|
430
|
+
npm run dev:demo
|
|
431
|
+
|
|
432
|
+
# 运行 Vue Demo
|
|
433
|
+
npm run dev:demo-vue
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
### 构建产物
|
|
437
|
+
|
|
438
|
+
运行 `npm run build` 后,会在 `dist/` 目录生成:
|
|
439
|
+
|
|
440
|
+
- `bim-engine-sdk.es.js` - ESM 格式 (用于现代打包工具)
|
|
441
|
+
- `bim-engine-sdk.umd.js` - UMD 格式 (用于浏览器直接引入)
|
|
442
|
+
- `index.d.ts` - TypeScript 类型定义
|
|
443
|
+
- `*.css` - 样式文件 (已内联注入到 JS 中)
|
|
444
|
+
|
|
445
|
+
### package.json 导出配置
|
|
446
|
+
|
|
447
|
+
```json
|
|
448
|
+
{
|
|
449
|
+
"main": "./dist/bim-engine-sdk.umd.js",
|
|
450
|
+
"module": "./dist/bim-engine-sdk.es.js",
|
|
451
|
+
"types": "./dist/index.d.ts",
|
|
452
|
+
"exports": {
|
|
453
|
+
".": {
|
|
454
|
+
"types": "./dist/index.d.ts",
|
|
455
|
+
"import": "./dist/bim-engine-sdk.es.js",
|
|
456
|
+
"require": "./dist/bim-engine-sdk.umd.js"
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
## 📖 组件文档
|
|
463
|
+
|
|
464
|
+
详细的组件文档请参考 `docs/` 目录:
|
|
465
|
+
|
|
466
|
+
- [Dialog 对话框](docs/components/dialog.md)
|
|
467
|
+
- [Tree 树形控件](docs/components/tree.md)
|
|
468
|
+
- [ButtonGroup 按钮组](docs/components/button-group.md)
|
|
469
|
+
- [MeasurePanel 测量面板](docs/components/measure-panel.md)
|
|
470
|
+
- [SectionPlanePanel 拾取面剖切](docs/components/section-plane-panel.md)
|
|
471
|
+
- [SectionAxisPanel 轴向剖切](docs/components/section-axis-panel.md)
|
|
472
|
+
- [SectionBoxPanel 剖切盒](docs/components/section-box-panel.md)
|
|
473
|
+
- [WalkControlPanel 漫游控制](docs/components/walk-control-panel.md)
|
|
474
|
+
- [IconManager 图标管理器](docs/utils/icon-manager.md)
|
|
475
|
+
|
|
476
|
+
## 🔌 集成示例
|
|
477
|
+
|
|
478
|
+
### Vue 3 + Vite
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
cd demo-vue
|
|
482
|
+
npm install
|
|
483
|
+
npm run dev
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### HTML
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
cd demo
|
|
490
|
+
npm run dev
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
## 🤝 贡献指南
|
|
494
|
+
|
|
495
|
+
欢迎贡献代码!请遵循以下步骤:
|
|
496
|
+
|
|
497
|
+
1. Fork 本仓库
|
|
498
|
+
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
499
|
+
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
500
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
501
|
+
5. 开启 Pull Request
|
|
502
|
+
|
|
503
|
+
### 代码规范
|
|
504
|
+
|
|
505
|
+
- 使用 TypeScript 编写代码
|
|
506
|
+
- 遵循 ESLint 规则
|
|
507
|
+
- 编写清晰的注释和文档
|
|
508
|
+
- 为新功能添加测试用例
|
|
509
|
+
|
|
510
|
+
## 📝 更新日志
|
|
511
|
+
|
|
512
|
+
### v1.0.0 (2024-12-26)
|
|
513
|
+
|
|
514
|
+
**核心功能**
|
|
515
|
+
- ✨ 初始版本发布
|
|
516
|
+
- ✨ 实现管理器模式架构
|
|
517
|
+
- ✨ 支持 Vue 2/3、React、HTML
|
|
518
|
+
|
|
519
|
+
**组件系统**
|
|
520
|
+
- ✨ Dialog 对话框组件
|
|
521
|
+
- ✨ Tree 树形控件
|
|
522
|
+
- ✨ ButtonGroup 按钮组
|
|
523
|
+
- ✨ MeasurePanel 测量面板
|
|
524
|
+
- ✨ SectionPlanePanel 拾取面剖切
|
|
525
|
+
- ✨ SectionAxisPanel 轴向剖切
|
|
526
|
+
- ✨ SectionBoxPanel 剖切盒
|
|
527
|
+
- ✨ WalkControlPanel 漫游控制
|
|
528
|
+
|
|
529
|
+
**功能特性**
|
|
530
|
+
- ✨ 主题系统 (暗色/亮色)
|
|
531
|
+
- ✨ 国际化 (中英文)
|
|
532
|
+
- ✨ 事件系统
|
|
533
|
+
- ✨ 图标管理器
|
|
534
|
+
|
|
535
|
+
## 📄 许可证
|
|
536
|
+
|
|
537
|
+
ISC License
|
|
538
|
+
|
|
539
|
+
## 🙏 致谢
|
|
540
|
+
|
|
541
|
+
感谢所有为本项目做出贡献的开发者!
|
|
542
|
+
|
|
543
|
+
## 📮 联系方式
|
|
544
|
+
|
|
545
|
+
如有问题或建议,请通过以下方式联系:
|
|
546
|
+
|
|
547
|
+
- 提交 [Issue](https://github.com/your-repo/bim-engine-sdk/issues)
|
|
548
|
+
- 发送邮件至 your-email@example.com
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
**Made with ❤️ by BIM Engine Team**
|