- 将包名从 @fishdingding/bim-engine-sdk 改为 iflow-engine - 将构建输出文件从 bim-engine-sdk.*.js 改为 iflow-engine.*.js - 将全局变量从 LyzBimEngineSDK 改为 IflowEngine - 将第三方引擎SDK从本地引入改为npm包引入 (iflow-engine-base) - 移除本地 src/engine_base 目录,移至回收站 - 更新所有文档和demo中的引用
449 lines
11 KiB
TypeScript
449 lines
11 KiB
TypeScript
import { default as default_2 } from 'stats.js';
|
||
import * as THREE from 'three';
|
||
|
||
declare class CameraModule {
|
||
private engine;
|
||
perspectiveCamera: THREE.PerspectiveCamera;
|
||
orthographicCamera: THREE.OrthographicCamera;
|
||
constructor(engine: any);
|
||
switchToPerspectiveCamera(): void;
|
||
switchToOrthographicCamera(): void;
|
||
getCameraType(): CameraType;
|
||
getCameraPose(): ICameraPose;
|
||
restoreCameraPose(pose: ICameraPose): void;
|
||
}
|
||
|
||
declare enum CameraType {
|
||
PERSPECTIVE = "perspective",
|
||
ORTHOGRAPHIC = "orthographic"
|
||
}
|
||
|
||
declare class Clipping {
|
||
private engine;
|
||
sectionPlaneX: any;
|
||
sectionPlaneY: any;
|
||
sectionPlaneZ: any;
|
||
sectionBox: any;
|
||
constructor(engine: any);
|
||
disActive(): void;
|
||
}
|
||
|
||
declare class ComposerModule {
|
||
private engine;
|
||
composer: any;
|
||
private saturationPass;
|
||
constructor(engine: any);
|
||
resize(): void;
|
||
init(): void;
|
||
}
|
||
|
||
declare class ControlModule {
|
||
private engine;
|
||
orbitControls: any;
|
||
firstPersonControls: any;
|
||
isActive: boolean;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
active(): void;
|
||
disActive(): void;
|
||
switchFirstPersonMode(): void;
|
||
switchDefaultMode(): void;
|
||
update(): void;
|
||
}
|
||
|
||
/**
|
||
* Factory function to create the BIM Engine instance.
|
||
*
|
||
* @param options Configuration options
|
||
* @returns An instance adhering to IBimEngine interface
|
||
*/
|
||
export declare function createEngine(options: EngineOptions): EngineKernelV2;
|
||
|
||
declare class DeviceModule {
|
||
private engine;
|
||
deviceType: string;
|
||
constructor(engine: any);
|
||
getDeviceType(): string;
|
||
getContainerSize(): {
|
||
width: any;
|
||
height: any;
|
||
};
|
||
}
|
||
|
||
/**
|
||
* 引擎信息统计类
|
||
* 用于统计引擎中模型的顶点和三角面数量
|
||
*/
|
||
declare class EngineInfo {
|
||
private engine;
|
||
constructor(engine: any);
|
||
/**
|
||
* 获取引擎统计信息
|
||
* 统计场景中所有网格的顶点数和三角面数
|
||
* @returns 返回包含顶点数和三角面数的对象
|
||
*/
|
||
getEngineInfo(): {
|
||
totalVertices: number;
|
||
totalTriangles: number;
|
||
meshCount: number;
|
||
};
|
||
}
|
||
|
||
declare class EngineKernelV2 {
|
||
private options;
|
||
private DeviceType;
|
||
private animationId;
|
||
private animate;
|
||
scene: THREE.Scene | null;
|
||
camera: THREE.Camera | null;
|
||
renderer: THREE.WebGLRenderer | null;
|
||
sceneModule: SceneModule;
|
||
cameraModule: CameraModule;
|
||
deviceModule: DeviceModule;
|
||
renderModule: RenderModule;
|
||
controlModule: ControlModule;
|
||
composerModule: ComposerModule;
|
||
loaderModule: LoaderModule;
|
||
engineStatus: EngineStatus;
|
||
events: EventModule;
|
||
lightModule: LightModule;
|
||
interactionModule: InteractionModule;
|
||
modelToolModule: ModelToolModule;
|
||
handelBehaved: typeof HandelBehaved;
|
||
octreeBox: any;
|
||
controls: any;
|
||
stats: default_2;
|
||
viewCube: ViewCube;
|
||
rangeScale: RangeScale;
|
||
setting: Setting;
|
||
measure: Measure;
|
||
clipping: Clipping;
|
||
modelTree: ModelTree;
|
||
engineInfo: EngineInfo;
|
||
modelProperties: ModelProperties;
|
||
modelMapperBatch: ModelMapperBatch;
|
||
models: any[];
|
||
private container;
|
||
constructor(options: any);
|
||
}
|
||
|
||
/**
|
||
* 引擎初始化配置
|
||
*/
|
||
declare interface EngineOptions {
|
||
containerId: string;
|
||
backgroundColor?: string | number | null;
|
||
antialias?: boolean;
|
||
version?: 'v1' | 'v2';
|
||
showStats?: boolean;
|
||
showViewCube?: boolean;
|
||
}
|
||
|
||
declare class EngineStatus {
|
||
private engine;
|
||
isFree: boolean;
|
||
highlightModels: any[];
|
||
hideModels: any[];
|
||
models: any[];
|
||
constructor(engine: any);
|
||
init(): void;
|
||
updateFree(status: boolean): void;
|
||
closeAllFunction: () => void;
|
||
}
|
||
|
||
declare class EventModule {
|
||
private listeners;
|
||
on<T = any>(event: EventType, callback: (data: T) => void): void;
|
||
off<T = any>(event: EventType, callback: (data: T) => void): void;
|
||
trigger(event: EventType, data?: any): void;
|
||
}
|
||
|
||
/**
|
||
* 事件类型枚举
|
||
*/
|
||
declare enum EventType {
|
||
ModelLoadStart = "model-load-start",
|
||
ModelLoadProgress = "model-load-progress",
|
||
ModelLoaded = "model-loaded",
|
||
ModelError = "model-error",
|
||
SelectionChanged = "selection-changed",// data: { ids: string[], modelId: string }
|
||
HoverChanged = "hover-changed",// data: { id: string | null, point: Vector3 }
|
||
Click = "click",// data: MouseEventData
|
||
MouseMove = "mouse-move",// data: MouseEventData - 鼠标移动事件
|
||
CameraChanged = "camera-changed",// 相机移动时持续触发
|
||
CameraIdle = "camera-idle",// 相机静止后触发
|
||
EngineFree = "engine-free",
|
||
EngineBusy = "engine-busy"
|
||
}
|
||
|
||
/**
|
||
* 行为处理器 - 管理引擎的交互行为(鼠标、键盘事件等)
|
||
* @param engine 引擎实例
|
||
* @returns 行为处理器对象
|
||
*/
|
||
declare function HandelBehaved(engine: any): any;
|
||
|
||
declare interface ICameraPose {
|
||
type: CameraType;
|
||
position: {
|
||
x: number;
|
||
y: number;
|
||
z: number;
|
||
};
|
||
rotation: {
|
||
x: number;
|
||
y: number;
|
||
z: number;
|
||
};
|
||
quaternion: {
|
||
x: number;
|
||
y: number;
|
||
z: number;
|
||
w: number;
|
||
};
|
||
target?: {
|
||
x: number;
|
||
y: number;
|
||
z: number;
|
||
};
|
||
zoom?: number;
|
||
}
|
||
|
||
declare class InteractionModule {
|
||
private engine;
|
||
private behavior;
|
||
private isCtrlDown;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
active(): void;
|
||
disActive(): void;
|
||
handelKeyCtrlUp(): void;
|
||
handelKeyCtrlDown(): void;
|
||
handleMouseClick(event: any): void;
|
||
handleMouseDoubleClick(event: any): void;
|
||
}
|
||
|
||
declare class LightModule {
|
||
private engine;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
}
|
||
|
||
declare class LoaderModule {
|
||
private engine;
|
||
constructor(engine: any);
|
||
loadModels(urls: string[], options?: LoadModelOptions): Promise<void>;
|
||
}
|
||
|
||
/**
|
||
* 模型加载配置项
|
||
*/
|
||
declare interface LoadModelOptions {
|
||
/** 自定义模型 ID,若不提供则自动生成 UUID */
|
||
id?: string;
|
||
/** 初始名称 */
|
||
name?: string;
|
||
/** 初始变换矩阵 (平移、旋转、缩放) */
|
||
matrix?: number[];
|
||
/** 初始位置 [x, y, z] (如果提供了 matrix,此项可能被忽略或叠加) */
|
||
position?: [number, number, number];
|
||
/** 初始旋转 [x, y, z] (欧拉角,弧度) */
|
||
rotation?: [number, number, number];
|
||
/** 初始缩放 [x, y, z] */
|
||
scale?: [number, number, number];
|
||
/** 加载进度回调 (0-100) */
|
||
onProgress?: (progress: number) => void;
|
||
}
|
||
|
||
declare class Measure {
|
||
private isActive;
|
||
private engine;
|
||
private clearHeightMeasure;
|
||
private distanceMeasure;
|
||
private clearDistanceMeasure;
|
||
private elevationMeasure;
|
||
private pointMeasure;
|
||
private angleMeasure;
|
||
private areaMeasure;
|
||
private slopeMeasure;
|
||
private tools;
|
||
private annotationContainer;
|
||
private annotationData;
|
||
constructor(engine: any);
|
||
active(): void;
|
||
disActive(): void;
|
||
clearAll(): void;
|
||
update(): void;
|
||
}
|
||
|
||
declare class ModelMapperBatch {
|
||
private engine;
|
||
constructor(engine: any);
|
||
getModelTypes(): void;
|
||
getModelMajors(): void;
|
||
getModelLevels(): void;
|
||
getModelMappers(models: any[]): void;
|
||
getModelMapper(url: string, id: number): any;
|
||
getModelSWithType(type: string, callback: any): any[];
|
||
getModelSWithLevel(level: string, callback: any): any[];
|
||
getModelsWithMajor(major: string, callback: any): any[];
|
||
}
|
||
|
||
declare class ModelProperties {
|
||
private engine;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
getModelProperties(url: string, id: string, callback: (properties: any) => void): void;
|
||
}
|
||
|
||
declare class ModelToolModule {
|
||
private engine;
|
||
private highlightMaterial;
|
||
private hideMaterial;
|
||
constructor(engine_: any);
|
||
highlightModel(models: any): void;
|
||
unhighlightModel(models: any): void;
|
||
unhighlightAllModels(): void;
|
||
hideModel(models: any): void;
|
||
showModel(models: any): void;
|
||
showAllModels(): void;
|
||
setModelColor(model: any, color: string): void;
|
||
setAllModelsColor(color: string): void;
|
||
restoreAllModelsColor(): void;
|
||
getModelsBox(models: any): THREE.Box3;
|
||
getModelDescription(model: any): void;
|
||
}
|
||
|
||
declare class ModelTree {
|
||
private engine;
|
||
constructor(engine: any);
|
||
getTreeData(): any[];
|
||
}
|
||
|
||
/**
|
||
* RangeScale - 范围缩放工具
|
||
*
|
||
* 功能:
|
||
* 1. 用户在屏幕上绘制一个区域(通过鼠标拖拽)
|
||
* 2. 将屏幕区域转换为世界坐标
|
||
* 3. 计算该区域在世界空间中的包围盒
|
||
* 4. 调整相机位置和视角,使该区域适合视口
|
||
*/
|
||
declare class RangeScale {
|
||
private engine;
|
||
private isDrawing;
|
||
private startPoint;
|
||
private endPoint;
|
||
private selectionBox;
|
||
private worldToScreen;
|
||
private boundMouseDown;
|
||
private boundMouseMove;
|
||
private boundMouseUp;
|
||
private boundKeyDown;
|
||
constructor(engine: any);
|
||
/**
|
||
* 初始化工具
|
||
* 创建绘制框UI元素,初始化坐标转换工具
|
||
*/
|
||
init(): void;
|
||
/**
|
||
* 激活工具
|
||
* 禁用控制器,添加鼠标事件监听器和键盘事件监听器
|
||
*/
|
||
active(): void;
|
||
/**
|
||
* 停用工具
|
||
* 启用控制器,移除鼠标事件监听器和键盘事件监听器
|
||
*/
|
||
disActive(): void;
|
||
/**
|
||
* 创建绘制框UI元素
|
||
* 用于在屏幕上显示用户绘制的区域
|
||
*/
|
||
private createSelectionBoxElement;
|
||
/**
|
||
* 鼠标按下事件处理
|
||
* 开始绘制区域
|
||
*/
|
||
private onMouseDown;
|
||
/**
|
||
* 鼠标移动事件处理
|
||
* 更新绘制框的显示
|
||
*/
|
||
private onMouseMove;
|
||
/**
|
||
* 鼠标释放事件处理
|
||
* 结束绘制,执行缩放操作
|
||
*/
|
||
private onMouseUp;
|
||
/**
|
||
* 键盘按下事件处理
|
||
* 按下 ESC 键时退出功能
|
||
*/
|
||
private onKeyDown;
|
||
/**
|
||
* 结束绘制
|
||
* 隐藏绘制框
|
||
*/
|
||
private endDrawing;
|
||
/**
|
||
* 更新绘制框UI
|
||
* 根据起点和终点更新绘制框的位置和大小
|
||
*/
|
||
private updateSelectionBoxUI;
|
||
/**
|
||
* 执行缩放操作
|
||
* 将屏幕区域转换为世界坐标,计算包围盒,调整相机视角
|
||
*/
|
||
private performZoom;
|
||
/**
|
||
* 调整相机视角以适应包围盒
|
||
* @param boundingBox - 要适应的包围盒
|
||
*/
|
||
private fitCameraToBoundingBox;
|
||
}
|
||
|
||
declare class RenderModule {
|
||
private engine;
|
||
renderer: THREE.WebGLRenderer | null;
|
||
constructor(engine: any);
|
||
createRenderer(): THREE.WebGLRenderer;
|
||
disposeRenderer(): void;
|
||
}
|
||
|
||
declare class SceneModule {
|
||
private engine;
|
||
scene: THREE.Scene | null;
|
||
constructor(engine: any);
|
||
}
|
||
|
||
declare class Setting {
|
||
private engine;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
}
|
||
|
||
declare class ViewCube {
|
||
private engine;
|
||
cubeTool: any;
|
||
constructor(engine: any);
|
||
init(): void;
|
||
CameraGoHome(): void;
|
||
zoomToModel(box: any): void;
|
||
}
|
||
|
||
export { }
|
||
|
||
declare module 'three' {
|
||
namespace THREE {
|
||
class OrbitControls {
|
||
enabled: boolean;
|
||
dampingFactor: number;
|
||
constructor(_Engine: any, object: any, domElement: HTMLElement);
|
||
update(): void;
|
||
addEventListener(type: string, listener: (event: any) => void): void;
|
||
[key: string]: any;
|
||
}
|
||
}
|
||
}
|