iflow-engine 1.3.2 → 1.3.4

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.
Files changed (99) hide show
  1. package/README.md +36 -16
  2. package/dist/{engine/src/components → components}/button-group/index.d.ts +6 -0
  3. package/dist/components/button-group/toolbar/buttons/camera-switch/index.d.ts +3 -0
  4. package/dist/{engine/src/components → components}/engine/index.d.ts +86 -2
  5. package/dist/{engine/src/core → core}/base-manager.d.ts +7 -0
  6. package/dist/iflow-engine.es.js +7340 -7326
  7. package/dist/iflow-engine.es.js.map +1 -1
  8. package/dist/iflow-engine.umd.js +578 -578
  9. package/dist/iflow-engine.umd.js.map +1 -1
  10. package/dist/{engine/src/locales → locales}/types.d.ts +9 -19
  11. package/dist/managers/engine-manager.d.ts +46 -0
  12. package/dist/{engine/src/managers → managers}/setting-dialog-manager.d.ts +32 -12
  13. package/dist/{engine/src/managers → managers}/toolbar-manager.d.ts +6 -0
  14. package/package.json +3 -3
  15. package/dist/engine/src/managers/engine-manager.d.ts +0 -268
  16. /package/dist/{engine/src/bim-engine.d.ts → bim-engine.d.ts} +0 -0
  17. /package/dist/{engine/src/components → components}/ai-chat/index.d.ts +0 -0
  18. /package/dist/{engine/src/components → components}/ai-chat/types.d.ts +0 -0
  19. /package/dist/{engine/src/components → components}/button-group/index.type.d.ts +0 -0
  20. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/ai-chat/index.d.ts +0 -0
  21. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/fullscreen/index.d.ts +0 -0
  22. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/home/index.d.ts +0 -0
  23. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/info/icon.d.ts +0 -0
  24. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/info/index.d.ts +0 -0
  25. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/map/index.d.ts +0 -0
  26. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/measure/index.d.ts +0 -0
  27. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/property/index.d.ts +0 -0
  28. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/section/section-axis/index.d.ts +0 -0
  29. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/section/section-box/index.d.ts +0 -0
  30. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/section/section-menu/index.d.ts +0 -0
  31. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/section/section-plane/index.d.ts +0 -0
  32. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/setting/index.d.ts +0 -0
  33. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/walk/walk-bird/index.d.ts +0 -0
  34. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/walk/walk-menu/index.d.ts +0 -0
  35. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/walk/walk-person/index.d.ts +0 -0
  36. /package/dist/{engine/src/components → components}/button-group/toolbar/buttons/zoom-box/index.d.ts +0 -0
  37. /package/dist/{engine/src/components → components}/button-group/toolbar/index.d.ts +0 -0
  38. /package/dist/{engine/src/components → components}/collapse/index.d.ts +0 -0
  39. /package/dist/{engine/src/components → components}/collapse/types.d.ts +0 -0
  40. /package/dist/{engine/src/components → components}/description/index.d.ts +0 -0
  41. /package/dist/{engine/src/components → components}/description/types.d.ts +0 -0
  42. /package/dist/{engine/src/components → components}/dialog/index.d.ts +0 -0
  43. /package/dist/{engine/src/components → components}/dialog/index.type.d.ts +0 -0
  44. /package/dist/{engine/src/components → components}/engine/types.d.ts +0 -0
  45. /package/dist/{engine/src/components → components}/measure-panel/index.d.ts +0 -0
  46. /package/dist/{engine/src/components → components}/measure-panel/types.d.ts +0 -0
  47. /package/dist/{engine/src/components → components}/menu/buttons/four.d.ts +0 -0
  48. /package/dist/{engine/src/components → components}/menu/buttons/home.d.ts +0 -0
  49. /package/dist/{engine/src/components → components}/menu/buttons/info.d.ts +0 -0
  50. /package/dist/{engine/src/components → components}/menu/buttons/second.d.ts +0 -0
  51. /package/dist/{engine/src/components → components}/menu/index.d.ts +0 -0
  52. /package/dist/{engine/src/components → components}/menu/item.d.ts +0 -0
  53. /package/dist/{engine/src/components → components}/menu/types.d.ts +0 -0
  54. /package/dist/{engine/src/components → components}/right-key/index.d.ts +0 -0
  55. /package/dist/{engine/src/components → components}/right-key/types.d.ts +0 -0
  56. /package/dist/{engine/src/components → components}/section-axis-panel/index.d.ts +0 -0
  57. /package/dist/{engine/src/components → components}/section-axis-panel/types.d.ts +0 -0
  58. /package/dist/{engine/src/components → components}/section-box-panel/index.d.ts +0 -0
  59. /package/dist/{engine/src/components → components}/section-box-panel/types.d.ts +0 -0
  60. /package/dist/{engine/src/components → components}/section-plane-panel/index.d.ts +0 -0
  61. /package/dist/{engine/src/components → components}/section-plane-panel/types.d.ts +0 -0
  62. /package/dist/{engine/src/components → components}/tab/index.d.ts +0 -0
  63. /package/dist/{engine/src/components → components}/tab/index.type.d.ts +0 -0
  64. /package/dist/{engine/src/components → components}/tree/index.d.ts +0 -0
  65. /package/dist/{engine/src/components → components}/tree/tree-node.d.ts +0 -0
  66. /package/dist/{engine/src/components → components}/tree/types.d.ts +0 -0
  67. /package/dist/{engine/src/components → components}/walk-control-panel/index.d.ts +0 -0
  68. /package/dist/{engine/src/components → components}/walk-control-panel/types.d.ts +0 -0
  69. /package/dist/{engine/src/components → components}/walk-path-panel/index.d.ts +0 -0
  70. /package/dist/{engine/src/components → components}/walk-path-panel/types.d.ts +0 -0
  71. /package/dist/{engine/src/components → components}/walk-plan-view-panel/index.d.ts +0 -0
  72. /package/dist/{engine/src/core → core}/base-dialog-manager.d.ts +0 -0
  73. /package/dist/{engine/src/core → core}/event-emitter.d.ts +0 -0
  74. /package/dist/{engine/src/core → core}/manager-registry.d.ts +0 -0
  75. /package/dist/{engine/src/index.d.ts → index.d.ts} +0 -0
  76. /package/dist/{engine/src/locales → locales}/en-US.d.ts +0 -0
  77. /package/dist/{engine/src/locales → locales}/zh-CN.d.ts +0 -0
  78. /package/dist/{engine/src/managers → managers}/ai-chat-manager.d.ts +0 -0
  79. /package/dist/{engine/src/managers → managers}/button-group-manager.d.ts +0 -0
  80. /package/dist/{engine/src/managers → managers}/component-detail-manager.d.ts +0 -0
  81. /package/dist/{engine/src/managers → managers}/construct-tree-manager-btn.d.ts +0 -0
  82. /package/dist/{engine/src/managers → managers}/dialog-manager.d.ts +0 -0
  83. /package/dist/{engine/src/managers → managers}/engine-info-dialog-manager.d.ts +0 -0
  84. /package/dist/{engine/src/managers → managers}/measure-dialog-manager.d.ts +0 -0
  85. /package/dist/{engine/src/managers → managers}/right-key-manager.d.ts +0 -0
  86. /package/dist/{engine/src/managers → managers}/section-axis-dialog-manager.d.ts +0 -0
  87. /package/dist/{engine/src/managers → managers}/section-box-dialog-manager.d.ts +0 -0
  88. /package/dist/{engine/src/managers → managers}/section-plane-dialog-manager.d.ts +0 -0
  89. /package/dist/{engine/src/managers → managers}/walk-control-manager.d.ts +0 -0
  90. /package/dist/{engine/src/managers → managers}/walk-path-dialog-manager.d.ts +0 -0
  91. /package/dist/{engine/src/managers → managers}/walk-plan-view-dialog-manager.d.ts +0 -0
  92. /package/dist/{engine/src/services → services}/locale.d.ts +0 -0
  93. /package/dist/{engine/src/services → services}/theme.d.ts +0 -0
  94. /package/dist/{engine/src/themes → themes}/presets.d.ts +0 -0
  95. /package/dist/{engine/src/themes → themes}/types.d.ts +0 -0
  96. /package/dist/{engine/src/types → types}/component.d.ts +0 -0
  97. /package/dist/{engine/src/types → types}/events.d.ts +0 -0
  98. /package/dist/{engine/src/types → types}/measure.d.ts +0 -0
  99. /package/dist/{engine/src/utils → utils}/icon-manager.d.ts +0 -0
