@bldrs-ai/conway 1.419.1268 → 1.422.1273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiled/examples/browser-bundled.cjs +1 -1
- package/compiled/examples/cli-bundled.cjs +1 -1
- package/compiled/examples/cli-step-bundled.cjs +1 -1
- package/compiled/examples/validator-bundled.cjs +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.d.ts +41 -0
- package/compiled/src/compat/web-ifc/ifc_api.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api.js +64 -1
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/ifc_api_deferred_open.test.js +88 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts +8 -0
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_model_passthrough_factory.js +3 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +61 -0
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
- package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +210 -1
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts +2 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.d.ts.map +1 -0
- package/compiled/src/compat/web-ifc/web_wasm_directory.test.js +22 -0
- package/compiled/src/index.d.ts +1 -1
- package/compiled/src/index.d.ts.map +1 -1
- package/compiled/src/index.js +1 -1
- package/compiled/src/version/version.js +1 -1
- package/compiled/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
|
|
|
30
30
|
var readline = __toESM(require("node:readline"), 1);
|
|
31
31
|
|
|
32
32
|
// compiled/src/version/version.js
|
|
33
|
-
var versionString = "Conway v1.
|
|
33
|
+
var versionString = "Conway v1.422.1273";
|
|
34
34
|
|
|
35
35
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
36
36
|
var wasmType = "";
|
|
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
|
|
|
14965
14965
|
var import_process = require("process");
|
|
14966
14966
|
|
|
14967
14967
|
// compiled/src/version/version.js
|
|
14968
|
-
var versionString = "Conway v1.
|
|
14968
|
+
var versionString = "Conway v1.422.1273";
|
|
14969
14969
|
|
|
14970
14970
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
14971
14971
|
function pThreadsAllowed() {
|
|
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
|
|
|
15943
15943
|
};
|
|
15944
15944
|
|
|
15945
15945
|
// compiled/src/version/version.js
|
|
15946
|
-
var versionString = "Conway v1.
|
|
15946
|
+
var versionString = "Conway v1.422.1273";
|
|
15947
15947
|
|
|
15948
15948
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
15949
15949
|
function pThreadsAllowed() {
|
|
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
|
|
|
944
944
|
var entity_types_ifc_gen_default = EntityTypesIfc;
|
|
945
945
|
|
|
946
946
|
// compiled/src/version/version.js
|
|
947
|
-
var versionString = "Conway v1.
|
|
947
|
+
var versionString = "Conway v1.422.1273";
|
|
948
948
|
|
|
949
949
|
// compiled/dependencies/conway-geom/interface/conway_geometry.js
|
|
950
950
|
var wasmType = "";
|
|
@@ -37,6 +37,16 @@ export interface Loadersettings {
|
|
|
37
37
|
* embedders can print the model line as early as possible (issue #301).
|
|
38
38
|
*/
|
|
39
39
|
ON_MODEL_INFO?: (info: ModelInfo) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Conway extension (OpenModelStreamed only; Share demand/tiled
|
|
42
|
+
* rendering slice A): open with NO geometry extraction — the model
|
|
43
|
+
* registers with an empty scene and the embedder pumps
|
|
44
|
+
* `ExtractGeometryBatch` to extract products in file-order batches,
|
|
45
|
+
* receiving each batch's meshes incrementally. Properties and the
|
|
46
|
+
* spatial structure work from the first batch. Ignored by the
|
|
47
|
+
* classic open paths and by the internal streamed→classic fallback.
|
|
48
|
+
*/
|
|
49
|
+
DEFER_GEOMETRY?: boolean;
|
|
40
50
|
}
|
|
41
51
|
/**
|
|
42
52
|
* web-ifc compatible log levels (numeric values match web-ifc's enum so an
|
|
@@ -50,6 +60,18 @@ export declare enum LogLevel {
|
|
|
50
60
|
LOG_LEVEL_ERROR = 4,
|
|
51
61
|
LOG_LEVEL_OFF = 5
|
|
52
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Normalize an embedder wasm directory (the SetWasmPath value) to the
|
|
65
|
+
* absolute site path the web engine modules are served from — the
|
|
66
|
+
* runtime module prefix isolated (multithreaded) contexts import the
|
|
67
|
+
* engine from. Web wasm paths are site-root-relative by convention
|
|
68
|
+
* ('./static/js/'); missing input falls back to the same '/static/js/'
|
|
69
|
+
* directory conway-geom's web init already uses to locate wasm.
|
|
70
|
+
*
|
|
71
|
+
* @param wasmPath The embedder-configured wasm directory, if any.
|
|
72
|
+
* @return {string} Absolute directory with a trailing slash.
|
|
73
|
+
*/
|
|
74
|
+
export declare function webWasmDirectory(wasmPath: string | undefined): string;
|
|
53
75
|
export interface Vector<T> {
|
|
54
76
|
get(index: number): T;
|
|
55
77
|
push(parameter: T): void;
|
|
@@ -329,6 +351,25 @@ export declare class IfcAPI {
|
|
|
329
351
|
* @param modelID Model handle retrieved by OpenModel, model must not be closed
|
|
330
352
|
*/
|
|
331
353
|
CloseModel(modelID: number): void;
|
|
354
|
+
/**
|
|
355
|
+
* Conway extension (Share demand/tiled rendering slice A): on a model
|
|
356
|
+
* opened with `OpenModelStreamed(data, {DEFER_GEOMETRY: true})`,
|
|
357
|
+
* extract the next `batchSize` products and emit this batch's meshes —
|
|
358
|
+
* the incremental twin of StreamAllMeshes. Feature-detect with
|
|
359
|
+
* `typeof api.ExtractGeometryBatch === 'function'`; call repeatedly
|
|
360
|
+
* until `remaining` is 0.
|
|
361
|
+
*
|
|
362
|
+
* @param modelID handle retrieved by OpenModelStreamed
|
|
363
|
+
* @param batchSize max products to extract this call
|
|
364
|
+
* @param meshCallback receives each newly-extracted product's mesh
|
|
365
|
+
* @return {object} `{extracted, remaining}`; `{extracted: 0,
|
|
366
|
+
* remaining: 0}` for unknown models or models without the deferred
|
|
367
|
+
* pump (non-IFC / fully-extracted opens).
|
|
368
|
+
*/
|
|
369
|
+
ExtractGeometryBatch(modelID: number, batchSize: number, meshCallback?: (mesh: FlatMesh) => void): {
|
|
370
|
+
extracted: number;
|
|
371
|
+
remaining: number;
|
|
372
|
+
};
|
|
332
373
|
/**
|
|
333
374
|
*
|
|
334
375
|
* @param modelID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,IAAI,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ifc_api.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConwayGeometry, } from "../../index.js";
|
|
1
|
+
import { ConwayGeometry, setModulePrefix, } from "../../index.js";
|
|
2
2
|
import { versionString } from "../../version/version.js";
|
|
3
3
|
import Logger, { LogLevel as ConwayLogLevel } from "../../logging/logger.js";
|
|
4
4
|
import Environment from "../../utilities/environment.js";
|
|
@@ -36,6 +36,34 @@ const CONWAY_LOG_LEVEL_BY_WEBIFC = {
|
|
|
36
36
|
[LogLevel.LOG_LEVEL_ERROR]: ConwayLogLevel.ERROR,
|
|
37
37
|
[LogLevel.LOG_LEVEL_OFF]: ConwayLogLevel.OFF,
|
|
38
38
|
};
|
|
39
|
+
// The directory conway-geom's web init locates wasm from when no
|
|
40
|
+
// embedder path is configured — also the conventional serve location
|
|
41
|
+
// (Share copies Dist/* there at build time).
|
|
42
|
+
const DEFAULT_WEB_WASM_DIRECTORY = "/static/js/";
|
|
43
|
+
/**
|
|
44
|
+
* Normalize an embedder wasm directory (the SetWasmPath value) to the
|
|
45
|
+
* absolute site path the web engine modules are served from — the
|
|
46
|
+
* runtime module prefix isolated (multithreaded) contexts import the
|
|
47
|
+
* engine from. Web wasm paths are site-root-relative by convention
|
|
48
|
+
* ('./static/js/'); missing input falls back to the same '/static/js/'
|
|
49
|
+
* directory conway-geom's web init already uses to locate wasm.
|
|
50
|
+
*
|
|
51
|
+
* @param wasmPath The embedder-configured wasm directory, if any.
|
|
52
|
+
* @return {string} Absolute directory with a trailing slash.
|
|
53
|
+
*/
|
|
54
|
+
export function webWasmDirectory(wasmPath) {
|
|
55
|
+
let directory = wasmPath ?? "";
|
|
56
|
+
if (directory === "") {
|
|
57
|
+
return DEFAULT_WEB_WASM_DIRECTORY;
|
|
58
|
+
}
|
|
59
|
+
if (directory.startsWith("./")) {
|
|
60
|
+
directory = directory.substring(1);
|
|
61
|
+
}
|
|
62
|
+
else if (!directory.startsWith("/")) {
|
|
63
|
+
directory = `/${directory}`;
|
|
64
|
+
}
|
|
65
|
+
return directory.endsWith("/") ? directory : `${directory}/`;
|
|
66
|
+
}
|
|
39
67
|
/**
|
|
40
68
|
* @return {number} current time in ms
|
|
41
69
|
*/
|
|
@@ -83,6 +111,19 @@ export class IfcAPI {
|
|
|
83
111
|
Environment.checkEnvironment();
|
|
84
112
|
Logger.initializeWasmCallbacks();
|
|
85
113
|
Logger.info(versionString);
|
|
114
|
+
// Cross-origin-isolated web contexts select the multithreaded wasm,
|
|
115
|
+
// whose pthread workers resolve their worker script from the engine
|
|
116
|
+
// module's own import.meta.url. A bundler-inlined copy of the glue
|
|
117
|
+
// gives workers a wrong URL (the worker script 404s and MT init dies
|
|
118
|
+
// with a bare error Event — Share #1610). Setting a runtime module
|
|
119
|
+
// prefix makes conway-geom import the engine module from the
|
|
120
|
+
// directory it is actually served from, so import.meta.url — and
|
|
121
|
+
// therefore the worker script URL — is correct. Web wasm paths are
|
|
122
|
+
// site-root-relative by convention; no-op outside isolated windows.
|
|
123
|
+
if (typeof window !== "undefined" &&
|
|
124
|
+
window.crossOriginIsolated === true) {
|
|
125
|
+
setModulePrefix(webWasmDirectory(this.wasmPath));
|
|
126
|
+
}
|
|
86
127
|
const locateFileHandler = (path, prefix) => {
|
|
87
128
|
// when the wasm module requests the wasm file, we redirect to include the user specified path
|
|
88
129
|
if (path.endsWith(".wasm")) {
|
|
@@ -506,6 +547,28 @@ export class IfcAPI {
|
|
|
506
547
|
this.models.delete(modelID);
|
|
507
548
|
this.conwaywasm.destroy();
|
|
508
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* Conway extension (Share demand/tiled rendering slice A): on a model
|
|
552
|
+
* opened with `OpenModelStreamed(data, {DEFER_GEOMETRY: true})`,
|
|
553
|
+
* extract the next `batchSize` products and emit this batch's meshes —
|
|
554
|
+
* the incremental twin of StreamAllMeshes. Feature-detect with
|
|
555
|
+
* `typeof api.ExtractGeometryBatch === 'function'`; call repeatedly
|
|
556
|
+
* until `remaining` is 0.
|
|
557
|
+
*
|
|
558
|
+
* @param modelID handle retrieved by OpenModelStreamed
|
|
559
|
+
* @param batchSize max products to extract this call
|
|
560
|
+
* @param meshCallback receives each newly-extracted product's mesh
|
|
561
|
+
* @return {object} `{extracted, remaining}`; `{extracted: 0,
|
|
562
|
+
* remaining: 0}` for unknown models or models without the deferred
|
|
563
|
+
* pump (non-IFC / fully-extracted opens).
|
|
564
|
+
*/
|
|
565
|
+
ExtractGeometryBatch(modelID, batchSize, meshCallback) {
|
|
566
|
+
const result = this.models.get(modelID);
|
|
567
|
+
if (result?.extractGeometryBatch === void 0) {
|
|
568
|
+
return { extracted: 0, remaining: 0 };
|
|
569
|
+
}
|
|
570
|
+
return result.extractGeometryBatch(batchSize, meshCallback);
|
|
571
|
+
}
|
|
509
572
|
/**
|
|
510
573
|
*
|
|
511
574
|
* @param modelID
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ifc_api_deferred_open.test.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_deferred_open.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* eslint-disable no-magic-numbers */
|
|
2
|
+
// Deferred-geometry streamed open (demand/tiled rendering slice A):
|
|
3
|
+
// pumping ExtractGeometryBatch to completion must reproduce EXACTLY the
|
|
4
|
+
// meshes a classic OpenModel + StreamAllMeshes produces — same
|
|
5
|
+
// entities, same placed-geometry ids, colors, and transforms — across
|
|
6
|
+
// multiple small batches (which exercises the persisted coordination
|
|
7
|
+
// matrix; a single-shot capture can't catch a stale one).
|
|
8
|
+
import * as fs from "fs";
|
|
9
|
+
import { beforeAll, describe, expect, test } from "@jest/globals";
|
|
10
|
+
import { IfcAPI } from "./ifc_api.js";
|
|
11
|
+
const SETTINGS = { COORDINATE_TO_ORIGIN: true, USE_FAST_BOOLS: true };
|
|
12
|
+
let api;
|
|
13
|
+
let buffer;
|
|
14
|
+
/**
|
|
15
|
+
* Flatten a FlatMesh into comparable plain data.
|
|
16
|
+
*
|
|
17
|
+
* @param mesh The mesh.
|
|
18
|
+
* @return {object} Plain comparable form.
|
|
19
|
+
*/
|
|
20
|
+
function flatten(mesh) {
|
|
21
|
+
const geometries = [];
|
|
22
|
+
for (let where = 0; where < mesh.geometries.size(); ++where) {
|
|
23
|
+
const placed = mesh.geometries.get(where);
|
|
24
|
+
geometries.push({
|
|
25
|
+
color: placed.color,
|
|
26
|
+
geometryExpressID: placed.geometryExpressID,
|
|
27
|
+
flatTransformation: [...placed.flatTransformation],
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return { expressID: mesh.expressID, geometries };
|
|
31
|
+
}
|
|
32
|
+
beforeAll(async () => {
|
|
33
|
+
api = new IfcAPI();
|
|
34
|
+
await api.Init();
|
|
35
|
+
buffer = new Uint8Array(fs.readFileSync("data/index.ifc"));
|
|
36
|
+
}, 120000);
|
|
37
|
+
describe("OpenModelStreamed + DEFER_GEOMETRY", () => {
|
|
38
|
+
test("batch pump to completion matches classic StreamAllMeshes exactly", async () => {
|
|
39
|
+
const classicID = api.OpenModel(buffer, SETTINGS);
|
|
40
|
+
const classic = new Map();
|
|
41
|
+
api.StreamAllMeshes(classicID, (mesh) => {
|
|
42
|
+
classic.set(mesh.expressID, flatten(mesh));
|
|
43
|
+
});
|
|
44
|
+
expect(classic.size).toBeGreaterThan(0);
|
|
45
|
+
const deferredID = await api.OpenModelStreamed(buffer, { ...SETTINGS, DEFER_GEOMETRY: true });
|
|
46
|
+
expect(deferredID).toBeGreaterThanOrEqual(0);
|
|
47
|
+
// Nothing extracted yet: the scene walk yields no meshes.
|
|
48
|
+
const before = [];
|
|
49
|
+
api.StreamAllMeshes(deferredID, (mesh) => {
|
|
50
|
+
before.push(mesh.expressID);
|
|
51
|
+
});
|
|
52
|
+
expect(before).toHaveLength(0);
|
|
53
|
+
// Pump in deliberately small batches; collect incremental meshes.
|
|
54
|
+
const streamed = new Map();
|
|
55
|
+
let firstBatchCount = 0;
|
|
56
|
+
let rounds = 0;
|
|
57
|
+
for (;;) {
|
|
58
|
+
const { extracted, remaining } = api.ExtractGeometryBatch(deferredID, 7, (mesh) => {
|
|
59
|
+
streamed.set(mesh.expressID, flatten(mesh));
|
|
60
|
+
});
|
|
61
|
+
if (rounds === 0) {
|
|
62
|
+
firstBatchCount = streamed.size;
|
|
63
|
+
}
|
|
64
|
+
++rounds;
|
|
65
|
+
if (remaining === 0 && extracted === 0) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Incrementality: meshes arrived before the pump completed.
|
|
70
|
+
expect(rounds).toBeGreaterThan(2);
|
|
71
|
+
expect(firstBatchCount).toBeGreaterThanOrEqual(0);
|
|
72
|
+
expect(streamed.size).toBe(classic.size);
|
|
73
|
+
// Exact parity per entity: ids, colors, transforms.
|
|
74
|
+
for (const [expressID, mesh] of classic) {
|
|
75
|
+
expect(streamed.get(expressID)).toEqual(mesh);
|
|
76
|
+
}
|
|
77
|
+
api.CloseModel(classicID);
|
|
78
|
+
api.CloseModel(deferredID);
|
|
79
|
+
}, 240000);
|
|
80
|
+
test("ExtractGeometryBatch is a safe no-op on non-deferred models", async () => {
|
|
81
|
+
const modelID = await api.OpenModelStreamed(buffer, SETTINGS);
|
|
82
|
+
expect(api.ExtractGeometryBatch(modelID, 8))
|
|
83
|
+
.toEqual({ extracted: 0, remaining: 0 });
|
|
84
|
+
expect(api.ExtractGeometryBatch(9999, 8))
|
|
85
|
+
.toEqual({ extracted: 0, remaining: 0 });
|
|
86
|
+
api.CloseModel(modelID);
|
|
87
|
+
}, 120000);
|
|
88
|
+
});
|
|
@@ -7,6 +7,14 @@ export interface IfcApiModelPassthrough {
|
|
|
7
7
|
loadAllGeometry(): Vector<FlatMesh>;
|
|
8
8
|
streamAllMeshesWithTypes(types: number[], meshCallback: (mesh: FlatMesh) => void): void;
|
|
9
9
|
streamAllMeshes(meshCallback: (mesh: FlatMesh) => void): void;
|
|
10
|
+
/**
|
|
11
|
+
* Deferred-mode batch pump (IFC proxies opened with DEFER_GEOMETRY) —
|
|
12
|
+
* see IfcApiProxyIfc.extractGeometryBatch.
|
|
13
|
+
*/
|
|
14
|
+
extractGeometryBatch?(batchSize: number, meshCallback?: (mesh: FlatMesh) => void): {
|
|
15
|
+
extracted: number;
|
|
16
|
+
remaining: number;
|
|
17
|
+
};
|
|
10
18
|
getCoordinationMatrix(): number[];
|
|
11
19
|
getAllLines(): Vector<number>;
|
|
12
20
|
getLineIDsWithType(type: number): Vector<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_model_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,sBAAsB;IAErC,UAAU,EAAE,qBAAqB,CAAA;IAEjC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxC,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IACvF,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7D,qBAAqB,IAAI,MAAM,EAAE,CAAA;IACjC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IAC9C,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5D,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAA;IAEnD;;;OAGG;IACH,kBAAkB,CAAC,IAAI,IAAI,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAEnC;;;OAGG;IACH,0BAA0B,CAAC,CACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GAAI,IAAI,CAAA;IAEpC;;;OAGG;IACH,kBAAkB,CAAC,CAAE,SAAS,EAAE,MAAM,GAAI,OAAO,CAAE,IAAI,CAAE,CAAA;IAEzD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,gBAAgB,CAAE,MAAM,CAAE,CAAA;CAC9C"}
|
|
1
|
+
{"version":3,"file":"ifc_api_model_passthrough.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAGhE,MAAM,WAAW,sBAAsB;IAErC,UAAU,EAAE,qBAAqB,CAAA;IAEjC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAA;IACxC,eAAe,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;IACnC,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IACvF,eAAe,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;IAC7D;;;OAGG;IACH,oBAAoB,CAAC,CACnB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,CAAA;IAClF,qBAAqB,IAAI,MAAM,EAAE,CAAA;IACjC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChD,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAA;IAC9C,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;IAC5B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;IAC5D,WAAW,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAA;IAEnD;;;OAGG;IACH,kBAAkB,CAAC,IAAI,IAAI,CAAA;IAE3B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAEnC;;;OAGG;IACH,0BAA0B,CAAC,CACzB,KAAK,EAAE,qBAAqB,EAC5B,UAAU,CAAC,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GAAI,IAAI,CAAA;IAEpC;;;OAGG;IACH,kBAAkB,CAAC,CAAE,SAAS,EAAE,MAAM,GAAI,OAAO,CAAE,IAAI,CAAE,CAAA;IAEzD;;;;;OAKG;IACH,cAAc,CAAC,IAAI,gBAAgB,CAAE,MAAM,CAAE,CAAA;CAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_model_passthrough_factory.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough_factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAKpE;;GAEG;AACH,qBAAa,6BAA6B;IAExC;;;;;;;OAOG;WACW,IAAI,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,sBAAsB,GAAG,SAAS;IA2EnE;;;;;;;;;;;;;;OAcG;WACiB,YAAY,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ifc_api_model_passthrough_factory.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_model_passthrough_factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAKpE;;GAEG;AACH,qBAAa,6BAA6B;IAExC;;;;;;;OAOG;WACW,IAAI,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,sBAAsB,GAAG,SAAS;IA2EnE;;;;;;;;;;;;;;OAcG;WACiB,YAAY,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAyB5E;;;;;;;;;;;;OAYG;WACiB,SAAS,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,GAAG,EACf,QAAQ,CAAC,EAAE,cAAc,GAAI,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;CA+C7E"}
|
|
@@ -85,7 +85,9 @@ export class IfcApiModelPassthroughFactory {
|
|
|
85
85
|
const modelFormat = ModelFormatDetector.detect(new ParsingBuffer(data));
|
|
86
86
|
if (modelFormat === ModelFormatType.IFC) {
|
|
87
87
|
try {
|
|
88
|
-
return
|
|
88
|
+
return settings?.DEFER_GEOMETRY === true ?
|
|
89
|
+
await IfcApiProxyIfc.createDeferred(modelID, data, wasmModule, settings) :
|
|
90
|
+
await IfcApiProxyIfc.createStreamed(modelID, data, wasmModule, settings);
|
|
89
91
|
}
|
|
90
92
|
catch (e) {
|
|
91
93
|
const message = e instanceof Error ? e.message : String(e);
|
|
@@ -18,6 +18,8 @@ import { IfcGeometryExtraction } from "../../ifc/ifc_geometry_extraction.js";
|
|
|
18
18
|
*/
|
|
19
19
|
interface IfcProxyLoadState {
|
|
20
20
|
conwaywasm: ConwayGeometry;
|
|
21
|
+
/** True when opened without extraction (createDeferred). */
|
|
22
|
+
deferred?: boolean;
|
|
21
23
|
allTimeStart: number;
|
|
22
24
|
stepHeader: StepHeader;
|
|
23
25
|
model: IfcStepModel;
|
|
@@ -49,6 +51,14 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
49
51
|
glmatrix.mat4
|
|
50
52
|
];
|
|
51
53
|
conwaywasm: ConwayGeometry;
|
|
54
|
+
/** The extraction behind this model (drives the deferred batch pump). */
|
|
55
|
+
private conwayGeometry_;
|
|
56
|
+
/** Was this model opened without extraction (DEFER_GEOMETRY)? */
|
|
57
|
+
private deferredMode_;
|
|
58
|
+
/** Deferred-mode product worklist (file order), lazily enumerated. */
|
|
59
|
+
private demandProducts_?;
|
|
60
|
+
/** Cursor into demandProducts_ — products before it are extracted. */
|
|
61
|
+
private demandCursor_;
|
|
52
62
|
_isCoordinated: boolean;
|
|
53
63
|
linearScalingFactor: number;
|
|
54
64
|
identity: number[];
|
|
@@ -92,6 +102,23 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
92
102
|
* @return {Promise<IfcApiProxyIfc>} The constructed proxy.
|
|
93
103
|
*/
|
|
94
104
|
static createStreamed(modelID: number, data: Uint8Array, wasmModule: any, settings?: Loadersettings): Promise<IfcApiProxyIfc>;
|
|
105
|
+
/**
|
|
106
|
+
* Deferred-geometry streamed open (conway extension; slice A of
|
|
107
|
+
* Share's demand/tiled rendering — design doc
|
|
108
|
+
* demand-tiled-rendering.md): identical streamed columnar parse, but
|
|
109
|
+
* NO geometry extraction happens at open. The proxy registers with an
|
|
110
|
+
* empty scene wired to the demand-extraction seam; callers then pump
|
|
111
|
+
* {@link extractGeometryBatch} to extract products in file-order
|
|
112
|
+
* batches, receiving each batch's meshes incrementally — the scene,
|
|
113
|
+
* properties, and spatial structure work from the first batch.
|
|
114
|
+
*
|
|
115
|
+
* @param modelID The model ID being opened.
|
|
116
|
+
* @param data The IFC data buffer.
|
|
117
|
+
* @param wasmModule The wasm module.
|
|
118
|
+
* @param settings Loader settings (ON_PROGRESS is honored for parse).
|
|
119
|
+
* @return {Promise<IfcApiProxyIfc>} The constructed proxy.
|
|
120
|
+
*/
|
|
121
|
+
static createDeferred(modelID: number, data: Uint8Array, wasmModule: any, settings?: Loadersettings): Promise<IfcApiProxyIfc>;
|
|
95
122
|
/**
|
|
96
123
|
* Log + record the header parse result on the model statistics.
|
|
97
124
|
*
|
|
@@ -343,6 +370,40 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
|
|
|
343
370
|
* @param modelID Model handle retrieved by OpenModel, model must not be closed
|
|
344
371
|
*/
|
|
345
372
|
closeModel(): void;
|
|
373
|
+
/**
|
|
374
|
+
* Deferred-mode batch pump (conway extension; Share demand/tiled
|
|
375
|
+
* rendering slice A): extract the next `batchSize` products (file
|
|
376
|
+
* order) through the per-product demand seam and emit THIS BATCH's
|
|
377
|
+
* meshes through `meshCallback` — the incremental twin of
|
|
378
|
+
* streamAllMeshes. Placed-geometry math (coordination, scaling,
|
|
379
|
+
* centering) is identical; the shared meshMap is updated so
|
|
380
|
+
* getFlatMesh keeps working. Call repeatedly until `remaining` is 0.
|
|
381
|
+
*
|
|
382
|
+
* Requires a model opened with deferred geometry
|
|
383
|
+
* (`OpenModelStreamed(data, {..., DEFER_GEOMETRY: true})`); on a
|
|
384
|
+
* fully-extracted model this is a no-op returning remaining 0.
|
|
385
|
+
*
|
|
386
|
+
* @param batchSize Max products to extract this call (min 1).
|
|
387
|
+
* @param meshCallback Receives each newly-extracted product's mesh.
|
|
388
|
+
* @return {object} `{extracted, remaining}` — products processed this
|
|
389
|
+
* call and products still pending.
|
|
390
|
+
*/
|
|
391
|
+
extractGeometryBatch(batchSize: number, meshCallback?: (mesh: FlatMesh) => void): {
|
|
392
|
+
extracted: number;
|
|
393
|
+
remaining: number;
|
|
394
|
+
};
|
|
395
|
+
/**
|
|
396
|
+
* Walk the scene and emit FlatMeshes for the given entities only —
|
|
397
|
+
* the filtered core of streamAllMeshes with identical placed-geometry
|
|
398
|
+
* math. Also fixes a latent multi-call bug: the derived coordination
|
|
399
|
+
* matrix is stored back to the model tuple, so later batches place
|
|
400
|
+
* with the SAME coordination the first batch established
|
|
401
|
+
* (streamAllMeshes never needed this — it runs once).
|
|
402
|
+
*
|
|
403
|
+
* @param entityFilter Entity localIDs whose meshes to emit.
|
|
404
|
+
* @param meshCallback Receives one FlatMesh per matched entity.
|
|
405
|
+
*/
|
|
406
|
+
private streamMeshesForEntities_;
|
|
346
407
|
/**
|
|
347
408
|
*
|
|
348
409
|
* @param modelID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,YAAY,MAAM,0BAA0B,CAAA;AACnD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACP,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAWhD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAezE;;;;;GAKG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,cAAc,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,EAAE,eAAe,CAAA;IACtB,cAAc,EAAE,qBAAqB,CAAA;IACrC,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED;;GAEG;AACH,qBAAa,cAAe,YAAW,sBAAsB;
|
|
1
|
+
{"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
|