@pilotdev/pilot-bim-dataprovider 24.4.0 → 24.10.0
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 +9 -9
- package/lib/index.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/src/model/BimDataElement.d.ts +69 -3
- package/lib/src/model/BimDataElement.js +13 -4
- package/lib/src/model/BimDataElement.js.map +1 -1
- package/lib/src/model/BimDataElementPropertySet.js.map +1 -1
- package/lib/src/model/BimDataPart.d.ts +61 -0
- package/lib/src/model/BimDataPart.js +94 -0
- package/lib/src/model/BimDataPart.js.map +1 -0
- package/lib/src/model/BimDataProvider.d.ts +16 -0
- package/lib/src/model/BimDataProvider.js +29 -0
- package/lib/src/model/BimDataProvider.js.map +1 -0
- package/lib/src/utils/ViewerTools.d.ts +9 -9
- package/lib/src/utils/ViewerTools.js +73 -38
- package/lib/src/utils/ViewerTools.js.map +1 -1
- package/lib/src/utils/WasmTools.d.ts +10 -6
- package/lib/src/utils/WasmTools.js +66 -32
- package/lib/src/utils/WasmTools.js.map +1 -1
- package/lib/src/wasm/CorsWorker.d.ts +6 -0
- package/lib/src/wasm/CorsWorker.js +20 -0
- package/lib/src/wasm/CorsWorker.js.map +1 -0
- package/lib/src/wasm/pilot_bim_dataprovider.d.ts +59 -6
- package/lib/src/wasm/pilot_bim_dataprovider.js +1 -1
- package/lib/src/wasm/pilot_bim_dataprovider.wasm +0 -0
- package/lib/src/wasm/wasm.worker.d.ts +49 -0
- package/lib/src/wasm/wasm.worker.js +211 -0
- package/lib/src/wasm/wasm.worker.js.map +1 -0
- package/package.json +5 -13
- package/lib/src/model/BimDataModel.d.ts +0 -19
- package/lib/src/model/BimDataModel.js +0 -59
- package/lib/src/model/BimDataModel.js.map +0 -1
- package/lib/src/model/BimDataModelPart.d.ts +0 -40
- package/lib/src/model/BimDataModelPart.js +0 -144
- package/lib/src/model/BimDataModelPart.js.map +0 -1
- package/lib/src/model/BimNodeComparer.d.ts +0 -10
- package/lib/src/model/BimNodeComparer.js +0 -71
- package/lib/src/model/BimNodeComparer.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,33 +11,33 @@ This component is part of the **Pilot Cloud** service (https://pilotcloud.ascon.
|
|
|
11
11
|
Initialize and read data from information model data container (**.bm** file).
|
|
12
12
|
|
|
13
13
|
```js
|
|
14
|
-
import { BimDataBigIntMaxValue,
|
|
14
|
+
import { BimDataBigIntMaxValue, BimDataProvider } from "@pilotdev/pilot-bim-dataprovider";
|
|
15
15
|
|
|
16
16
|
// Create new instance of BimModel
|
|
17
|
-
const
|
|
17
|
+
const bimDataProvider = new BimDataProvider();
|
|
18
18
|
|
|
19
19
|
// Initialize model.
|
|
20
20
|
// Method returns Promise<void>
|
|
21
|
-
await
|
|
21
|
+
await bimDataProvider.init();
|
|
22
22
|
|
|
23
23
|
// Read bm file and open it
|
|
24
24
|
// fileBuffer - Buffer of a .bm file
|
|
25
25
|
// uniqueId - must be unique identfier
|
|
26
|
-
const modelPart =
|
|
26
|
+
const modelPart = await bimDataProvider.openModelPart("uniqueId", fileBuffer);
|
|
27
27
|
|
|
28
28
|
// Get all elements of the model-part
|
|
29
|
-
const elements = modelPart.getAllElements();
|
|
29
|
+
const elements = await modelPart.getAllElements();
|
|
30
30
|
|
|
31
31
|
// Get latest version of properties of the element
|
|
32
|
-
const properties = modelPart.getElementProperties(elements[5].guid, BimDataBigIntMaxValue);
|
|
32
|
+
const properties = await modelPart.getElementProperties(elements[5].guid, BimDataBigIntMaxValue);
|
|
33
33
|
|
|
34
34
|
// Get all tessellations
|
|
35
|
-
const tesselations = modelPart.getAllTessellations();
|
|
35
|
+
const tesselations = await modelPart.getAllTessellations();
|
|
36
36
|
|
|
37
37
|
// Close model part after end
|
|
38
|
-
modelPart.close();
|
|
38
|
+
await modelPart.close();
|
|
39
39
|
|
|
40
40
|
// Dispose BimModel after all
|
|
41
|
-
|
|
41
|
+
await bimDataProvider.dispose();
|
|
42
42
|
|
|
43
43
|
```
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { IBimDataModelPart } from "./src/model/
|
|
1
|
+
export { BimDataProvider, IBimDataProvider } from "./src/model/BimDataProvider.js";
|
|
2
|
+
export { IBimDataModelPart, IBimDataCloudPart } from "./src/model/BimDataPart.js";
|
|
3
3
|
export { BimDataBigIntMaxValue, BimDataBigIntMinValue } from "./src/model/Consts.js";
|
|
4
4
|
export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis } from "./src/model/BimDataElement.js";
|
|
5
5
|
export { BimDataIfcType } from "./src/model/BimDataIfcType.js";
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { BimDataProvider } from "./src/model/BimDataProvider.js";
|
|
2
2
|
export { BimDataBigIntMaxValue, BimDataBigIntMinValue } from "./src/model/Consts.js";
|
|
3
3
|
export { BimDataElement, BimDataMeshProperty, BimDataGridObject, BimDataGridAxis } from "./src/model/BimDataElement.js";
|
|
4
4
|
export { BimDataIfcType } from "./src/model/BimDataIfcType.js";
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACxH,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC1I,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -12,16 +12,16 @@ export declare class BimDataElement {
|
|
|
12
12
|
}
|
|
13
13
|
export declare class BimDataMeshProperty {
|
|
14
14
|
meshColor: number;
|
|
15
|
-
meshPlacement:
|
|
15
|
+
meshPlacement: Float64Array;
|
|
16
16
|
}
|
|
17
17
|
export declare class BimDataGridObject {
|
|
18
|
-
gridPlacement:
|
|
18
|
+
gridPlacement: Float64Array;
|
|
19
19
|
gridAxes: BimDataGridAxis[];
|
|
20
20
|
}
|
|
21
21
|
export declare class BimDataGridAxis {
|
|
22
22
|
id: number;
|
|
23
23
|
type: number;
|
|
24
|
-
data:
|
|
24
|
+
data: Float32Array;
|
|
25
25
|
label: string;
|
|
26
26
|
}
|
|
27
27
|
export declare enum BimDataNodeState {
|
|
@@ -34,3 +34,69 @@ export declare enum BimDataNodeState {
|
|
|
34
34
|
PlacementAndAttributesModified = 11,
|
|
35
35
|
PlacementAndAttributesQuantitiesModified = 12
|
|
36
36
|
}
|
|
37
|
+
export declare class BimCloudHierarchyItem {
|
|
38
|
+
index: number;
|
|
39
|
+
dataIndex: number;
|
|
40
|
+
type: BimHierarchyItemType;
|
|
41
|
+
mask: number;
|
|
42
|
+
numPoints: number;
|
|
43
|
+
offset: number;
|
|
44
|
+
size: number;
|
|
45
|
+
min: {
|
|
46
|
+
x: number;
|
|
47
|
+
y: number;
|
|
48
|
+
z: number;
|
|
49
|
+
};
|
|
50
|
+
max: {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
z: number;
|
|
54
|
+
};
|
|
55
|
+
spacing: number;
|
|
56
|
+
}
|
|
57
|
+
export declare class BimCloudMetadata {
|
|
58
|
+
depth: number;
|
|
59
|
+
min: {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
z: number;
|
|
63
|
+
};
|
|
64
|
+
max: {
|
|
65
|
+
x: number;
|
|
66
|
+
y: number;
|
|
67
|
+
z: number;
|
|
68
|
+
};
|
|
69
|
+
baseSpacing: number;
|
|
70
|
+
version: number;
|
|
71
|
+
filename: string;
|
|
72
|
+
description: string;
|
|
73
|
+
inputPoints: number;
|
|
74
|
+
processedPoints: number;
|
|
75
|
+
nodesCount: number;
|
|
76
|
+
nodesPoints: number;
|
|
77
|
+
posOffset: {
|
|
78
|
+
x: number;
|
|
79
|
+
y: number;
|
|
80
|
+
z: number;
|
|
81
|
+
};
|
|
82
|
+
posScale: {
|
|
83
|
+
x: number;
|
|
84
|
+
y: number;
|
|
85
|
+
z: number;
|
|
86
|
+
};
|
|
87
|
+
root_min: {
|
|
88
|
+
x: number;
|
|
89
|
+
y: number;
|
|
90
|
+
z: number;
|
|
91
|
+
};
|
|
92
|
+
root_max: {
|
|
93
|
+
x: number;
|
|
94
|
+
y: number;
|
|
95
|
+
z: number;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export declare enum BimHierarchyItemType {
|
|
99
|
+
NORMAL = 0,
|
|
100
|
+
LEAF = 1,
|
|
101
|
+
PROXY = 2
|
|
102
|
+
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint @typescript-eslint/no-inferrable-types:off */
|
|
2
1
|
export class BimDataElement {
|
|
3
2
|
constructor() {
|
|
4
3
|
this.revision = BigInt(0);
|
|
@@ -8,18 +7,18 @@ export class BimDataElement {
|
|
|
8
7
|
export class BimDataMeshProperty {
|
|
9
8
|
constructor() {
|
|
10
9
|
this.meshColor = 0;
|
|
11
|
-
this.meshPlacement =
|
|
10
|
+
this.meshPlacement = new Float64Array();
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
export class BimDataGridObject {
|
|
15
14
|
constructor() {
|
|
16
|
-
this.gridPlacement =
|
|
15
|
+
this.gridPlacement = new Float64Array();
|
|
17
16
|
this.gridAxes = [];
|
|
18
17
|
}
|
|
19
18
|
}
|
|
20
19
|
export class BimDataGridAxis {
|
|
21
20
|
constructor() {
|
|
22
|
-
this.data =
|
|
21
|
+
this.data = new Float32Array();
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
24
|
export var BimDataNodeState;
|
|
@@ -33,4 +32,14 @@ export var BimDataNodeState;
|
|
|
33
32
|
BimDataNodeState[BimDataNodeState["PlacementAndAttributesModified"] = 11] = "PlacementAndAttributesModified";
|
|
34
33
|
BimDataNodeState[BimDataNodeState["PlacementAndAttributesQuantitiesModified"] = 12] = "PlacementAndAttributesQuantitiesModified";
|
|
35
34
|
})(BimDataNodeState || (BimDataNodeState = {}));
|
|
35
|
+
export class BimCloudHierarchyItem {
|
|
36
|
+
}
|
|
37
|
+
export class BimCloudMetadata {
|
|
38
|
+
}
|
|
39
|
+
export var BimHierarchyItemType;
|
|
40
|
+
(function (BimHierarchyItemType) {
|
|
41
|
+
BimHierarchyItemType[BimHierarchyItemType["NORMAL"] = 0] = "NORMAL";
|
|
42
|
+
BimHierarchyItemType[BimHierarchyItemType["LEAF"] = 1] = "LEAF";
|
|
43
|
+
BimHierarchyItemType[BimHierarchyItemType["PROXY"] = 2] = "PROXY";
|
|
44
|
+
})(BimHierarchyItemType || (BimHierarchyItemType = {}));
|
|
36
45
|
//# sourceMappingURL=BimDataElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BimDataElement.js","sourceRoot":"","sources":["../../../src/model/BimDataElement.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"BimDataElement.js","sourceRoot":"","sources":["../../../src/model/BimDataElement.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IAA3B;QAGE,aAAQ,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;QAQ7B,qBAAgB,GAAuC,IAAI,GAAG,EAAE,CAAC;IACnE,CAAC;CAAA;AAED,MAAM,OAAO,mBAAmB;IAAhC;QACE,cAAS,GAAW,CAAC,CAAC;QACtB,kBAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;IACnD,CAAC;CAAA;AAED,MAAM,OAAO,iBAAiB;IAA9B;QACE,kBAAa,GAAiB,IAAI,YAAY,EAAE,CAAC;QACjD,aAAQ,GAAsB,EAAE,CAAC;IACnC,CAAC;CAAA;AAED,MAAM,OAAO,eAAe;IAA5B;QAGE,SAAI,GAAiB,IAAI,YAAY,EAAE,CAAC;IAE1C,CAAC;CAAA;AAED,MAAM,CAAN,IAAY,gBAUX;AAVD,WAAY,gBAAgB;IAE1B,iEAAa,CAAA;IACb,yDAAS,CAAA;IACT,6DAAW,CAAA;IACX,mFAAsB,CAAA;IACtB,uGAAgC,CAAA;IAChC,iFAAqB,CAAA;IACrB,4GAAuE,CAAA;IACvE,gIAA2F,CAAA;AAC7F,CAAC,EAVW,gBAAgB,KAAhB,gBAAgB,QAU3B;AAED,MAAM,OAAO,qBAAqB;CAWjC;AAED,MAAM,OAAO,gBAAgB;CAiB5B;AAED,MAAM,CAAN,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,mEAAU,CAAA;IACV,+DAAQ,CAAA;IACR,iEAAS,CAAA;AACX,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BimDataElementPropertySet.js","sourceRoot":"","sources":["../../../src/model/BimDataElementPropertySet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BimDataElementPropertySet.js","sourceRoot":"","sources":["../../../src/model/BimDataElementPropertySet.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,yBAAyB;CAIrC;AAED,MAAM,OAAO,sBAAsB;IAAnC;QAEE,SAAI,GAAW,CAAC,CAAC;IAEnB,CAAC;CAAA;AAED,MAAM,OAAO,2BAA2B;IAAxC;QAKE,gBAAW,GAAkB,EAAE,CAAC;QAGhC,oBAAe,GAAkB,EAAE,CAAC;IAmBtC,CAAC;IAhBC,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,SAAS;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,IAAI,CAAC,aAAa;YACpB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU;YACjB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS;YAChB,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,CAA8B,EAAE,CAA8B;IAC7F,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACV,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACV,OAAO,KAAK,CAAC;IAEf,OAAO,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS;QAC/B,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS;QAC1B,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY;QAChC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QAC5B,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,aAAa;QAClC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QAC5B,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU;QAC5B,aAAa,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC;QACnD,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,aAAa,CAAI,CAAM,EAAE,CAAM;IACtC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACV,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QACV,OAAO,KAAK,CAAC;IAEf,IAAI,CAAC,KAAK,CAAC;QACT,OAAO,IAAI,CAAC;IAEd,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;QACtB,OAAO,KAAK,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,KAAK,CAAC;SACd;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as comlink from "comlink";
|
|
2
|
+
import { BimCloudMetadata, BimDataElement } from "./BimDataElement.js";
|
|
3
|
+
import { BimDataElementPropertySet } from "./BimDataElementPropertySet.js";
|
|
4
|
+
import { BimDataTessellation } from "./BimDataTessellation.js";
|
|
5
|
+
import { BimCloudHierarchyItem } from "./BimDataElement.js";
|
|
6
|
+
import { WasmWorker } from "../wasm/wasm.worker.js";
|
|
7
|
+
export interface IBimDataPart {
|
|
8
|
+
id: string;
|
|
9
|
+
open(buffer: ArrayBuffer): Promise<void>;
|
|
10
|
+
close(): Promise<void>;
|
|
11
|
+
dispose(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export interface IBimDataModelPart extends IBimDataPart {
|
|
14
|
+
update(buffer: ArrayBuffer): Promise<void>;
|
|
15
|
+
getAllTessellations(): Promise<Map<string, BimDataTessellation>>;
|
|
16
|
+
getTessellations(versionFrom: bigint, versionTo: bigint): Promise<Map<string, BimDataTessellation>>;
|
|
17
|
+
getAllElements(): Promise<BimDataElement[]>;
|
|
18
|
+
getElements(versionFrom: bigint, versionTo: bigint): Promise<BimDataElement[]>;
|
|
19
|
+
getDiffElements(versionFrom: bigint, versionTo: bigint): Promise<BimDataElement[]>;
|
|
20
|
+
getElementTessellations(versionFrom: bigint, versionTo: bigint): Promise<Map<string, BimDataTessellation>>;
|
|
21
|
+
getElementProperties(elementId: string, version: bigint): Promise<BimDataElementPropertySet[]>;
|
|
22
|
+
getAllVersions(): Promise<bigint[]>;
|
|
23
|
+
getLatestVersion(): Promise<bigint>;
|
|
24
|
+
}
|
|
25
|
+
export interface IBimDataCloudPart extends IBimDataPart {
|
|
26
|
+
getCloudPoints(index: number, interlive: number): Promise<Float32Array>;
|
|
27
|
+
getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
|
|
28
|
+
getCloudParameters(): Promise<Map<string, string>>;
|
|
29
|
+
getCloudMetadata(): Promise<BimCloudMetadata>;
|
|
30
|
+
}
|
|
31
|
+
declare class BimDataBase {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
protected _remote: comlink.Remote<WasmWorker>;
|
|
34
|
+
protected _isOpen: boolean;
|
|
35
|
+
protected _isDisposed: boolean;
|
|
36
|
+
constructor(id: string, module: comlink.Remote<WasmWorker>);
|
|
37
|
+
open(buffer: ArrayBuffer): Promise<void>;
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
dispose(): Promise<void>;
|
|
40
|
+
protected checkIsOpen(): void;
|
|
41
|
+
}
|
|
42
|
+
export declare class BimDataModelPart extends BimDataBase implements IBimDataModelPart {
|
|
43
|
+
open(buffer: ArrayBuffer): Promise<void>;
|
|
44
|
+
update(buffer: ArrayBuffer): Promise<void>;
|
|
45
|
+
getAllTessellations(): Promise<Map<string, BimDataTessellation>>;
|
|
46
|
+
getTessellations(versionFrom: bigint, versionTo: bigint): Promise<Map<string, BimDataTessellation>>;
|
|
47
|
+
getAllElements(): Promise<BimDataElement[]>;
|
|
48
|
+
getElements(versionFrom: bigint, versionTo: bigint): Promise<BimDataElement[]>;
|
|
49
|
+
getDiffElements(versionFrom: bigint, versionTo: bigint): Promise<BimDataElement[]>;
|
|
50
|
+
getElementProperties(elementId: string, version: bigint): Promise<BimDataElementPropertySet[]>;
|
|
51
|
+
getElementTessellations(versionFrom: bigint, versionTo: bigint): Promise<Map<string, BimDataTessellation>>;
|
|
52
|
+
getAllVersions(): Promise<bigint[]>;
|
|
53
|
+
getLatestVersion(): Promise<bigint>;
|
|
54
|
+
}
|
|
55
|
+
export declare class BimDataCloudPart extends BimDataBase implements IBimDataCloudPart {
|
|
56
|
+
getCloudPoints(index: number, interlive: number): Promise<Float32Array>;
|
|
57
|
+
getCloudHierarchy(): Promise<BimCloudHierarchyItem[]>;
|
|
58
|
+
getCloudParameters(): Promise<Map<string, string>>;
|
|
59
|
+
getCloudMetadata(): Promise<BimCloudMetadata>;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
class BimDataBase {
|
|
2
|
+
constructor(id, module) {
|
|
3
|
+
this.id = id;
|
|
4
|
+
this._remote = module;
|
|
5
|
+
this._isOpen = false;
|
|
6
|
+
this._isDisposed = false;
|
|
7
|
+
}
|
|
8
|
+
async open(buffer) {
|
|
9
|
+
if (this._isDisposed)
|
|
10
|
+
return Promise.reject("Data part is disposed");
|
|
11
|
+
await this._remote.open(this.id, buffer);
|
|
12
|
+
this._isOpen = true;
|
|
13
|
+
}
|
|
14
|
+
async close() {
|
|
15
|
+
if (this._isDisposed)
|
|
16
|
+
return Promise.reject("Data part is disposed");
|
|
17
|
+
await this._remote.close(this.id);
|
|
18
|
+
this._isOpen = false;
|
|
19
|
+
}
|
|
20
|
+
async dispose() {
|
|
21
|
+
await this.close();
|
|
22
|
+
this._isDisposed = true;
|
|
23
|
+
}
|
|
24
|
+
checkIsOpen() {
|
|
25
|
+
if (!this._isOpen)
|
|
26
|
+
throw new Error("Data part is not open. Please call method open first.");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class BimDataModelPart extends BimDataBase {
|
|
30
|
+
async open(buffer) {
|
|
31
|
+
await super.open(buffer);
|
|
32
|
+
this.checkIsOpen();
|
|
33
|
+
await this._remote.auditModelPart(this.id);
|
|
34
|
+
}
|
|
35
|
+
update(buffer) {
|
|
36
|
+
this.checkIsOpen();
|
|
37
|
+
return this._remote.updateModelPart(this.id, buffer);
|
|
38
|
+
}
|
|
39
|
+
getAllTessellations() {
|
|
40
|
+
this.checkIsOpen();
|
|
41
|
+
return this._remote.getAllTessellations(this.id);
|
|
42
|
+
}
|
|
43
|
+
getTessellations(versionFrom, versionTo) {
|
|
44
|
+
this.checkIsOpen();
|
|
45
|
+
return this._remote.getTessellations(this.id, versionFrom, versionTo);
|
|
46
|
+
}
|
|
47
|
+
getAllElements() {
|
|
48
|
+
this.checkIsOpen();
|
|
49
|
+
return this._remote.getAllElements(this.id);
|
|
50
|
+
}
|
|
51
|
+
getElements(versionFrom, versionTo) {
|
|
52
|
+
this.checkIsOpen();
|
|
53
|
+
return this._remote.getElements(this.id, versionFrom, versionTo);
|
|
54
|
+
}
|
|
55
|
+
getDiffElements(versionFrom, versionTo) {
|
|
56
|
+
this.checkIsOpen();
|
|
57
|
+
return this._remote.getDiffElements(this.id, versionFrom, versionTo);
|
|
58
|
+
}
|
|
59
|
+
getElementProperties(elementId, version) {
|
|
60
|
+
this.checkIsOpen();
|
|
61
|
+
return this._remote.getElementProperties(this.id, elementId, version);
|
|
62
|
+
}
|
|
63
|
+
getElementTessellations(versionFrom, versionTo) {
|
|
64
|
+
this.checkIsOpen();
|
|
65
|
+
return this._remote.getElementTessellations(this.id, versionFrom, versionTo);
|
|
66
|
+
}
|
|
67
|
+
getAllVersions() {
|
|
68
|
+
this.checkIsOpen();
|
|
69
|
+
return this._remote.getAllVersions(this.id);
|
|
70
|
+
}
|
|
71
|
+
getLatestVersion() {
|
|
72
|
+
this.checkIsOpen();
|
|
73
|
+
return this._remote.getLatestVersion(this.id);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export class BimDataCloudPart extends BimDataBase {
|
|
77
|
+
getCloudPoints(index, interlive) {
|
|
78
|
+
this.checkIsOpen();
|
|
79
|
+
return this._remote.getCloudPoints(this.id, index, interlive);
|
|
80
|
+
}
|
|
81
|
+
getCloudHierarchy() {
|
|
82
|
+
this.checkIsOpen();
|
|
83
|
+
return this._remote.getCloudHierarchy(this.id);
|
|
84
|
+
}
|
|
85
|
+
getCloudParameters() {
|
|
86
|
+
this.checkIsOpen();
|
|
87
|
+
return this._remote.getCloudParameters(this.id);
|
|
88
|
+
}
|
|
89
|
+
getCloudMetadata() {
|
|
90
|
+
this.checkIsOpen();
|
|
91
|
+
return this._remote.getCloudMetadata(this.id);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=BimDataPart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BimDataPart.js","sourceRoot":"","sources":["../../../src/model/BimDataPart.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IBimDataCloudPart, IBimDataModelPart } from './BimDataPart.js';
|
|
2
|
+
export interface IBimDataProvider {
|
|
3
|
+
init(): Promise<void>;
|
|
4
|
+
openModelPart(id: string, buffer: ArrayBuffer): Promise<IBimDataModelPart | undefined>;
|
|
5
|
+
openCloudPart(id: string, buffer: ArrayBuffer): Promise<IBimDataCloudPart | undefined>;
|
|
6
|
+
dispose(): Promise<void>;
|
|
7
|
+
flushMemory(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare class BimDataProvider implements IBimDataProvider {
|
|
10
|
+
private _workerObj;
|
|
11
|
+
init(): Promise<void>;
|
|
12
|
+
openModelPart(id: string, buffer: ArrayBuffer): Promise<IBimDataModelPart | undefined>;
|
|
13
|
+
openCloudPart(id: string, buffer: ArrayBuffer): Promise<IBimDataCloudPart | undefined>;
|
|
14
|
+
flushMemory(): Promise<void>;
|
|
15
|
+
dispose(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-inferrable-types:off */
|
|
2
|
+
import * as comlink from "comlink";
|
|
3
|
+
import { BimDataCloudPart, BimDataModelPart } from './BimDataPart.js';
|
|
4
|
+
import { CorsWorker as Worker } from '../wasm/CorsWorker.js';
|
|
5
|
+
export class BimDataProvider {
|
|
6
|
+
async init() {
|
|
7
|
+
const worker = new Worker(new URL("../wasm/wasm.worker.js", import.meta.url), { type: "module" });
|
|
8
|
+
const WasmWorkerType = comlink.wrap(await worker.createWorker());
|
|
9
|
+
this._workerObj = await new WasmWorkerType();
|
|
10
|
+
await this._workerObj.init();
|
|
11
|
+
}
|
|
12
|
+
async openModelPart(id, buffer) {
|
|
13
|
+
const modelPart = new BimDataModelPart(id, this._workerObj);
|
|
14
|
+
await modelPart.open(buffer);
|
|
15
|
+
return modelPart;
|
|
16
|
+
}
|
|
17
|
+
async openCloudPart(id, buffer) {
|
|
18
|
+
const cloudPart = new BimDataCloudPart(id, this._workerObj);
|
|
19
|
+
await cloudPart.open(buffer);
|
|
20
|
+
return cloudPart;
|
|
21
|
+
}
|
|
22
|
+
async flushMemory() {
|
|
23
|
+
await this._workerObj?.flushMemory();
|
|
24
|
+
}
|
|
25
|
+
async dispose() {
|
|
26
|
+
/**empty method */
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=BimDataProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BimDataProvider.js","sourceRoot":"","sources":["../../../src/model/BimDataProvider.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAwC,MAAM,kBAAkB,CAAC;AAE5G,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAU7D,MAAM,OAAO,eAAe;IAG1B,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClG,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAoB,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,MAAmB;QACjD,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,MAAmB;QACjD,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,kBAAkB;IACpB,CAAC;CACF"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { BimDataElement } from "../model/BimDataElement.js";
|
|
1
|
+
import { BimDataElement, BimCloudHierarchyItem, BimCloudMetadata } from "../model/BimDataElement.js";
|
|
2
2
|
import { BimDataElementPropertySet } from "../model/BimDataElementPropertySet.js";
|
|
3
3
|
import { BimDataTessellation } from "../model/BimDataTessellation.js";
|
|
4
|
-
import { VectorOf, WasmElementPropertySet, WasmIfcNode, WasmTessellation,
|
|
4
|
+
import { VectorOf, WasmElementPropertySet, WasmIfcNode, WasmTessellation, IWasmBimModule, WasmCloudHierarchyItem, WasmPointsData, WasmPointsMetadata } from "../wasm/pilot_bim_dataprovider.js";
|
|
5
5
|
export declare class BimDataConverter {
|
|
6
|
-
static toToBimDataElements(ifcNodes: VectorOf<WasmIfcNode>, dispose: boolean): BimDataElement[];
|
|
7
|
-
static
|
|
8
|
-
oldNode: BimDataElement;
|
|
9
|
-
newNode: BimDataElement;
|
|
10
|
-
}[];
|
|
11
|
-
static toBimDataTessellations(tessellations: VectorOf<WasmTessellation>, dispose: boolean): Map<string, BimDataTessellation>;
|
|
6
|
+
static toToBimDataElements(module: IWasmBimModule, ifcNodes: VectorOf<WasmIfcNode>, dispose: boolean, transfer?: boolean): BimDataElement[];
|
|
7
|
+
static toBimDataTessellations(module: IWasmBimModule, tessellations: VectorOf<WasmTessellation>, dispose: boolean, transfer?: boolean): Map<string, BimDataTessellation>;
|
|
12
8
|
static toModelElementPropertySet(wasmPropertySets: VectorOf<WasmElementPropertySet>, dispose: boolean): BimDataElementPropertySet[];
|
|
9
|
+
static toBimCloudHierarchy(wasmHierarchy: VectorOf<WasmCloudHierarchyItem>, dispose: boolean): BimCloudHierarchyItem[];
|
|
10
|
+
static toCloudPoints(module: IWasmBimModule, wasmPointsData: WasmPointsData, dispose: boolean, transfer?: boolean): Float32Array;
|
|
11
|
+
static toCloudMetadata(wasmPointsMetadata: WasmPointsMetadata, dispose: boolean): BimCloudMetadata;
|
|
13
12
|
private static toModelElementProperties;
|
|
14
13
|
private static toModelElementPropertyValue;
|
|
15
14
|
private static toBimDataElement;
|
|
16
|
-
private static
|
|
15
|
+
private static toBimDataTessellation;
|
|
16
|
+
private static toBimCloudHierarchyItem;
|
|
17
17
|
}
|
|
@@ -1,46 +1,38 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as comlink from "comlink";
|
|
2
|
+
import { BimDataElement, BimDataMeshProperty, BimCloudHierarchyItem, BimCloudMetadata } from "../model/BimDataElement.js";
|
|
2
3
|
import { BimDataElementPropertySet, BimDataElementProperty, BimDataElementPropertyValue } from "../model/BimDataElementPropertySet.js";
|
|
3
4
|
import { BimDataTessellation } from "../model/BimDataTessellation.js";
|
|
4
5
|
import { WasmTools } from "./WasmTools.js";
|
|
5
6
|
export class BimDataConverter {
|
|
6
|
-
static toToBimDataElements(ifcNodes, dispose) {
|
|
7
|
+
static toToBimDataElements(module, ifcNodes, dispose, transfer = true) {
|
|
7
8
|
const props = new Array();
|
|
9
|
+
const transferable = transfer ? [] : undefined;
|
|
8
10
|
for (let index = 0; index < ifcNodes.size(); index++) {
|
|
9
11
|
const node = ifcNodes.get(index);
|
|
10
|
-
props.push(this.toBimDataElement(node));
|
|
12
|
+
props.push(this.toBimDataElement(module, node, transferable));
|
|
11
13
|
if (dispose)
|
|
12
14
|
node.delete();
|
|
13
15
|
}
|
|
14
16
|
if (dispose)
|
|
15
17
|
ifcNodes.delete();
|
|
18
|
+
if (transferable)
|
|
19
|
+
comlink.transfer(props, transferable);
|
|
16
20
|
return props;
|
|
17
21
|
}
|
|
18
|
-
static
|
|
19
|
-
const bimDataPairs = new Array();
|
|
20
|
-
for (let index = 0; index < ifcNodePairs.size(); index++) {
|
|
21
|
-
const pair = ifcNodePairs.get(index);
|
|
22
|
-
bimDataPairs.push({ oldNode: this.toBimDataElement(pair.oldNode), newNode: this.toBimDataElement(pair.newNode) });
|
|
23
|
-
if (dispose) {
|
|
24
|
-
pair.oldNode.delete();
|
|
25
|
-
pair.newNode.delete();
|
|
26
|
-
pair.delete();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (dispose)
|
|
30
|
-
ifcNodePairs.delete();
|
|
31
|
-
return bimDataPairs;
|
|
32
|
-
}
|
|
33
|
-
static toBimDataTessellations(tessellations, dispose) {
|
|
22
|
+
static toBimDataTessellations(module, tessellations, dispose, transfer = true) {
|
|
34
23
|
const map = new Map();
|
|
24
|
+
const transferable = transfer ? [] : undefined;
|
|
35
25
|
for (let index = 0; index < tessellations.size(); index++) {
|
|
36
26
|
const tessellation = tessellations.get(index);
|
|
37
|
-
const t = this.
|
|
27
|
+
const t = this.toBimDataTessellation(module, tessellation, transferable);
|
|
38
28
|
map.set(t.key, t.value);
|
|
39
29
|
if (dispose)
|
|
40
30
|
tessellation.delete();
|
|
41
31
|
}
|
|
42
32
|
if (dispose)
|
|
43
33
|
tessellations.delete();
|
|
34
|
+
if (transferable)
|
|
35
|
+
comlink.transfer(map, transferable);
|
|
44
36
|
return map;
|
|
45
37
|
}
|
|
46
38
|
static toModelElementPropertySet(wasmPropertySets, dispose) {
|
|
@@ -59,6 +51,34 @@ export class BimDataConverter {
|
|
|
59
51
|
wasmPropertySets.delete();
|
|
60
52
|
return sets;
|
|
61
53
|
}
|
|
54
|
+
static toBimCloudHierarchy(wasmHierarchy, dispose) {
|
|
55
|
+
const result = [];
|
|
56
|
+
for (let i = 0; i < wasmHierarchy.size(); i++)
|
|
57
|
+
result.push(BimDataConverter.toBimCloudHierarchyItem(wasmHierarchy.get(i)));
|
|
58
|
+
if (dispose)
|
|
59
|
+
wasmHierarchy.delete();
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
static toCloudPoints(module, wasmPointsData, dispose, transfer = true) {
|
|
63
|
+
const transferable = transfer ? [] : undefined;
|
|
64
|
+
const array = WasmTools.vectorToFloat32Array(module, wasmPointsData.points, wasmPointsData.getPointsDataOffset(), dispose, transferable);
|
|
65
|
+
if (transferable)
|
|
66
|
+
comlink.transfer(array, transferable);
|
|
67
|
+
return array;
|
|
68
|
+
}
|
|
69
|
+
static toCloudMetadata(wasmPointsMetadata, dispose) {
|
|
70
|
+
const metadata = new BimCloudMetadata();
|
|
71
|
+
metadata.depth = wasmPointsMetadata.depth;
|
|
72
|
+
const min = wasmPointsMetadata.min;
|
|
73
|
+
metadata.min = { x: min[0], y: min[1], z: min[2] };
|
|
74
|
+
const max = wasmPointsMetadata.max;
|
|
75
|
+
metadata.max = { x: max[0], y: max[1], z: max[2] };
|
|
76
|
+
if (wasmPointsMetadata.baseSpacing.has_value())
|
|
77
|
+
metadata.baseSpacing = wasmPointsMetadata.baseSpacing.value();
|
|
78
|
+
if (dispose)
|
|
79
|
+
wasmPointsMetadata.delete();
|
|
80
|
+
return metadata;
|
|
81
|
+
}
|
|
62
82
|
static toModelElementProperties(properties, dispose) {
|
|
63
83
|
const modelElementProperties = new Array();
|
|
64
84
|
for (let index = 0; index < properties.size(); index++) {
|
|
@@ -74,23 +94,22 @@ export class BimDataConverter {
|
|
|
74
94
|
return modelElementProperties;
|
|
75
95
|
}
|
|
76
96
|
static toModelElementPropertyValue(value, dispose) {
|
|
77
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
78
97
|
const modelElementValue = new BimDataElementPropertyValue();
|
|
79
|
-
modelElementValue.array_int_value = WasmTools.vectorToArray(value.array_int_value);
|
|
98
|
+
modelElementValue.array_int_value = WasmTools.vectorToArray(value.array_int_value, true);
|
|
80
99
|
modelElementValue.array_value = WasmTools.vectorToArray(value.array_value);
|
|
81
|
-
modelElementValue.bool_value =
|
|
82
|
-
modelElementValue.date_value =
|
|
83
|
-
modelElementValue.decimal_value =
|
|
84
|
-
modelElementValue.double_value =
|
|
85
|
-
modelElementValue.guid_value =
|
|
86
|
-
modelElementValue.int_value =
|
|
87
|
-
modelElementValue.str_value =
|
|
100
|
+
modelElementValue.bool_value = value.bool_value?.has_value() ? value.bool_value.value() : undefined;
|
|
101
|
+
modelElementValue.date_value = value.date_value?.has_value() ? value.date_value.value() : undefined;
|
|
102
|
+
modelElementValue.decimal_value = value.decimal_value?.has_value() ? WasmTools.decimalToNumber(value.decimal_value.value()) : undefined; // TODO convert
|
|
103
|
+
modelElementValue.double_value = value.double_value?.has_value() ? value.double_value.value() : undefined;
|
|
104
|
+
modelElementValue.guid_value = value.guid_value?.has_value() ? value.guid_value.value()?.toString() : undefined;
|
|
105
|
+
modelElementValue.int_value = value.int_value?.has_value() ? value.int_value.value() : undefined;
|
|
106
|
+
modelElementValue.str_value = value.str_value?.has_value() ? value.str_value.value() : undefined;
|
|
88
107
|
//modelElementValue.value = value.value;
|
|
89
108
|
if (dispose)
|
|
90
109
|
value.delete();
|
|
91
110
|
return modelElementValue;
|
|
92
111
|
}
|
|
93
|
-
static toBimDataElement(ifcNode) {
|
|
112
|
+
static toBimDataElement(module, ifcNode, transferable) {
|
|
94
113
|
const node = new BimDataElement();
|
|
95
114
|
node.guid = ifcNode.id;
|
|
96
115
|
node.name = ifcNode.name;
|
|
@@ -110,7 +129,7 @@ export class BimDataConverter {
|
|
|
110
129
|
const propPtr = valueVectorPtr.get(j);
|
|
111
130
|
const prop = new BimDataMeshProperty();
|
|
112
131
|
prop.meshColor = propPtr.mesh_color;
|
|
113
|
-
prop.meshPlacement = WasmTools.
|
|
132
|
+
prop.meshPlacement = WasmTools.vectorToFloat64Array(module, propPtr.mesh_placement, propPtr.getPlacementDataOffset(), true, transferable);
|
|
114
133
|
propPtr.delete();
|
|
115
134
|
meshProps.push(prop);
|
|
116
135
|
}
|
|
@@ -123,7 +142,7 @@ export class BimDataConverter {
|
|
|
123
142
|
const gridObjectPtr = ifcNode.grid_object;
|
|
124
143
|
const axesPtr = gridObjectPtr.grid_axes;
|
|
125
144
|
const gridObject = {
|
|
126
|
-
gridPlacement: WasmTools.
|
|
145
|
+
gridPlacement: WasmTools.vectorToFloat64Array(module, gridObjectPtr.placement, gridObjectPtr.getPlacementDataOffset(), true, transferable),
|
|
127
146
|
gridAxes: []
|
|
128
147
|
};
|
|
129
148
|
for (let i = 0; i < axesPtr.size(); i++) {
|
|
@@ -132,7 +151,7 @@ export class BimDataConverter {
|
|
|
132
151
|
id: wasmAxisPtr.id,
|
|
133
152
|
type: wasmAxisPtr.type.value,
|
|
134
153
|
label: wasmAxisPtr.label,
|
|
135
|
-
data: WasmTools.
|
|
154
|
+
data: WasmTools.vectorToFloat32Array(module, wasmAxisPtr.data, wasmAxisPtr.getDataOffset(), true, transferable)
|
|
136
155
|
};
|
|
137
156
|
wasmAxisPtr.delete();
|
|
138
157
|
gridObject.gridAxes.push(axis);
|
|
@@ -143,15 +162,31 @@ export class BimDataConverter {
|
|
|
143
162
|
gridObjectPtr.delete();
|
|
144
163
|
return node;
|
|
145
164
|
}
|
|
146
|
-
static
|
|
165
|
+
static toBimDataTessellation(module, wasmTessellation, transferable) {
|
|
147
166
|
const tessellation = new BimDataTessellation();
|
|
148
167
|
const modelMesh = wasmTessellation.model_mesh;
|
|
149
|
-
tessellation.edgeIndices = WasmTools.vectorToUint32Array(modelMesh.edge_indices, true);
|
|
150
|
-
tessellation.indices = WasmTools.vectorToUint32Array(modelMesh.indices, true);
|
|
151
|
-
tessellation.normals = WasmTools.vectorToFloat32Array(modelMesh.normals, true);
|
|
152
|
-
tessellation.vertices = WasmTools.vectorToFloat32Array(modelMesh.vertices, true);
|
|
168
|
+
tessellation.edgeIndices = WasmTools.vectorToUint32Array(module, modelMesh.edge_indices, modelMesh.getEdgeIndicesDataOffset(), true, transferable);
|
|
169
|
+
tessellation.indices = WasmTools.vectorToUint32Array(module, modelMesh.indices, modelMesh.getIndicesDataOffset(), true, transferable);
|
|
170
|
+
tessellation.normals = WasmTools.vectorToFloat32Array(module, modelMesh.normals, modelMesh.getNormalsDataOffset(), true, transferable);
|
|
171
|
+
tessellation.vertices = WasmTools.vectorToFloat32Array(module, modelMesh.vertices, modelMesh.getVerticesDataOffset(), true, transferable);
|
|
153
172
|
modelMesh.delete();
|
|
154
173
|
return { key: wasmTessellation.id, value: tessellation };
|
|
155
174
|
}
|
|
175
|
+
static toBimCloudHierarchyItem(wasmHierarchyItem) {
|
|
176
|
+
const hierarchyItem = new BimCloudHierarchyItem();
|
|
177
|
+
hierarchyItem.index = wasmHierarchyItem.index;
|
|
178
|
+
hierarchyItem.dataIndex = wasmHierarchyItem.dataIndex;
|
|
179
|
+
hierarchyItem.type = wasmHierarchyItem.type;
|
|
180
|
+
hierarchyItem.mask = wasmHierarchyItem.mask;
|
|
181
|
+
hierarchyItem.numPoints = wasmHierarchyItem.numPoints;
|
|
182
|
+
hierarchyItem.offset = wasmHierarchyItem.offset;
|
|
183
|
+
hierarchyItem.size = wasmHierarchyItem.size;
|
|
184
|
+
hierarchyItem.spacing = wasmHierarchyItem.spacing;
|
|
185
|
+
const min = wasmHierarchyItem.min;
|
|
186
|
+
hierarchyItem.min = { x: min[0], y: min[1], z: min[2] };
|
|
187
|
+
const max = wasmHierarchyItem.max;
|
|
188
|
+
hierarchyItem.max = { x: max[0], y: max[1], z: max[2] };
|
|
189
|
+
return hierarchyItem;
|
|
190
|
+
}
|
|
156
191
|
}
|
|
157
192
|
//# sourceMappingURL=ViewerTools.js.map
|