* 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
)
| 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 |
no test coverage detected