(filename)
| 67 | } |
| 68 | |
| 69 | function CreateModelResuts(filename) |
| 70 | { |
| 71 | let modelID; |
| 72 | console.log("Parsing:"+filename); |
| 73 | if (filename.includes(".ifczip")) { |
| 74 | let zip = new AdmZip(filename); |
| 75 | zip.getEntries().forEach(function (zipEntry) { |
| 76 | let ifcdata = zipEntry.getData(); |
| 77 | modelID = ifcAPI.OpenModel(ifcdata); |
| 78 | }); |
| 79 | } else { |
| 80 | let file = openSync(filename); |
| 81 | let retriever = function (offset, size) { |
| 82 | let data = new Uint8Array(size); |
| 83 | let bytesRead = readSync(file,data,0,size,offset); |
| 84 | if (bytesRead <= 0 ) return new Uint8Array(0); |
| 85 | return data; |
| 86 | } |
| 87 | try { |
| 88 | modelID = ifcAPI.OpenModelFromCallback(retriever); |
| 89 | } catch (e) { |
| 90 | console.log(e); |
| 91 | } |
| 92 | } |
| 93 | let geometries = []; |
| 94 | ifcAPI.StreamAllMeshes(modelID, (mesh) => { |
| 95 | const placedGeometries = mesh.geometries; |
| 96 | for (let i = 0; i < placedGeometries.size(); i++) { |
| 97 | const placedGeometry = placedGeometries.get(i); |
| 98 | let mesh = getPlacedGeometry(modelID, placedGeometry); |
| 99 | let geom = mesh.geometry.applyMatrix4(mesh.matrix); |
| 100 | geometries.push(geom); |
| 101 | } |
| 102 | }); |
| 103 | |
| 104 | console.log("Parsed Model:"+filename+"Loading " + geometries.length +" geometries"); |
| 105 | if (geometries.length > 0) { |
| 106 | return geometries; |
| 107 | } |
| 108 | } |
| 109 | |
| 110 | function getPlacedGeometry(modelID, placedGeometry) { |
| 111 | const geometry = getBufferGeometry(modelID, placedGeometry); |
no test coverage detected