@ifc-lite/clash 1.1.0 → 1.1.2
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/dist/adapters/step.d.ts +4 -2
- package/dist/adapters/step.d.ts.map +1 -1
- package/dist/adapters/step.js +15 -4
- package/dist/adapters/step.js.map +1 -1
- package/package.json +11 -10
package/dist/adapters/step.d.ts
CHANGED
|
@@ -32,8 +32,10 @@ export interface StepAdapterResult {
|
|
|
32
32
|
}
|
|
33
33
|
export declare function elementsFromStep(options: StepAdapterOptions): StepAdapterResult;
|
|
34
34
|
/**
|
|
35
|
-
* Pair-exclusions from IFC relationships
|
|
36
|
-
* (
|
|
35
|
+
* Pair-exclusions from IFC relationships. Only relationship getters
|
|
36
|
+
* (`voids`/`filledBy`/`decomposedBy`/`decomposes`) are used here; these read
|
|
37
|
+
* the relationship graph and never call `extractEntityAttributesOnDemand`, so
|
|
38
|
+
* the per-element loop stays off the AGENTS.md hot-loop anti-pattern:
|
|
37
39
|
* - host vs the filler of its opening (wall vs door/window)
|
|
38
40
|
* - element vs its own (meshed) opening
|
|
39
41
|
* - members of the same `IfcRelAggregates` assembly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/adapters/step.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEpE,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/adapters/step.ts"],"names":[],"mappings":"AAIA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEpE,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,IAAI,CAAC;IACtB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA+C/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,GACrC,YAAY,CAiCd"}
|
package/dist/adapters/step.js
CHANGED
|
@@ -13,15 +13,24 @@ export function elementsFromStep(options) {
|
|
|
13
13
|
continue;
|
|
14
14
|
const expressId = mesh.expressId;
|
|
15
15
|
const node = new EntityNode(store, expressId);
|
|
16
|
+
// Read stored (table-backed) values directly. `node.globalId` / `node.name`
|
|
17
|
+
// fall back to `extractEntityAttributesOnDemand` when the table value is
|
|
18
|
+
// empty (common: Name is optional, globalId is empty for fallback-only /
|
|
19
|
+
// malformed roots) — and with a fresh node per mesh that fallback would fire
|
|
20
|
+
// once per element inside this loop (AGENTS.md hot-loop ban). The table
|
|
21
|
+
// getters never trigger on-demand extraction. `node.type` (getTypeName) and
|
|
22
|
+
// `node.storey()` (relationship-only) are table-backed and stay.
|
|
23
|
+
const storedGlobalId = store.entities.getGlobalId(expressId);
|
|
24
|
+
const storedName = store.entities.getName(expressId);
|
|
16
25
|
// Fall back to a model-scoped synthetic key rather than dropping geometry:
|
|
17
26
|
// malformed IFC roots / fallback-only elements still participate in clashes.
|
|
18
|
-
const key =
|
|
27
|
+
const key = storedGlobalId || `expressid:${expressId}`;
|
|
19
28
|
const element = {
|
|
20
29
|
key,
|
|
21
30
|
ref: federation ? federation.toGlobalId(modelId, expressId) : expressId,
|
|
22
31
|
model: modelId,
|
|
23
32
|
tag: node.type || mesh.ifcType || 'IfcProduct',
|
|
24
|
-
name:
|
|
33
|
+
name: storedName || undefined,
|
|
25
34
|
storey: node.storey()?.name || undefined,
|
|
26
35
|
bounds: fromPositions(mesh.positions, worldTransform),
|
|
27
36
|
positions: mesh.positions,
|
|
@@ -37,8 +46,10 @@ export function elementsFromStep(options) {
|
|
|
37
46
|
return { elements, exclusions };
|
|
38
47
|
}
|
|
39
48
|
/**
|
|
40
|
-
* Pair-exclusions from IFC relationships
|
|
41
|
-
* (
|
|
49
|
+
* Pair-exclusions from IFC relationships. Only relationship getters
|
|
50
|
+
* (`voids`/`filledBy`/`decomposedBy`/`decomposes`) are used here; these read
|
|
51
|
+
* the relationship graph and never call `extractEntityAttributesOnDemand`, so
|
|
52
|
+
* the per-element loop stays off the AGENTS.md hot-loop anti-pattern:
|
|
42
53
|
* - host vs the filler of its opening (wall vs door/window)
|
|
43
54
|
* - element vs its own (meshed) opening
|
|
44
55
|
* - members of the same `IfcRelAggregates` assembly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/adapters/step.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAa/D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA0BhD,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE/F,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEpD,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE9C,
|
|
1
|
+
{"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/adapters/step.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ifc-lite/clash",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Clash detection for IFC-Lite — representation-agnostic core engine + source adapters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
10
11
|
"import": "./dist/index.js",
|
|
11
|
-
"
|
|
12
|
+
"default": "./dist/index.js"
|
|
12
13
|
},
|
|
13
14
|
"./step": {
|
|
14
15
|
"import": "./dist/adapters/step.js",
|
|
@@ -28,17 +29,17 @@
|
|
|
28
29
|
}
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@ifc-lite/spatial": "^1.14.
|
|
32
|
-
"@ifc-lite/geometry": "^2.1
|
|
33
|
-
"@ifc-lite/parser": "^3.
|
|
34
|
-
"@ifc-lite/
|
|
35
|
-
"@ifc-lite/
|
|
36
|
-
"@ifc-lite/
|
|
37
|
-
"@ifc-lite/wasm": "^2.1
|
|
32
|
+
"@ifc-lite/spatial": "^1.14.8",
|
|
33
|
+
"@ifc-lite/geometry": "^2.4.1",
|
|
34
|
+
"@ifc-lite/parser": "^3.1.1",
|
|
35
|
+
"@ifc-lite/query": "^1.14.10",
|
|
36
|
+
"@ifc-lite/bcf": "^1.15.6",
|
|
37
|
+
"@ifc-lite/ifcx": "^2.1.4",
|
|
38
|
+
"@ifc-lite/wasm": "^2.5.1"
|
|
38
39
|
},
|
|
39
40
|
"devDependencies": {
|
|
40
41
|
"typescript": "^6.0.3",
|
|
41
|
-
"vitest": "^1.
|
|
42
|
+
"vitest": "^4.1.0"
|
|
42
43
|
},
|
|
43
44
|
"license": "MPL-2.0",
|
|
44
45
|
"author": "Louis True",
|