@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.
Files changed (39) hide show
  1. package/README.md +9 -9
  2. package/lib/index.d.ts +2 -2
  3. package/lib/index.js +1 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/src/model/BimDataElement.d.ts +69 -3
  6. package/lib/src/model/BimDataElement.js +13 -4
  7. package/lib/src/model/BimDataElement.js.map +1 -1
  8. package/lib/src/model/BimDataElementPropertySet.js.map +1 -1
  9. package/lib/src/model/BimDataPart.d.ts +61 -0
  10. package/lib/src/model/BimDataPart.js +94 -0
  11. package/lib/src/model/BimDataPart.js.map +1 -0
  12. package/lib/src/model/BimDataProvider.d.ts +16 -0
  13. package/lib/src/model/BimDataProvider.js +29 -0
  14. package/lib/src/model/BimDataProvider.js.map +1 -0
  15. package/lib/src/utils/ViewerTools.d.ts +9 -9
  16. package/lib/src/utils/ViewerTools.js +73 -38
  17. package/lib/src/utils/ViewerTools.js.map +1 -1
  18. package/lib/src/utils/WasmTools.d.ts +10 -6
  19. package/lib/src/utils/WasmTools.js +66 -32
  20. package/lib/src/utils/WasmTools.js.map +1 -1
  21. package/lib/src/wasm/CorsWorker.d.ts +6 -0
  22. package/lib/src/wasm/CorsWorker.js +20 -0
  23. package/lib/src/wasm/CorsWorker.js.map +1 -0
  24. package/lib/src/wasm/pilot_bim_dataprovider.d.ts +59 -6
  25. package/lib/src/wasm/pilot_bim_dataprovider.js +1 -1
  26. package/lib/src/wasm/pilot_bim_dataprovider.wasm +0 -0
  27. package/lib/src/wasm/wasm.worker.d.ts +49 -0
  28. package/lib/src/wasm/wasm.worker.js +211 -0
  29. package/lib/src/wasm/wasm.worker.js.map +1 -0
  30. package/package.json +5 -13
  31. package/lib/src/model/BimDataModel.d.ts +0 -19
  32. package/lib/src/model/BimDataModel.js +0 -59
  33. package/lib/src/model/BimDataModel.js.map +0 -1
  34. package/lib/src/model/BimDataModelPart.d.ts +0 -40
  35. package/lib/src/model/BimDataModelPart.js +0 -144
  36. package/lib/src/model/BimDataModelPart.js.map +0 -1
  37. package/lib/src/model/BimNodeComparer.d.ts +0 -10
  38. package/lib/src/model/BimNodeComparer.js +0 -71
  39. 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, BimDataModel } from "@pilotdev/pilot-bim-dataprovider";
14
+ import { BimDataBigIntMaxValue, BimDataProvider } from "@pilotdev/pilot-bim-dataprovider";
15
15
 
16
16
  // Create new instance of BimModel
17
- const bimModel = new BimDataModel();
17
+ const bimDataProvider = new BimDataProvider();
18
18
 
19
19
  // Initialize model.
20
20
  // Method returns Promise<void>
21
- await bimModel.init();
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 = bimModel.openModelPart("uniqueId", fileBuffer);
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
- bimModel.dispose();
41
+ await bimDataProvider.dispose();
42
42
 
43
43
  ```
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { BimDataModel, IBimDataModel } from "./src/model/BimDataModel.js";
2
- export { IBimDataModelPart } from "./src/model/BimDataModelPart.js";
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 { BimDataModel } from "./src/model/BimDataModel.js";
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,YAAY,EAAiB,MAAM,6BAA6B,CAAC;AAE1E,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"}
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: number[];
15
+ meshPlacement: Float64Array;
16
16
  }
17
17
  export declare class BimDataGridObject {
18
- gridPlacement: number[];
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: number[];
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,uDAAuD;AACvD,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,GAAa,EAAE,CAAC;IAC/B,CAAC;CAAA;AAED,MAAM,OAAO,iBAAiB;IAA9B;QACE,kBAAa,GAAa,EAAE,CAAC;QAC7B,aAAQ,GAAsB,EAAE,CAAC;IACnC,CAAC;CAAA;AAED,MAAM,OAAO,eAAe;IAA5B;QAGE,SAAI,GAAa,EAAE,CAAC;IAEtB,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"}
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":"AAGA,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"}
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, WasmIfcNodePair } from "../wasm/pilot_bim_dataprovider.js";
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 toToBimDataPairs(ifcNodePairs: VectorOf<WasmIfcNodePair>, dispose: boolean): {
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 toDimDataTessellation;
15
+ private static toBimDataTessellation;
16
+ private static toBimCloudHierarchyItem;
17
17
  }
@@ -1,46 +1,38 @@
1
- import { BimDataElement, BimDataMeshProperty } from "../model/BimDataElement.js";
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 toToBimDataPairs(ifcNodePairs, dispose) {
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.toDimDataTessellation(tessellation);
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 = ((_a = value.bool_value) === null || _a === void 0 ? void 0 : _a.has_value()) ? value.bool_value.value() : undefined;
82
- modelElementValue.date_value = ((_b = value.date_value) === null || _b === void 0 ? void 0 : _b.has_value()) ? value.date_value.value() : undefined;
83
- modelElementValue.decimal_value = ((_c = value.decimal_value) === null || _c === void 0 ? void 0 : _c.has_value()) ? WasmTools.decimalToNumber(value.decimal_value.value()) : undefined; // TODO convert
84
- modelElementValue.double_value = ((_d = value.double_value) === null || _d === void 0 ? void 0 : _d.has_value()) ? value.double_value.value() : undefined;
85
- modelElementValue.guid_value = ((_e = value.guid_value) === null || _e === void 0 ? void 0 : _e.has_value()) ? (_f = value.guid_value.value()) === null || _f === void 0 ? void 0 : _f.toString() : undefined;
86
- modelElementValue.int_value = ((_g = value.int_value) === null || _g === void 0 ? void 0 : _g.has_value()) ? value.int_value.value() : undefined;
87
- modelElementValue.str_value = ((_h = value.str_value) === null || _h === void 0 ? void 0 : _h.has_value()) ? value.str_value.value() : undefined;
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.vectorToArray(propPtr.mesh_placement, true);
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.vectorToArray(gridObjectPtr.placement, true),
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.vectorToArray(wasmAxisPtr.data, true)
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 toDimDataTessellation(wasmTessellation) {
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