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

Method OpenModelFromCallback

src/ts/web-ifc-api.ts:511–538  ·  view source on GitHub ↗

* Opens a model and returns a modelID number * @param callback a function of signature (offset:number, size: number) => Uint8Array that will retrieve the IFC data * @param settings Settings for loading the model @see LoaderSettings * @returns ModelID or -1 if model fails to open

(
    callback: ModelLoadCallback,
    settings?: LoaderSettings
  )

Source from the content-addressed store, hash-verified

509 * @returns ModelID or -1 if model fails to open
510 */
511 OpenModelFromCallback(
512 callback: ModelLoadCallback,
513 settings?: LoaderSettings
514 ): number {
515 let s = this.CreateSettings(settings);
516 let result = this.wasmModule.OpenModel(
517 s,
518 (destPtr: number, offsetInSrc: number, destSize: number) => {
519 let data = callback(offsetInSrc, destSize);
520 let srcSize = Math.min(data.byteLength, destSize);
521 let dest = this.wasmModule.HEAPU8.subarray(destPtr, destPtr + srcSize);
522 dest.set(data);
523 return srcSize;
524 }
525 );
526 this.deletedLines.set(result, new Set());
527 var schemaName = this.GetHeaderLine(result, FILE_SCHEMA).arguments[0][0]
528 .value;
529 this.modelSchemaList[result] = this.LookupSchemaId(schemaName);
530 this.modelSchemaNameList[result] = schemaName;
531 if (this.modelSchemaList[result] == -1) {
532 Log.error("Unsupported Schema:" + schemaName);
533 this.CloseModel(result);
534 return -1;
535 }
536 Log.debug("Parsing Model using " + schemaName + " Schema");
537 return result;
538 }
539
540 /**
541 * Fetches the ifc schema version of a given model

Callers 2

CreateModelResutsFunction · 0.80
WebIfcApi.spec.tsFile · 0.80

Calls 6

CreateSettingsMethod · 0.95
GetHeaderLineMethod · 0.95
LookupSchemaIdMethod · 0.95
CloseModelMethod · 0.95
callbackFunction · 0.85
OpenModelMethod · 0.80

Tested by

no test coverage detected