@ifc-lite/create 1.15.0 → 1.16.0
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/ifc-creator.js +1 -1
- package/dist/ifc-creator.js.map +1 -1
- package/dist/in-store/_emit-helpers.d.ts +8 -2
- package/dist/in-store/_emit-helpers.d.ts.map +1 -1
- package/dist/in-store/_emit-helpers.js +10 -2
- package/dist/in-store/_emit-helpers.js.map +1 -1
- package/dist/in-store/anchor.d.ts +23 -2
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/anchor.js +11 -1
- package/dist/in-store/anchor.js.map +1 -1
- package/dist/in-store/auto-space-detect.d.ts.map +1 -1
- package/dist/in-store/auto-space-detect.js +150 -57
- package/dist/in-store/auto-space-detect.js.map +1 -1
- package/dist/in-store/beam.d.ts.map +1 -1
- package/dist/in-store/beam.js +3 -2
- package/dist/in-store/beam.js.map +1 -1
- package/dist/in-store/column.d.ts.map +1 -1
- package/dist/in-store/column.js +4 -3
- package/dist/in-store/column.js.map +1 -1
- package/dist/in-store/extract-walls.d.ts +28 -1
- package/dist/in-store/extract-walls.d.ts.map +1 -1
- package/dist/in-store/extract-walls.js +400 -65
- package/dist/in-store/extract-walls.js.map +1 -1
- package/dist/in-store/generate-spaces-all.d.ts +72 -0
- package/dist/in-store/generate-spaces-all.d.ts.map +1 -0
- package/dist/in-store/generate-spaces-all.js +84 -0
- package/dist/in-store/generate-spaces-all.js.map +1 -0
- package/dist/in-store/generate-spaces.d.ts +33 -1
- package/dist/in-store/generate-spaces.d.ts.map +1 -1
- package/dist/in-store/generate-spaces.js +258 -3
- package/dist/in-store/generate-spaces.js.map +1 -1
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +58 -6
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/slab.d.ts.map +1 -1
- package/dist/in-store/slab.js +3 -2
- package/dist/in-store/slab.js.map +1 -1
- package/dist/in-store/space.d.ts +28 -1
- package/dist/in-store/space.d.ts.map +1 -1
- package/dist/in-store/space.js +91 -8
- package/dist/in-store/space.js.map +1 -1
- package/dist/in-store/wall.d.ts.map +1 -1
- package/dist/in-store/wall.js +10 -7
- package/dist/in-store/wall.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -5,6 +5,12 @@ import { resolveSpatialAnchor } from './resolve-anchor.js';
|
|
|
5
5
|
import { extractWallSegmentsForStorey, } from './extract-walls.js';
|
|
6
6
|
import { detectEnclosedAreasWithStats, } from './auto-space-detect.js';
|
|
7
7
|
import { addSpaceToStore } from './space.js';
|
|
8
|
+
/**
|
|
9
|
+
* IfcSpace.ObjectType marker stamped on every derived space, so a re-run can
|
|
10
|
+
* recognise its own output and skip it instead of duplicating (idempotency),
|
|
11
|
+
* and so generated spaces are filterable downstream.
|
|
12
|
+
*/
|
|
13
|
+
export const GENERATED_SPACE_OBJECTTYPE = 'IfcLite:GeneratedSpace';
|
|
8
14
|
export function generateSpacesFromWalls(editor, store, storeyExpressId, options = {}, overlay) {
|
|
9
15
|
const height = options.height ?? 3;
|
|
10
16
|
const namePattern = options.namePattern ?? 'Space {n}';
|
|
@@ -37,8 +43,26 @@ export function generateSpacesFromWalls(editor, store, storeyExpressId, options
|
|
|
37
43
|
console.info(`[auto-spaces] storey #${storeyExpressId}: ${detected.length} region(s) from ${extraction.contributingWallIds.length}/${extraction.considered} walls — ` +
|
|
38
44
|
`${detection.stats.vertices}v / ${detection.stats.segmentsAfterSplit}e / ${detection.stats.faces}f ` +
|
|
39
45
|
`(dropped ${detection.stats.outerFacesDropped} outer + ${detection.stats.belowMinAreaDropped} small) [${unitNote}].`);
|
|
46
|
+
// Per-space dedup: drop detected rooms whose centroid lands inside an
|
|
47
|
+
// existing space footprint, so we don't duplicate already-present spaces
|
|
48
|
+
// (non-overlapping rooms on the same storey are still emitted).
|
|
49
|
+
const skipFootprints = options.skipFootprints ?? [];
|
|
50
|
+
const overlapsExisting = (outline) => {
|
|
51
|
+
if (skipFootprints.length === 0)
|
|
52
|
+
return false;
|
|
53
|
+
let cx = 0, cy = 0;
|
|
54
|
+
for (const p of outline) {
|
|
55
|
+
cx += p[0];
|
|
56
|
+
cy += p[1];
|
|
57
|
+
}
|
|
58
|
+
cx /= outline.length;
|
|
59
|
+
cy /= outline.length;
|
|
60
|
+
return skipFootprints.some((fp) => pointInPolygon(cx, cy, fp));
|
|
61
|
+
};
|
|
62
|
+
const rooms = detected.filter((r) => !overlapsExisting(r.outline));
|
|
63
|
+
const skippedExisting = detected.length - rooms.length;
|
|
40
64
|
const emitted = [];
|
|
41
|
-
if (options.dryRun ||
|
|
65
|
+
if (options.dryRun || rooms.length === 0) {
|
|
42
66
|
return {
|
|
43
67
|
wallsConsidered: extraction.considered,
|
|
44
68
|
wallsContributing: extraction.contributingWallIds.length,
|
|
@@ -46,21 +70,31 @@ export function generateSpacesFromWalls(editor, store, storeyExpressId, options
|
|
|
46
70
|
detected,
|
|
47
71
|
detectionStats: detection.stats,
|
|
48
72
|
emitted,
|
|
73
|
+
skippedExisting,
|
|
49
74
|
};
|
|
50
75
|
}
|
|
51
76
|
const anchor = resolveSpatialAnchor(store, storeyExpressId);
|
|
52
77
|
if (!anchor) {
|
|
53
78
|
throw new Error(`generateSpacesFromWalls: no resolvable spatial anchor for storey #${storeyExpressId}`);
|
|
54
79
|
}
|
|
55
|
-
|
|
80
|
+
const allOutlines = rooms.map((r) => r.outline);
|
|
81
|
+
rooms.forEach((region, i) => {
|
|
56
82
|
const name = namePattern.replace('{n}', String(i + 1));
|
|
83
|
+
const others = allOutlines.filter((_, j) => j !== i);
|
|
84
|
+
// Bake the solid at the inner (net) face — IfcSpace should stop at the room
|
|
85
|
+
// side of the walls, not run to their centreline. GrossFloorArea keeps the
|
|
86
|
+
// centreline measure; NetFloorArea falls out of the inset OuterCurve.
|
|
87
|
+
const netOutline = offsetRoomFootprint(region.outline, extraction.segments, extraction.wallThicknesses, options.boundaryMode ?? 'inner', others);
|
|
57
88
|
const result = addSpaceToStore(editor, anchor, {
|
|
58
89
|
Profile: 'polygon',
|
|
59
|
-
OuterCurve:
|
|
90
|
+
OuterCurve: netOutline,
|
|
60
91
|
Height: height,
|
|
61
92
|
Name: name,
|
|
93
|
+
ObjectType: GENERATED_SPACE_OBJECTTYPE,
|
|
62
94
|
LongName: options.longName,
|
|
63
95
|
PredefinedType: options.predefinedType,
|
|
96
|
+
boundaries: buildSpaceBoundaries(region.outline, extraction.segments, extraction.contributingWallIds, others),
|
|
97
|
+
grossFloorArea: region.area,
|
|
64
98
|
});
|
|
65
99
|
emitted.push({ region, result, name });
|
|
66
100
|
});
|
|
@@ -71,6 +105,227 @@ export function generateSpacesFromWalls(editor, store, storeyExpressId, options
|
|
|
71
105
|
detected,
|
|
72
106
|
detectionStats: detection.stats,
|
|
73
107
|
emitted,
|
|
108
|
+
skippedExisting,
|
|
74
109
|
};
|
|
75
110
|
}
|
|
111
|
+
/** Absolute polygon area (shoelace), m². */
|
|
112
|
+
function polygonArea(pts) {
|
|
113
|
+
let acc = 0;
|
|
114
|
+
for (let i = 0; i < pts.length; i++) {
|
|
115
|
+
const p = pts[i];
|
|
116
|
+
const q = pts[(i + 1) % pts.length];
|
|
117
|
+
acc += p[0] * q[1] - q[0] * p[1];
|
|
118
|
+
}
|
|
119
|
+
return Math.abs(acc) / 2;
|
|
120
|
+
}
|
|
121
|
+
/** Intersection of two lines given as point + unit direction; null if parallel. */
|
|
122
|
+
function lineIntersect(p0, d0, p1, d1) {
|
|
123
|
+
const denom = d0[0] * d1[1] - d0[1] * d1[0];
|
|
124
|
+
if (Math.abs(denom) < 1e-9)
|
|
125
|
+
return null;
|
|
126
|
+
const t = ((p1[0] - p0[0]) * d1[1] - (p1[1] - p0[1]) * d1[0]) / denom;
|
|
127
|
+
return [p0[0] + d0[0] * t, p0[1] + d0[1] * t];
|
|
128
|
+
}
|
|
129
|
+
/** Does outline edge a→b run along wall segment `seg` (parallel, on its
|
|
130
|
+
* centreline, overlapping extent)? */
|
|
131
|
+
function edgeRunsAlong(a, b, seg) {
|
|
132
|
+
const PERP_TOL = 0.2, PARALLEL_TOL = 0.03, OVERLAP_MARGIN = 0.3;
|
|
133
|
+
let ex = b[0] - a[0], ey = b[1] - a[1];
|
|
134
|
+
const el = Math.hypot(ex, ey);
|
|
135
|
+
if (el < 1e-6)
|
|
136
|
+
return false;
|
|
137
|
+
ex /= el;
|
|
138
|
+
ey /= el;
|
|
139
|
+
let sx = seg.b[0] - seg.a[0], sy = seg.b[1] - seg.a[1];
|
|
140
|
+
const sl = Math.hypot(sx, sy);
|
|
141
|
+
if (sl < 1e-6)
|
|
142
|
+
return false;
|
|
143
|
+
sx /= sl;
|
|
144
|
+
sy /= sl;
|
|
145
|
+
if (Math.abs(ex * sy - ey * sx) > PARALLEL_TOL)
|
|
146
|
+
return false;
|
|
147
|
+
const mx = (a[0] + b[0]) / 2, my = (a[1] + b[1]) / 2;
|
|
148
|
+
const t = (mx - seg.a[0]) * sx + (my - seg.a[1]) * sy;
|
|
149
|
+
const px = seg.a[0] + sx * t, py = seg.a[1] + sy * t;
|
|
150
|
+
if (Math.hypot(mx - px, my - py) > PERP_TOL)
|
|
151
|
+
return false;
|
|
152
|
+
return t >= -OVERLAP_MARGIN && t <= sl + OVERLAP_MARGIN;
|
|
153
|
+
}
|
|
154
|
+
/** Drop vertices whose two adjacent edges are collinear (e.g. a T-junction
|
|
155
|
+
* point left on a straight wall run). Such a vertex makes its two adjacent
|
|
156
|
+
* offset lines parallel, so they don't intersect — the offset then falls back
|
|
157
|
+
* to the un-offset centreline point and the corner skews. */
|
|
158
|
+
function simplifyCollinear(pts) {
|
|
159
|
+
const n = pts.length;
|
|
160
|
+
if (n < 4)
|
|
161
|
+
return pts;
|
|
162
|
+
const out = [];
|
|
163
|
+
for (let i = 0; i < n; i++) {
|
|
164
|
+
const p = pts[(i - 1 + n) % n], c = pts[i], q = pts[(i + 1) % n];
|
|
165
|
+
let ax = c[0] - p[0], ay = c[1] - p[1];
|
|
166
|
+
let bx = q[0] - c[0], by = q[1] - c[1];
|
|
167
|
+
const al = Math.hypot(ax, ay) || 1, bl = Math.hypot(bx, by) || 1;
|
|
168
|
+
ax /= al;
|
|
169
|
+
ay /= al;
|
|
170
|
+
bx /= bl;
|
|
171
|
+
by /= bl;
|
|
172
|
+
if (Math.abs(ax * by - ay * bx) > 1e-4)
|
|
173
|
+
out.push(c); // keep real corners only
|
|
174
|
+
}
|
|
175
|
+
return out.length >= 3 ? out : pts;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Offset a (centreline) room outline to the chosen wall boundary: `center` =
|
|
179
|
+
* the centreline as-is; `inner` = each edge shifted toward the room by half the
|
|
180
|
+
* wall thickness (net / inner face); `outer` = shifted away by half (gross /
|
|
181
|
+
* outer face). Re-corners by intersecting adjacent offset edges. `segments[k]`
|
|
182
|
+
* has thickness `wallThicknesses[k]`. `otherRooms` (other rooms' centreline
|
|
183
|
+
* outlines) lets `outer` keep shared/internal edges on the centreline so
|
|
184
|
+
* neighbouring rooms meet there instead of overlapping inside the wall.
|
|
185
|
+
* Returns the original outline if the offset degenerates (e.g. an inner inset
|
|
186
|
+
* of a room thinner than its walls). Exact for orthogonal rooms.
|
|
187
|
+
*/
|
|
188
|
+
export function offsetRoomFootprint(outline, segments, wallThicknesses, mode = 'inner', otherRooms = []) {
|
|
189
|
+
if (mode === 'center')
|
|
190
|
+
return outline;
|
|
191
|
+
const simple = simplifyCollinear(outline);
|
|
192
|
+
const n = simple.length;
|
|
193
|
+
if (n < 3)
|
|
194
|
+
return outline;
|
|
195
|
+
const sign = mode === 'inner' ? 1 : -1; // inner → inward, outer → outward
|
|
196
|
+
const lines = [];
|
|
197
|
+
for (let i = 0; i < n; i++) {
|
|
198
|
+
const a = simple[i];
|
|
199
|
+
const b = simple[(i + 1) % n];
|
|
200
|
+
let dx = b[0] - a[0];
|
|
201
|
+
let dy = b[1] - a[1];
|
|
202
|
+
const l = Math.hypot(dx, dy);
|
|
203
|
+
if (l < 1e-6)
|
|
204
|
+
return outline;
|
|
205
|
+
dx /= l;
|
|
206
|
+
dy /= l;
|
|
207
|
+
let half = 0; // half the thickest wall this edge runs along
|
|
208
|
+
for (let k = 0; k < segments.length; k++) {
|
|
209
|
+
const t = wallThicknesses[k];
|
|
210
|
+
if (t !== undefined && t / 2 > half && edgeRunsAlong(a, b, segments[k]))
|
|
211
|
+
half = t / 2;
|
|
212
|
+
}
|
|
213
|
+
let off = sign * half;
|
|
214
|
+
// A shared (internal) edge has another room on its OUTWARD side. Pushing it
|
|
215
|
+
// outward (outer mode) would overlap that room, so pin shared edges to the
|
|
216
|
+
// centreline; only edges facing outside the building actually push out.
|
|
217
|
+
if (mode === 'outer' && half > 0 && otherRooms.length) {
|
|
218
|
+
const mx = (a[0] + b[0]) / 2 + dy * 0.1; // outward = right normal (dy, -dx)
|
|
219
|
+
const my = (a[1] + b[1]) / 2 - dx * 0.1;
|
|
220
|
+
if (otherRooms.some((poly) => pointInPolygon(mx, my, poly)))
|
|
221
|
+
off = 0;
|
|
222
|
+
}
|
|
223
|
+
// Inward normal of a CCW outline is to the left of a→b: (-dy, dx).
|
|
224
|
+
lines.push({ p: [a[0] - dy * off, a[1] + dx * off], d: [dx, dy] });
|
|
225
|
+
}
|
|
226
|
+
const verts = [];
|
|
227
|
+
for (let i = 0; i < n; i++) {
|
|
228
|
+
const prev = lines[(i - 1 + n) % n];
|
|
229
|
+
const cur = lines[i];
|
|
230
|
+
verts.push(lineIntersect(prev.p, prev.d, cur.p, cur.d) ?? simple[i]);
|
|
231
|
+
}
|
|
232
|
+
if (!verts.every((v) => Number.isFinite(v[0]) && Number.isFinite(v[1])))
|
|
233
|
+
return outline;
|
|
234
|
+
const gross = polygonArea(simple);
|
|
235
|
+
const got = polygonArea(verts);
|
|
236
|
+
if (got <= 1e-6)
|
|
237
|
+
return outline;
|
|
238
|
+
if (mode === 'inner' && got > gross + 1e-6)
|
|
239
|
+
return outline; // inset inverted
|
|
240
|
+
return verts;
|
|
241
|
+
}
|
|
242
|
+
/** Ray-cast point-in-polygon test. */
|
|
243
|
+
function pointInPolygon(x, y, poly) {
|
|
244
|
+
let inside = false;
|
|
245
|
+
for (let i = 0, j = poly.length - 1; i < poly.length; j = i++) {
|
|
246
|
+
const xi = poly[i][0], yi = poly[i][1];
|
|
247
|
+
const xj = poly[j][0], yj = poly[j][1];
|
|
248
|
+
if ((yi > y) !== (yj > y) && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi)
|
|
249
|
+
inside = !inside;
|
|
250
|
+
}
|
|
251
|
+
return inside;
|
|
252
|
+
}
|
|
253
|
+
/** Wall ids whose centreline an outline edge runs along (parallel, on the
|
|
254
|
+
* line, overlapping extent). `segments[k]` was extracted from `wallIds[k]`. */
|
|
255
|
+
function matchEdgeWalls(a, b, segments, wallIds) {
|
|
256
|
+
const PERP_TOL = 0.2; // m — edge sits on the wall centreline
|
|
257
|
+
const PARALLEL_TOL = 0.03;
|
|
258
|
+
const OVERLAP_MARGIN = 0.3; // m
|
|
259
|
+
const out = [];
|
|
260
|
+
const mx = (a[0] + b[0]) / 2;
|
|
261
|
+
const my = (a[1] + b[1]) / 2;
|
|
262
|
+
let ex = b[0] - a[0];
|
|
263
|
+
let ey = b[1] - a[1];
|
|
264
|
+
const el = Math.hypot(ex, ey);
|
|
265
|
+
if (el < 1e-6)
|
|
266
|
+
return out;
|
|
267
|
+
ex /= el;
|
|
268
|
+
ey /= el;
|
|
269
|
+
for (let k = 0; k < segments.length; k++) {
|
|
270
|
+
const sa = segments[k].a;
|
|
271
|
+
const sb = segments[k].b;
|
|
272
|
+
let sx = sb[0] - sa[0];
|
|
273
|
+
let sy = sb[1] - sa[1];
|
|
274
|
+
const sl = Math.hypot(sx, sy);
|
|
275
|
+
if (sl < 1e-6)
|
|
276
|
+
continue;
|
|
277
|
+
sx /= sl;
|
|
278
|
+
sy /= sl;
|
|
279
|
+
if (Math.abs(ex * sy - ey * sx) > PARALLEL_TOL)
|
|
280
|
+
continue; // not parallel
|
|
281
|
+
const t = (mx - sa[0]) * sx + (my - sa[1]) * sy; // projection onto wall (m)
|
|
282
|
+
const px = sa[0] + sx * t;
|
|
283
|
+
const py = sa[1] + sy * t;
|
|
284
|
+
if (Math.hypot(mx - px, my - py) > PERP_TOL)
|
|
285
|
+
continue; // edge off the wall line
|
|
286
|
+
if (t < -OVERLAP_MARGIN || t > sl + OVERLAP_MARGIN)
|
|
287
|
+
continue; // no extent overlap
|
|
288
|
+
out.push(wallIds[k]);
|
|
289
|
+
}
|
|
290
|
+
return out;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Build the IfcRelSpaceBoundary inputs for one room: map each outline edge to
|
|
294
|
+
* the wall it runs along, classifying the boundary INTERNAL when another room
|
|
295
|
+
* lies on the far side of that edge (a partition) or EXTERNAL when it's the
|
|
296
|
+
* building perimeter. "Far side" is the edge midpoint nudged along its outward
|
|
297
|
+
* normal — robust to neighbours that split the shared run differently than this
|
|
298
|
+
* room does (where exact edge-matching would miss). A wall stays INTERNAL if
|
|
299
|
+
* any of its edges has a room on the far side. One boundary per distinct wall.
|
|
300
|
+
*/
|
|
301
|
+
function buildSpaceBoundaries(outline, segments, wallIds, otherRooms) {
|
|
302
|
+
const NUDGE = 0.1; // m past the shared centreline into the neighbour
|
|
303
|
+
const byWall = new Map();
|
|
304
|
+
const n = outline.length;
|
|
305
|
+
for (let i = 0; i < n; i++) {
|
|
306
|
+
const a = outline[i];
|
|
307
|
+
const b = outline[(i + 1) % n];
|
|
308
|
+
let dx = b[0] - a[0];
|
|
309
|
+
let dy = b[1] - a[1];
|
|
310
|
+
const dl = Math.hypot(dx, dy);
|
|
311
|
+
if (dl < 1e-6)
|
|
312
|
+
continue;
|
|
313
|
+
dx /= dl;
|
|
314
|
+
dy /= dl;
|
|
315
|
+
// Outward normal of a CCW outline is to the right of a→b.
|
|
316
|
+
const mx = (a[0] + b[0]) / 2 + dy * NUDGE;
|
|
317
|
+
const my = (a[1] + b[1]) / 2 - dx * NUDGE;
|
|
318
|
+
const cls = otherRooms.some((poly) => pointInPolygon(mx, my, poly)) ? 'INTERNAL' : 'EXTERNAL';
|
|
319
|
+
for (const wallId of matchEdgeWalls(a, b, segments, wallIds)) {
|
|
320
|
+
if (byWall.get(wallId) === 'INTERNAL')
|
|
321
|
+
continue; // once internal, stays internal
|
|
322
|
+
byWall.set(wallId, cls);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return [...byWall].map(([elementId, internalOrExternal]) => ({
|
|
326
|
+
elementId,
|
|
327
|
+
internalOrExternal,
|
|
328
|
+
physicalOrVirtual: 'PHYSICAL',
|
|
329
|
+
}));
|
|
330
|
+
}
|
|
76
331
|
//# sourceMappingURL=generate-spaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-spaces.js","sourceRoot":"","sources":["../../src/in-store/generate-spaces.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-spaces.js","sourceRoot":"","sources":["../../src/in-store/generate-spaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve-anchor.d.ts","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAA8D,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAEtE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,GAAG,aAAa,CAwChG"}
|
|
@@ -9,22 +9,42 @@
|
|
|
9
9
|
* 3D IfcGeometricRepresentationContext), and the target storey's
|
|
10
10
|
* IfcLocalPlacement.
|
|
11
11
|
*/
|
|
12
|
-
import { EntityExtractor, getAttributeNames } from '@ifc-lite/parser';
|
|
12
|
+
import { EntityExtractor, extractLengthUnitScale, getAttributeNames } from '@ifc-lite/parser';
|
|
13
13
|
export function resolveSpatialAnchor(store, storeyExpressId) {
|
|
14
|
+
// OwnerHistory is OPTIONAL from IFC4 onward — minimal files (including
|
|
15
|
+
// ifc-lite's own exports) legitimately omit it. Builders emit `$` then.
|
|
14
16
|
const ownerHistoryId = findOwnerHistoryId(store);
|
|
15
|
-
if (ownerHistoryId === null) {
|
|
16
|
-
throw new Error('resolveSpatialAnchor: no IfcOwnerHistory found in store');
|
|
17
|
-
}
|
|
18
17
|
const bodyContextId = findBodyContextId(store);
|
|
19
18
|
if (bodyContextId === null) {
|
|
20
19
|
throw new Error('resolveSpatialAnchor: no IfcGeometricRepresentationContext (or Body subcontext) found in store');
|
|
21
20
|
}
|
|
21
|
+
const axisContextId = findAxisContextId(store);
|
|
22
|
+
if (axisContextId === null) {
|
|
23
|
+
throw new Error('resolveSpatialAnchor: no IfcGeometricRepresentationContext (or Axis subcontext) found in store');
|
|
24
|
+
}
|
|
22
25
|
const storeyPlacementId = findStoreyPlacementId(store, storeyExpressId);
|
|
23
26
|
if (storeyPlacementId === null) {
|
|
24
27
|
throw new Error(`resolveSpatialAnchor: storey #${storeyExpressId} has no resolvable IfcLocalPlacement`);
|
|
25
28
|
}
|
|
26
29
|
const schema = (store.schemaVersion ?? 'IFC4');
|
|
27
|
-
|
|
30
|
+
// Builder params are metres; the file may not be (e.g. millimetre Revit
|
|
31
|
+
// exports). Resolve the length-unit scale here so builders can emit
|
|
32
|
+
// coordinates in the file's native unit — mirrors the read-side
|
|
33
|
+
// conversion in extract-walls.ts.
|
|
34
|
+
let lengthUnitScale = 1.0;
|
|
35
|
+
try {
|
|
36
|
+
if (store.source) {
|
|
37
|
+
const s = extractLengthUnitScale(store.source, store.entityIndex);
|
|
38
|
+
if (Number.isFinite(s) && s > 0)
|
|
39
|
+
lengthUnitScale = s;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
// Keep the metre fallback, but don't hide the failure — a wrong scale
|
|
44
|
+
// emits silently mis-sized geometry.
|
|
45
|
+
console.warn('resolveSpatialAnchor: failed to extract length unit scale; defaulting to metres', error);
|
|
46
|
+
}
|
|
47
|
+
return { ownerHistoryId, bodyContextId, axisContextId, storeyId: storeyExpressId, storeyPlacementId, schema, lengthUnitScale };
|
|
28
48
|
}
|
|
29
49
|
function findOwnerHistoryId(store) {
|
|
30
50
|
const ids = store.entityIndex.byType.get('IFCOWNERHISTORY');
|
|
@@ -44,7 +64,7 @@ function findBodyContextId(store) {
|
|
|
44
64
|
if (!ref)
|
|
45
65
|
continue;
|
|
46
66
|
const entity = extractor.extractEntity(ref);
|
|
47
|
-
const identifier = entity?.attributes?.[
|
|
67
|
+
const identifier = entity?.attributes?.[1];
|
|
48
68
|
if (typeof identifier === 'string' && identifier.toLowerCase() === 'body') {
|
|
49
69
|
return id;
|
|
50
70
|
}
|
|
@@ -62,6 +82,38 @@ function findBodyContextId(store) {
|
|
|
62
82
|
}
|
|
63
83
|
return ctxIds[0] ?? null;
|
|
64
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Prefer an IfcGeometricRepresentationSubContext with ContextIdentifier='Axis';
|
|
87
|
+
* otherwise fall back to the first 3D IfcGeometricRepresentationContext.
|
|
88
|
+
*/
|
|
89
|
+
function findAxisContextId(store) {
|
|
90
|
+
if (!store.source)
|
|
91
|
+
return null;
|
|
92
|
+
const extractor = new EntityExtractor(store.source);
|
|
93
|
+
const subIds = store.entityIndex.byType.get('IFCGEOMETRICREPRESENTATIONSUBCONTEXT') ?? [];
|
|
94
|
+
for (const id of subIds) {
|
|
95
|
+
const ref = store.entityIndex.byId.get(id);
|
|
96
|
+
if (!ref)
|
|
97
|
+
continue;
|
|
98
|
+
const entity = extractor.extractEntity(ref);
|
|
99
|
+
const identifier = entity?.attributes?.[1];
|
|
100
|
+
if (typeof identifier === 'string' && identifier.toLowerCase() === 'axis') {
|
|
101
|
+
return id;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const ctxIds = store.entityIndex.byType.get('IFCGEOMETRICREPRESENTATIONCONTEXT') ?? [];
|
|
105
|
+
for (const id of ctxIds) {
|
|
106
|
+
const ref = store.entityIndex.byId.get(id);
|
|
107
|
+
if (!ref)
|
|
108
|
+
continue;
|
|
109
|
+
const entity = extractor.extractEntity(ref);
|
|
110
|
+
const dimension = entity?.attributes?.[2];
|
|
111
|
+
if (typeof dimension === 'number' && dimension === 3) {
|
|
112
|
+
return id;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return ctxIds[0] ?? null;
|
|
116
|
+
}
|
|
65
117
|
/**
|
|
66
118
|
* Resolve the target storey's `ObjectPlacement` (an IfcLocalPlacement).
|
|
67
119
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-anchor.js","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolve-anchor.js","sourceRoot":"","sources":["../../src/in-store/resolve-anchor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slab.d.ts","sourceRoot":"","sources":["../../src/in-store/slab.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"slab.d.ts","sourceRoot":"","sources":["../../src/in-store/slab.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;AAExE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,OAAO,EAAE,SAAS,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AA8CD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,iBAAiB,GACxB,eAAe,CAuFjB"}
|
package/dist/in-store/slab.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
* I/O, no parser access.
|
|
22
22
|
*/
|
|
23
23
|
import { generateIfcGuid } from '@ifc-lite/encoding';
|
|
24
|
+
import { ownerHistoryRef } from './_emit-helpers.js';
|
|
24
25
|
const POINT_EPSILON = 1e-6;
|
|
25
26
|
function isPolygonParams(p) {
|
|
26
27
|
return p.Profile === 'polygon';
|
|
@@ -109,7 +110,7 @@ export function addSlabToStore(editor, anchor, params) {
|
|
|
109
110
|
// `IfcSlab.PredefinedType` only exists from IFC4 onward.
|
|
110
111
|
const slabAttrs = [
|
|
111
112
|
generateIfcGuid(),
|
|
112
|
-
|
|
113
|
+
ownerHistoryRef(ownerHistoryId),
|
|
113
114
|
params.Name ?? 'Slab',
|
|
114
115
|
params.Description ?? null,
|
|
115
116
|
params.ObjectType ?? null,
|
|
@@ -123,7 +124,7 @@ export function addSlabToStore(editor, anchor, params) {
|
|
|
123
124
|
const slabId = editor.addEntity('IfcSlab', slabAttrs).expressId;
|
|
124
125
|
const relContainedId = editor.addEntity('IfcRelContainedInSpatialStructure', [
|
|
125
126
|
generateIfcGuid(),
|
|
126
|
-
|
|
127
|
+
ownerHistoryRef(ownerHistoryId),
|
|
127
128
|
null,
|
|
128
129
|
null,
|
|
129
130
|
[`#${slabId}`],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slab.js","sourceRoot":"","sources":["../../src/in-store/slab.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"slab.js","sourceRoot":"","sources":["../../src/in-store/slab.ts"],"names":[],"mappings":"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"}
|
package/dist/in-store/space.d.ts
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import type { StoreEditor } from '@ifc-lite/mutations';
|
|
2
|
-
import type
|
|
2
|
+
import { type SpatialAnchor } from './anchor.js';
|
|
3
3
|
export type SpaceInStoreParams = SpaceRectangleParams | SpacePolygonParams;
|
|
4
|
+
/** A bounding element for a space → one IfcRelSpaceBoundary. */
|
|
5
|
+
export interface SpaceBoundaryInput {
|
|
6
|
+
/** Express id of the bounding building element (e.g. a wall). */
|
|
7
|
+
elementId: number;
|
|
8
|
+
/** INTERNAL (other side is another space) / EXTERNAL (building exterior) /
|
|
9
|
+
* NOTDEFINED. Defaults to NOTDEFINED. */
|
|
10
|
+
internalOrExternal?: 'INTERNAL' | 'EXTERNAL' | 'NOTDEFINED';
|
|
11
|
+
/** PHYSICAL (a real element) / VIRTUAL. Defaults to PHYSICAL. */
|
|
12
|
+
physicalOrVirtual?: 'PHYSICAL' | 'VIRTUAL';
|
|
13
|
+
}
|
|
4
14
|
export interface SpaceRectangleParams {
|
|
5
15
|
Position: [number, number, number];
|
|
6
16
|
Width: number;
|
|
@@ -17,6 +27,13 @@ export interface SpaceRectangleParams {
|
|
|
17
27
|
* IfcInternalOrExternalEnum. Defaults to INTERNAL.
|
|
18
28
|
*/
|
|
19
29
|
PredefinedType?: string;
|
|
30
|
+
/** Bounding elements → one IfcRelSpaceBoundary each. */
|
|
31
|
+
boundaries?: SpaceBoundaryInput[];
|
|
32
|
+
/** Net (inner-face) floor area in m²; defaults to the OuterCurve area. */
|
|
33
|
+
netFloorArea?: number;
|
|
34
|
+
/** Gross (centreline) floor area in m² for the GrossFloorArea quantity +
|
|
35
|
+
* GrossVolume; defaults to the OuterCurve area when omitted. */
|
|
36
|
+
grossFloorArea?: number;
|
|
20
37
|
}
|
|
21
38
|
export interface SpacePolygonParams {
|
|
22
39
|
Profile: 'polygon';
|
|
@@ -29,6 +46,14 @@ export interface SpacePolygonParams {
|
|
|
29
46
|
ObjectType?: string;
|
|
30
47
|
/** See SpaceRectangleParams.PredefinedType. */
|
|
31
48
|
PredefinedType?: string;
|
|
49
|
+
/** Bounding elements → one IfcRelSpaceBoundary each. */
|
|
50
|
+
boundaries?: SpaceBoundaryInput[];
|
|
51
|
+
/** Net (inner-face) floor area in m² for Qto_SpaceBaseQuantities; defaults
|
|
52
|
+
* to the gross/centreline area when omitted. */
|
|
53
|
+
netFloorArea?: number;
|
|
54
|
+
/** Gross (centreline) floor area in m² for GrossFloorArea + GrossVolume;
|
|
55
|
+
* defaults to the OuterCurve area when omitted. */
|
|
56
|
+
grossFloorArea?: number;
|
|
32
57
|
}
|
|
33
58
|
export interface SpaceBuildResult {
|
|
34
59
|
spaceId: number;
|
|
@@ -38,6 +63,8 @@ export interface SpaceBuildResult {
|
|
|
38
63
|
shapeRepId: number;
|
|
39
64
|
productShapeId: number;
|
|
40
65
|
relAggregatesId: number;
|
|
66
|
+
/** One IfcRelSpaceBoundary per bounding element (empty if none supplied). */
|
|
67
|
+
spaceBoundaryIds: number[];
|
|
41
68
|
}
|
|
42
69
|
export declare function addSpaceToStore(editor: StoreEditor, anchor: SpatialAnchor, params: SpaceInStoreParams): SpaceBuildResult;
|
|
43
70
|
//# sourceMappingURL=space.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../../src/in-store/space.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjE,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE3E,gEAAgE;AAChE,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB;8CAC0C;IAC1C,kBAAkB,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5D,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CAC5C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;qEACiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC;qDACiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;wDACoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AA4BD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,kBAAkB,GACzB,gBAAgB,CA0HlB"}
|