package/README.md CHANGED
@@ -70,16 +70,18 @@ onMounted(() => {
70
70
  bimEngine.initWalkControl(); // 漫游控制
71
71
  bimEngine.initMap(); // 地图
72
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('模型加载完成');
73
+ // 加载模型(EngineManager 对外公共 API)
74
+ bimEngine.engine?.loadModel(
75
+ ['/path/to/your/model.ifc'],
76
+ {
77
+ onProgress: (progress) => {
78
+ console.log(`加载进度: ${progress}%`);
79
+ },
80
+ onComplete: () => {
81
+ console.log('模型加载完成');
82
+ }
81
83
  }
82
- });
84
+ );
83
85
  }
84
86
  });
85
87
 
@@ -179,6 +181,13 @@ BIM Engine SDK 采用 **管理器模式 (Manager Pattern)** 作为核心架构,
179
181
  - ✅ 简化集成复杂度
180
182
  - ✅ 支持按需加载
181
183
 
184
+ > 架构更新(2026-03)
185
+ >
186
+ > - `EngineManager` 已从全量透传层收敛为“外部公共 API + 生命周期编排”
187
+ > - 内部 Manager 统一通过 `BaseManager.engineComponent` 直接访问 `Engine` 组件
188
+ > - 非 Manager 场景通过 `registry.engine3d?.getEngineComponent()?.xxx()` 访问引擎能力
189
+ > - `Engine.getEngine()` 已移除,事件订阅使用 `onRawEvent()/offRawEvent()`
190
+
182
191
  ### 架构分层
