feat: 优化测量功能架构与引擎组件

- 重构测量激活逻辑,在 Engine 组件中添加统一的 activateMeasure(mode) 方法
- 简化 MeasureDialogManager,移除冗余的 handleMeasureTypeChange 方法
- 添加 EngineManager.activateMeasure 转发方法
- 修复 loadModel 错误,正确调用 Engine 组件方法
- 为 Engine 组件设置固定背景渐变色
- MeasurePanel 初始化时触发 onModeChange 回调
- 添加 MeasureMode 共享类型定义

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
yuding
2026-01-15 14:13:13 +08:00
parent cd1f8186d0
commit f6257f5162
101 changed files with 31269 additions and 29937 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

33
dist/index.d.ts vendored
View File

@@ -654,6 +654,23 @@ declare class EngineManager extends BimComponent {
* 用于直接调用第三方引擎的其他 API
*/
getEngine(): any;
/**
* 回到主视角
*/
CameraGoHome(): void;
/**
* 激活测量功能
* @param mode 测量类型
*/
activateMeasure(mode: MeasureMode): void;
/**
* 停用测量功能
*/
deactivateMeasure(): void;
/**
* 获取当前激活的测量类型
*/
getCurrentMeasureType(): MeasureMode | null;
/**
* 销毁 3D 引擎实例
*/
@@ -667,8 +684,8 @@ declare class EngineManager extends BimComponent {
export declare interface EngineOptions {
/** 容器元素 */
container: HTMLElement;
/** 背景颜色(十六进制数字如 0x333333 */
backgroundColor?: number;
/** 背景颜色(十六进制数字如 0x333333,或 CSS 字符串如 'linear-gradient(...)' */
backgroundColor?: number | string;
/** WebGL 版本 */
version?: 'v1' | 'v2';
/** 是否显示性能统计 */
@@ -824,18 +841,18 @@ declare class MeasureDialogManager extends BimComponent {
}
/**
* 测量面板 - 类型定义
* 测量相关的通用类型定义
*
* 注意
* - 本次只实现 UI不实现真实测量逻辑拾取、画线、计算等
* - 这里的类型以“可读性优先”为原则,尽量直观、易扩展。
* 说明
* - 这些类型定义在通用 types 目录下,避免组件间直接耦合
* - Engine 组件、MeasurePanel 组件、Manager 都可以引用这些类型
*/
/**
* 测量方式8 种)
*
* 说明:
* - id 采用英文驼峰/小写,便于程序内部使用
* - 显示名称必须通过国际化 key 获取(见 locales
* - id 采用英文驼峰/小写,便于程序内部使用
* - 显示名称必须通过国际化 key 获取(见 locales
*/
declare type MeasureMode = 'distance' | 'minDistance' | 'angle' | 'elevation' | 'volume' | 'laserDistance' | 'slope' | 'spaceVolume';