import { Material, Matrix4, Mesh, Object3D } from 'three'; import { FlatMesh, IfcGeometry, LoaderError, LoaderSettings, RawLineData, Vector } from 'web-ifc'; import { ParserProgress } from "./components/IFCParser"; export declare const IdAttrName = "expressID"; export declare type IdAttributeByMaterial = { [id: number]: number; }; export declare type IdAttributesByMaterials = { [materialID: string]: IdAttributeByMaterial; }; export interface BaseSubsetConfig { scene?: Object3D; ids: number[]; removePrevious: boolean; material?: Material; customID?: string; applyBVH?: boolean; } export interface SubsetConfig extends BaseSubsetConfig { modelID: number; } export declare const DEFAULT = "default"; export declare type MapFaceindexID = { [key: number]: number; }; export interface TypesMap { [key: number]: number; } export interface IfcModel { modelID: number; mesh: IfcMesh; types: TypesMap; jsonData: { [id: number]: JSONObject; }; } export interface JSONObject { expressID: number; type: string; [key: string]: any; } export interface Worker { active: boolean; path: string; } export interface IfcState { models: { [modelID: number]: IfcModel; }; api: WebIfcAPI; useJSON: boolean; worker: Worker; webIfcSettings?: LoaderSettings; onProgress?: (event: ParserProgress) => void; coordinationMatrix?: Matrix4; wasmPath?: string; } export interface IfcMesh extends Mesh { modelID: number; } export interface Node { expressID: number; type: string; children: Node[]; } export interface pName { name: number; relating: string; related: string; key: string; } export interface NewIfcModel { schema: string; name?: string; description?: string[]; authors?: string[]; organizations?: string[]; authorization?: string; } export declare const PropsNames: { aggregates: { name: number; relating: string; related: string; key: string; }; spatial: { name: number; relating: string; related: string; key: string; }; psets: { name: number; relating: string; related: string; key: string; }; materials: { name: number; relating: string; related: string; key: string; }; type: { name: number; relating: string; related: string; key: string; }; }; export interface WebIfcAPI { wasmModule: any; Init(): void | Promise; Close?: () => void; /** * Opens a model and returns a modelID number * @data Buffer containing IFC data (bytes) * @data Settings settings for loading the model */ OpenModel(data: string | Uint8Array, settings?: LoaderSettings): number | Promise; GetHeaderLine(modelID: number, headerType: number): any | Promise; /** * Creates a new model and returns a modelID number * @data Settings settings for generating data the model */ CreateModel(model: NewIfcModel, settings?: LoaderSettings): number | Promise; ExportFileAsIFC(modelID: number): Uint8Array | Promise; /** * Opens a model and returns a modelID number * @modelID Model handle retrieved by OpenModel, model must not be closed * @data Buffer containing IFC data (bytes) */ GetGeometry(modelID: number, geometryExpressID: number): IfcGeometry | Promise; GetLine(modelID: number, expressID: number, flatten?: boolean): any | Promise; GetAndClearErrors(modelID: number): Vector | Promise>; WriteLine(modelID: number, lineObject: any): void | Promise; FlattenLine(modelID: number, line: any): void | Promise; GetRawLineData(modelID: number, expressID: number): RawLineData | Promise; WriteRawLineData(modelID: number, data: RawLineData): any | Promise; GetLineIDsWithType(modelID: number, type: number): Vector | Promise>; GetAllLines(modelID: Number): Vector | Promise>; SetGeometryTransformation(modelID: number, transformationMatrix: Array): void | Promise; GetCoordinationMatrix(modelID: number): Array | Promise>; GetVertexArray(ptr: number, size: number): Float32Array | Promise; GetIndexArray(ptr: number, size: number): Uint32Array | Promise; GetNameFromTypeCode(type: number): string | Promise; GetTypeCodeFromName(modelID: number, typeName: string): number | Promise; GetIfcEntityList(modelID: number): Array | Promise>; getSubArray(heap: any, startPtr: any, sizeBytes: any): any | Promise; /** * Closes a model and frees all related memory * @modelID Model handle retrieved by OpenModel, model must not be closed */ CloseModel(modelID: number): void | Promise; StreamAllMeshes(modelID: number, meshCallback: (mesh: FlatMesh) => void): void | Promise; StreamAllMeshesWithTypes(modelID: number, types: Array, meshCallback: (mesh: FlatMesh) => void): void | Promise; /** * Checks if a specific model ID is open or closed * @modelID Model handle retrieved by OpenModel */ IsModelOpen(modelID: number): boolean | Promise; /** * Load all geometry in a model * @modelID Model handle retrieved by OpenModel */ LoadAllGeometry(modelID: number): Vector | Promise>; /** * Load geometry for a single element * @modelID Model handle retrieved by OpenModel */ GetFlatMesh(modelID: number, expressID: number): FlatMesh | Promise; SetWasmPath(path: string): void | Promise; }