MCPcopy Create free account
hub / github.com/ThatOpen/engine_web-ifc / LoadModel

Function LoadModel

examples/viewer/web-ifc-viewer.ts:202–269  ·  view source on GitHub ↗
(data: Uint8Array)

Source from the content-addressed store, hash-verified

200}
201
202async function LoadModel(data: Uint8Array) {
203 const start = ms();
204 // const modelID = ifcAPI.OpenModel(data, { COORDINATE_TO_ORIGIN: true, CIRCLE_SEGMENTS: 24, TOLERANCE_PLANE_INTERSECTION: 1.0E-04, TOLERANCE_PLANE_DEVIATION: 1.0E-04, TOLERANCE_BACK_DEVIATION_DISTANCE: 1.0E-04, TOLERANCE_INSIDE_OUTSIDE_PERIMETER: 1.0E-10, TOLERANCE_SCALAR_EQUALITY: 1.0E-04, PLANE_REFIT_ITERATIONS: 1, BOOLEAN_UNION_THRESHOLD: 150});
205 const modelID = ifcAPI.OpenModel(data, {
206 COORDINATE_TO_ORIGIN: true,
207 CIRCLE_SEGMENTS: 6,
208 TOLERANCE_PLANE_INTERSECTION: 1.0e-04,
209 TOLERANCE_PLANE_DEVIATION: 1.0e-04,
210 TOLERANCE_BACK_DEVIATION_DISTANCE: 1.0e-04,
211 TOLERANCE_INSIDE_OUTSIDE_PERIMETER: 1.0e-10,
212 TOLERANCE_SCALAR_EQUALITY: 1.0e-04,
213 PLANE_REFIT_ITERATIONS: 10,
214 BOOLEAN_UNION_THRESHOLD: 150,
215 });
216 // #1092 -> TOLERANCE_PLANE_INTERSECTION: 5.0E-02
217 // #1092 A -> TOLERANCE_PLANE_INTERSECTION: 1.0E-01, TOLERANCE_PLANE_DEVIATION: 3.0e-04, TOLERANCE_BACK_DEVIATION_DISTANCE: 3.0e-04, PLANE_REFIT_ITERATIONS: 10
218 // #1256 -> TOLERANCE_PLANE_INTERSECTION: 1.0E-02, TOLERANCE_PLANE_DEVIATION: 1.0E-01, TOLERANCE_BACK_DEVIATION_DISTANCE: 1.0E-01
219 // #1023 -> TOLERANCE_PLANE_DEVIATION: 1.0E-01, TOLERANCE_BACK_DEVIATION_DISTANCE: 1.0E-01
220 // #540 -> TOLERANCE_PLANE_INTERSECTION: 1.0E-03, TOLERANCE_SCALAR_EQUALITY: 1.0E-01, PLANE_REFIT_ITERATIONS: 3
221 // #1225 -> TOLERANCE_PLANE_DEVIATION: 1.0E-02, TOLERANCE_BACK_DEVIATION_DISTANCE: 1.0E-02, TOLERANCE_INSIDE_OUTSIDE_PERIMETER: 1.0E-02
222 // #1506 -> TOLERANCE_PLANE_INTERSECTION = 1.0E-02, TOLERANCE_PLANE_DEVIATION = 1.0E-02, TOLERANCE_BACK_DEVIATION_DISTANCE = 1.0E-02;
223 // #604 -> BOOLEAN_UNION_THRESHOLD: 50
224 // https://github.com/ThatOpen/engine_fragment/issues/97 -> CIRCLE_SEGMENTS: 4, PLANE_REFIT_ITERATIONS: 0, BOOLEAN_UNION_THRESHOLD: 1000
225 // Ferroflex, samMateo -> CIRCLE_SEGMENTS: 6
226 const time = ms() - start;
227 console.log(`Opening model took ${time} ms`);
228 ifcThree.LoadAllGeometry(scene, modelID);
229
230 if (
231 ifcAPI.GetModelSchema(modelID) == "IFC2X3" ||
232 ifcAPI.GetModelSchema(modelID) == "IFC4" ||
233 ifcAPI.GetModelSchema(modelID) == "IFC4X3_RC4"
234 ) {
235 //Example to get all types used in the model
236 let types = await ifcAPI.GetAllTypesOfModel(modelID);
237 if (types) {
238 for (let i = 0; i < types.length; i++) {
239 let type = types[i];
240 //console.log(type);
241 //console.log(type.typeID);
242 //console.log(type.typeName);
243 }
244 }
245 }
246
247 try {
248 // This function should activate only if we are in IFC4X3
249 let alignments = await ifcAPI.GetAllAlignments(modelID);
250 console.log("Alignments: ", alignments);
251 } catch (error) {
252 // Code to handle the error
253 console.error("An error occurred:", error);
254 }
255
256 let lines = ifcAPI.GetLineIDsWithType(modelID, IFCUNITASSIGNMENT);
257 //console.log(lines.size());
258 for (let l = 0; l < lines.size(); l++) {
259 //console.log(lines.get(l));

Callers 1

getFileReaderFunction · 0.85

Calls 11

msFunction · 0.90
OpenModelMethod · 0.80
GetModelSchemaMethod · 0.80
GetAllTypesOfModelMethod · 0.80
GetAllAlignmentsMethod · 0.80
GetLineIDsWithTypeMethod · 0.80
sizeMethod · 0.80
GetLineMethod · 0.80
getMethod · 0.65
LoadAllGeometryMethod · 0.45
CloseModelMethod · 0.45

Tested by

no test coverage detected