-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.js
57 lines (46 loc) · 1.54 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { Color } from 'three';
import { IfcViewerAPI } from 'web-ifc-viewer';
function CreateViewer(container) {
let viewer = new IfcViewerAPI({ container, backgroundColor: new Color(0xffffff) });
viewer.axes.setAxes();
viewer.grid.setGrid();
return viewer;
}
const container = document.getElementById('viewer-container');
let viewer = CreateViewer(container);
const input = document.getElementById("file-input");
window.onmousemove = () => viewer.IFC.selector.prePickIfcItem();
// Select items and log properties
window.ondblclick = async () => {
const item = await viewer.IFC.selector.pickIfcItem(true);
if (item.modelID === undefined || item.id === undefined) return;
console.log(await viewer.IFC.getProperties(item.modelID, item.id, true));
}
viewer.clipper.active = true;
input.addEventListener("change",
async (changed) => {
const file = changed.target.files[0];
const ifcURL = URL.createObjectURL(file);
loadIfc(ifcURL);
},
false
);
async function loadIfc(url) {
await viewer.dispose();
viewer = CreateViewer(container);
// await viewer.IFC.setWasmPath("static/wasm/");
const model = await viewer.IFC.loadIfcUrl(url);
viewer.shadowDropper.renderShadow(model.modelID);
}
loadIfc('models/01.ifc');
window.onkeydown = (event) => {
if (event.code === 'KeyP') {
viewer.clipper.createPlane();
}
else if (event.code === 'KeyO') {
viewer.clipper.deletePlane();
}
else if (event.code === 'Escape') {
viewer.IFC.selector.unpickIfcItems();
}
}