183
192
 
184
193
  ```
@@ -193,7 +202,7 @@ BIM Engine SDK 采用 **管理器模式 (Manager Pattern)** 作为核心架构,
193
202
  │ Manager 层 (管理器) │
194
203
  │ - ToolbarManager (工具栏) │
195
204
  │ - DialogManager (对话框) │
196
- │ - EngineManager (3D引擎)
205
+ │ - EngineManager (外部公共API/生命周期)
197
206
  │ - MeasureDialogManager (测量) │
198
207
  │ - SectionPlaneDialogManager (剖切) │
199
208
  │ - WalkControlManager (漫游) │
@@ -333,12 +342,14 @@ class BimEngine {
333
342
  每个管理器负责特定功能的生命周期管理:
334
343
 
335
344
  ```typescript
336
- // 3D 引擎管理器
337
- bimEngine.engine?.loadModel({
338
- url: '/path/to/model.ifc',
339
- onProgress: (progress) => console.log(progress),
340
- onComplete: () => console.log('完成')
341
- });
345
+ // 3D 引擎管理器(对外公共 API)
346
+ bimEngine.engine?.loadModel(
347
+ ['/path/to/model.ifc'],
348
+ {
349
+ onProgress: (progress) => console.log(progress),
350
+ onComplete: () => console.log('完成')
351
+ }
352
+ );
342
353
 
343
354
  // 测量工具管理器
344
355
  bimEngine.measure?.show();
@@ -509,6 +520,15 @@ npm run dev
509
520
 
510
521
  ## 📝 更新日志
511
522
 
523
+ ### v1.3.2 (2026-03-05)
524
+
525
+ **架构优化**
526
+ - ✨ EngineManager 瘦身:移除大规模 1:1 透传方法
527
+ - ✨ 新增 `EngineManager.getEngineComponent()` 供内部访问
528
+ - ✨ BaseManager 新增 `engineComponent` 便捷访问器
529
+ - ✨ Manager 内部调用统一迁移为 `this.engineComponent?.xxx()`
530
+ - ✨ 原始事件访问改为 `onRawEvent()/offRawEvent()`,移除 `getEngine()`
531
+
512
532
  ### v1.0.0 (2024-12-26)
513
533
 
514
534
  **核心功能**
