bimplus-renderer 1.6.13 → 1.6.15
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/bin/processPartitionVertices.js +2 -2
- package/dist/bimplus-renderer.js +1 -1
- package/modelviewer-data-driven-tests/ddt-test-data/README.md +3 -0
- package/modelviewer-data-driven-tests/ddt-test-data/Results.db +0 -0
- package/modelviewer-data-driven-tests/ddt-test-data/remote.conf +1 -0
- package/modelviewer-data-driven-tests/ddt-test-data-long/README.md +3 -0
- package/modelviewer-data-driven-tests/ddt-test-data-long/Results.db +0 -0
- package/modelviewer-data-driven-tests/ddt-test-data-long/remote.conf +1 -0
- package/modelviewer-data-driven-tests/simple-ddt-client/client.js +162 -0
- package/modelviewer-data-driven-tests/tests/loadIfcTests.js +114 -0
- package/package.json +2 -2
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
https://webdrive.allplan.com/s/n274sxcapgCAsyA/download
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
https://webdrive.allplan.com/s/LMSJ3pEQ6xG2MDN/download
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
const DEFAULT_SERVER_URI = 'http://localhost:3456'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Client for the simple-ddt-server
|
|
6
|
+
* Purpose is to list an deliver test data files and store results
|
|
7
|
+
* to be compareable to previous runs.
|
|
8
|
+
* @date 12/7/2023 - 6:18:55 AM
|
|
9
|
+
*
|
|
10
|
+
* @class Client
|
|
11
|
+
* @typedef {Client}
|
|
12
|
+
*/
|
|
13
|
+
class Client{
|
|
14
|
+
constructor(uri){
|
|
15
|
+
this._serverUri = uri || DEFAULT_SERVER_URI;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Get list of test files from the ddt server
|
|
20
|
+
* @date 12/7/2023 - 6:21:34 AM
|
|
21
|
+
*
|
|
22
|
+
* @returns {*} List of file names
|
|
23
|
+
*/
|
|
24
|
+
getTestDataList(){
|
|
25
|
+
return new Promise((resolve, reject)=> {
|
|
26
|
+
let oReq = new XMLHttpRequest();
|
|
27
|
+
oReq.open("GET", this._serverUri + '/testdata', true);
|
|
28
|
+
oReq.responseType = "json";
|
|
29
|
+
|
|
30
|
+
oReq.onerror = () =>{
|
|
31
|
+
alert('Network error');
|
|
32
|
+
reject(new Error('Network error'));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
oReq.onload = ()=> {
|
|
36
|
+
|
|
37
|
+
if(oReq.status !== 200){
|
|
38
|
+
alert(`Status: ${oReq.status}. Unable to open file from uri`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
resolve(oReq.response.files);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
oReq.send();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Get test data file from ddt server
|
|
51
|
+
* @date 12/7/2023 - 6:22:14 AM
|
|
52
|
+
*
|
|
53
|
+
* @param {*} filename
|
|
54
|
+
* @returns {*}
|
|
55
|
+
*/
|
|
56
|
+
getTestData(filename){
|
|
57
|
+
|
|
58
|
+
return new Promise((resolve, reject)=> {
|
|
59
|
+
let oReq = new XMLHttpRequest();
|
|
60
|
+
oReq.open("GET", `${this._serverUri}/testdata/${filename}`, true);
|
|
61
|
+
oReq.responseType = "arraybuffer";
|
|
62
|
+
|
|
63
|
+
oReq.onerror = () =>{
|
|
64
|
+
alert('Network error');
|
|
65
|
+
reject(new Error('Network error'));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
oReq.onload = ()=> {
|
|
69
|
+
|
|
70
|
+
if(oReq.status !== 200){
|
|
71
|
+
alert(`Status: ${oReq.status}. Unable to open file from uri`);
|
|
72
|
+
reject(new Error('Unable to open file from uri'));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
let arraybuffer = oReq.response;
|
|
76
|
+
let fileData = new Uint8Array(arraybuffer);
|
|
77
|
+
|
|
78
|
+
resolve(fileData);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
oReq.send();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Get previous test result for one file and test name
|
|
87
|
+
* @date 12/7/2023 - 6:23:06 AM
|
|
88
|
+
*
|
|
89
|
+
* @param {*} filename
|
|
90
|
+
* @param {*} testname
|
|
91
|
+
* @returns {*}
|
|
92
|
+
*/
|
|
93
|
+
getTestResult(filename, testname){
|
|
94
|
+
|
|
95
|
+
return new Promise((resolve, reject)=> {
|
|
96
|
+
let oReq = new XMLHttpRequest();
|
|
97
|
+
oReq.open("GET", `${this._serverUri}/testdata/${filename}/results/${testname}`, true);
|
|
98
|
+
oReq.responseType = "json";
|
|
99
|
+
|
|
100
|
+
oReq.onerror = () =>{
|
|
101
|
+
alert('Network error');
|
|
102
|
+
reject(new Error('Network error'));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
oReq.onload = ()=> {
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
if(oReq.status === 404){
|
|
109
|
+
resolve();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if(oReq.status !== 200){
|
|
113
|
+
alert(`Status: ${oReq.status}. Unable to open file from uri`);
|
|
114
|
+
reject(new Error('Unable to open file from uri'));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
resolve(oReq.response);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
oReq.send();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Add or replace test result for a filename and testname
|
|
126
|
+
* @date 12/7/2023 - 6:23:58 AM
|
|
127
|
+
*
|
|
128
|
+
* @param {*} filename
|
|
129
|
+
* @param {*} testname
|
|
130
|
+
* @param {*} results
|
|
131
|
+
* @returns {*}
|
|
132
|
+
*/
|
|
133
|
+
postTestResult(filename, testname, results){
|
|
134
|
+
|
|
135
|
+
return new Promise((resolve, reject)=> {
|
|
136
|
+
let oReq = new XMLHttpRequest();
|
|
137
|
+
oReq.open("POST", `${this._serverUri}/testdata/${filename}/results/${testname}`, true);
|
|
138
|
+
oReq.responseType = "json";
|
|
139
|
+
oReq.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
|
|
140
|
+
|
|
141
|
+
oReq.onerror = () =>{
|
|
142
|
+
alert('Network error');
|
|
143
|
+
reject(new Error('Network error'));
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
oReq.onload = ()=> {
|
|
147
|
+
|
|
148
|
+
if(oReq.status !== 200){
|
|
149
|
+
alert(`Status: ${oReq.status}. Unable to post test result`);
|
|
150
|
+
reject(new Error('Unable to post test result'));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
resolve(oReq.response);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
oReq.send(JSON.stringify(results));
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export default Client;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Import depdendencies (note you can use relative paths here)
|
|
2
|
+
import {
|
|
3
|
+
ViewportHelper
|
|
4
|
+
} from '../../test/helpers/viewportHelper';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
TestHelper
|
|
8
|
+
} from '../../test/helpers/testHelper';
|
|
9
|
+
import {
|
|
10
|
+
GC
|
|
11
|
+
} from '../../test/helpers/gcHelper';
|
|
12
|
+
import ProjectViewer from './../../src/viewers/projectViewer';
|
|
13
|
+
import Client from './../simple-ddt-client/client'
|
|
14
|
+
|
|
15
|
+
QUnit.module("modelviewer_tests/loadFromIfc", function () {
|
|
16
|
+
|
|
17
|
+
QUnit.test("Ifc loader basic test", async function (assert) {
|
|
18
|
+
|
|
19
|
+
// Create client for the simple-ddt-server listening on port 3456
|
|
20
|
+
let client = new Client('http://localhost:3456');
|
|
21
|
+
|
|
22
|
+
let testData = await client.getTestDataList();
|
|
23
|
+
|
|
24
|
+
let testHelper = new TestHelper();
|
|
25
|
+
|
|
26
|
+
assert.ok(testData && testData.length >0, "No test data files found. In case of remote data, run sync from remote.");
|
|
27
|
+
|
|
28
|
+
// Loop through all test data files
|
|
29
|
+
for(let filename of testData){
|
|
30
|
+
|
|
31
|
+
let viewport3D = new ViewportHelper(true).viewport3D;
|
|
32
|
+
|
|
33
|
+
let viewer = new ProjectViewer(testHelper.api, viewport3D, 8, true);
|
|
34
|
+
|
|
35
|
+
let project = await viewer.openProject({
|
|
36
|
+
id : 'MockProject',
|
|
37
|
+
name : 'MockProjectName'
|
|
38
|
+
}, []);
|
|
39
|
+
|
|
40
|
+
let objectsContainer = project.getObjectsContainer();
|
|
41
|
+
|
|
42
|
+
let fileData = await client.getTestData(filename);
|
|
43
|
+
|
|
44
|
+
console.log('Starting Test for ' + filename);
|
|
45
|
+
|
|
46
|
+
let ifcVIew = new Uint8Array(fileData);
|
|
47
|
+
|
|
48
|
+
let model = await viewer.loadIfcFile(ifcVIew);
|
|
49
|
+
|
|
50
|
+
assert.ok(model);
|
|
51
|
+
|
|
52
|
+
assert.ok(viewport3D.diagnostics.checkViewportState());
|
|
53
|
+
assert.ok(viewport3D.diagnostics.checkObjects());
|
|
54
|
+
assert.ok(viewport3D.diagnostics.checkObjectSets());
|
|
55
|
+
assert.ok(viewport3D.diagnostics.checkDisciplineNodes());
|
|
56
|
+
|
|
57
|
+
let numLayers = model.getLayerArray().length;
|
|
58
|
+
let numObjects = objectsContainer.getObjectCount();
|
|
59
|
+
let numObjectTypes = 0;
|
|
60
|
+
let numSubMeshs = 0;
|
|
61
|
+
let numVertices = 0;
|
|
62
|
+
let numFaces = 0;
|
|
63
|
+
|
|
64
|
+
assert.ok(await viewport3D.setupProjectView());
|
|
65
|
+
let bb = viewport3D.visibleGeometryBoundingBox;
|
|
66
|
+
let width = Math.ceil(bb.max.x - bb.min.x);
|
|
67
|
+
let height = Math.ceil(bb.max.y - bb.min.y);
|
|
68
|
+
let depth = Math.ceil(bb.max.z - bb.min.z);
|
|
69
|
+
|
|
70
|
+
let objectTypes = {};
|
|
71
|
+
objectsContainer.forEachObject(obj=>{
|
|
72
|
+
numSubMeshs += obj.meshesData.length;
|
|
73
|
+
|
|
74
|
+
if(!objectTypes[obj.type]){
|
|
75
|
+
objectTypes[obj.type] = true;
|
|
76
|
+
numObjectTypes++;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
numFaces += obj.getNumberOfFaces();
|
|
80
|
+
numVertices += obj.getEndVertex() - obj.getStartVertex();
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
let testName = QUnit.config.current.testName + '_0';
|
|
84
|
+
let existingResults = await client.getTestResult(filename, testName);
|
|
85
|
+
let results = {
|
|
86
|
+
numLayers : numLayers,
|
|
87
|
+
numObjects : numObjects,
|
|
88
|
+
numObjectTypes : numObjectTypes,
|
|
89
|
+
numSubMeshs : numSubMeshs,
|
|
90
|
+
numVertices : numVertices,
|
|
91
|
+
numFaces : numFaces,
|
|
92
|
+
boundingBox : {
|
|
93
|
+
width : width,
|
|
94
|
+
height : height,
|
|
95
|
+
depth : depth
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// Post results when not existing, otherwise check for equality
|
|
100
|
+
if(!existingResults){
|
|
101
|
+
await client.postTestResult(filename, testName, results);
|
|
102
|
+
}else{
|
|
103
|
+
assert.deepEqual(existingResults, results, `Test results for ${filename} are differnt to the stored reference!`)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
await viewer.dispose();
|
|
107
|
+
GC.run();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bimplus-renderer",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.15",
|
|
4
4
|
"description": "bim+ renderer",
|
|
5
5
|
"main": "dist/bimplus-renderer.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"dependencies": {
|
|
101
101
|
"@babel/runtime": "^7.23.2",
|
|
102
102
|
"async": "^3.2.5",
|
|
103
|
-
"bimplus-renderer": "1.6.4-overlays-
|
|
103
|
+
"bimplus-renderer": "1.6.4-overlays-45",
|
|
104
104
|
"dexie": "3.2.4",
|
|
105
105
|
"fit_transform": "^0.0.6",
|
|
106
106
|
"moment-timezone": "^0.5.43",
|