@@ -77,6 +77,12 @@ export declare class BimButtonGroup implements IBimComponent {
77
77
  private closeDropdown;
78
78
  private updateButtonState;
79
79
  private getIcon;
80
+ /**
81
+ * 更新指定按钮的图标
82
+ * @param id 按钮 ID
83
+ * @param icon 新的 SVG 图标字符串
84
+ */
85
+ updateButtonIcon(id: string, icon: string): void;
80
86
  updateButtonVisibility(id: string, visible: boolean): void;
81
87
  setShowLabel(show: boolean): void;
82
88
  private updateLabelsVisibility;
@@ -0,0 +1,3 @@
1
+ import { ButtonConfig } from '../../../index.type';
2
+ import { ManagerRegistry } from '../../../../../core/manager-registry';
3
+ export declare const createCameraSwitchButton: (registry: ManagerRegistry) => ButtonConfig;
@@ -77,9 +77,18 @@ export declare class Engine implements IBimComponent {
77
77
  */
78
78
  CameraGoHome(): void;
79
79
  /**
80
- * 获取原始 3D 引擎实例
80
+ * 订阅原始引擎事件
81
+ * 用于需要访问底层引擎事件的场景(如测量回调、剖切移动等)
82
+ * @param event 事件名称
83
+ * @param handler 事件处理函数
81
84
  */
82
- getEngine(): any;
85
+ onRawEvent(event: string, handler: (...args: any[]) => void): void;
86
+ /**
87
+ * 取消订阅原始引擎事件
88
+ * @param event 事件名称
89
+ * @param handler 事件处理函数
90
+ */
91
+ offRawEvent(event: string, handler: (...args: any[]) => void): void;
83
92
  /**
84
93
  * 暂停渲染
85
94
  */
@@ -252,6 +261,16 @@ export declare class Engine implements IBimComponent {
252
261
  * @remarks 对接底层 `engine.clipping.reverse()`
253
262
  */
254
263
  reverseSection(): void;
264
+ /**
265
+ * 切换相机类型(透视/正交)
266
+ * @remarks 底层调用 cameraModule.switchCurrentCamera(),保留当前相机位置
267
+ */
268
+ switchCamera(): void;
269
+ /**
270
+ * 获取当前相机类型
271
+ * @returns 'perspective' | 'orthographic'
272
+ */
273
+ getCameraType(): 'perspective' | 'orthographic';
255
274
  /**
256
275
  * 获取当前渲染模式
257
276
  * @returns 'simple' | 'balance' | 'advanced'
@@ -262,6 +281,71 @@ export declare class Engine implements IBimComponent {
262
281
  * @param mode 'simple'(性能模式) | 'balance'(平衡模式) | 'advanced'(效果模式)
263
282
  */
264
283
  setRenderMode(mode: 'simple' | 'balance' | 'advanced'): void;
284
+ /** 启用模型边线显示 */
285
+ activeModelEdge(): void;
286
+ /** 关闭模型边线显示 */
287
+ disActiveModelEdge(): void;
288
+ /** 获取边线显示状态 */
289
+ getModelEdgeActive(): boolean;
290
+ /**
291
+ * 设置环境光照强度
292
+ * @param intensity 0-100
293
+ */
294
+ setAmbientLightIntensity(intensity: number): void;
295
+ /** 获取当前环境光照强度 */
296
+ getAmbientLightIntensity(): number;
297
+ /**
298
+ * 设置场景对比度
299
+ * @param contrast 0-100
300
+ */
301
+ setSceneContrast(contrast: number): void;
302
+ /** 获取当前场景对比度 */
303
+ getSceneContrast(): number;
304
+ /**
305
+ * 设置场景饾和度
306
+ * @param saturation 0-100
307
+ */
308
+ setSceneSaturation(saturation: number): void;
309
+ /** 获取当前场景饾和度 */
310
+ getSceneSaturation(): number;
311
+ /** 获取 HDR 背景列表 */
312
+ getHDRBackgroundList(): {
313
+ name: string;
314
+ id: string;
315
+ }[];
316
+ /**
317
+ * 设置当前 HDR 背景
318
+ * @param id 背景 ID
319
+ */
320
+ setHDRBackgroundId(id: string): void;
321
+ /** 获取当前 HDR 背景 ID */
322
+ getHDRBackgroundId(): string;
323
+ /**
324
+ * 设置 HDR 背景可见性
325
+ * @param visible 是否可见
326
+ */
327
+ setHDRBackgroundVisibility(visible: boolean): void;
328
+ /** 获取 HDR 背景可见性 */
329
+ getHDRBackgroundVisibility(): boolean;
330
+ /** 获取地面列表 */
331
+ getGroundList(): {
332
+ name: string;
333
+ id: string;
334
+ }[];
335
+ /**
336
+ * 设置当前地面类型
337
+ * @param id 地面 ID
338
+ */
339
+ setGroundId(id: string): void;
340
+ /** 获取当前地面 ID */
341
+ getGroundId(): string;
342
+ /**
343
+ * 设置地面高度(单位:m)
344
+ * @param elevation 地面高度值
345
+ */
346
+ setGroundElevation(elevation: number): void;
347
+ /** 获取当前地面高度(单位:m) */
348
+ getGroundElevation(): number;
265
349
  /** 漫游模式是否激活 */
266
350
  private isWalkModeActive;
267
351
  /**
@@ -1,5 +1,6 @@
1
1
  import { ManagerRegistry } from './manager-registry';
2
2
  import { EngineEvents } from '../types/events';
3
+ import { Engine } from '../components/engine';
3
4
  /**
4
5
  * Manager 抽象基类
5
6
  * - 通过构造函数接收 Registry 实例
@@ -11,6 +12,12 @@ export declare abstract class BaseManager {
11
12
  /** 事件订阅列表,用于自动清理 */
12
13
  private subscriptions;
13
14
  constructor(registry: ManagerRegistry);
15
+ /**
16
+ * 获取 Engine 组件实例的便捷访问器
17
+ * 内部管理器通过此 getter 直接访问 Engine 组件的全部能力
18
+ * 替代原来的 this.registry.engine3d?.xxx() 透传链
19
+ */
20
+ protected get engineComponent(): Engine | null;
14
21
  /**
15
22
  * 订阅事件(自动追踪,destroy 时自动取消)
16
23
  * @param event 事件名称