@ifc-lite/drawing-2d 1.16.2 → 1.18.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.
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Projection bands — classify geometry that lies *beyond* the section cut
3
+ * into the two architectural floor-plan reference bands (issue #979):
4
+ *
5
+ * - **VISIBLE** (toward the floor, the side a down-looking plan keeps):
6
+ * drawn as a **thin solid** projected edge.
7
+ * - **OVERHEAD** (above the cut — beams, soffits, roofs, eaves):
8
+ * drawn **dashed** (mapped to `visibility: 'hidden'` downstream so the
9
+ * existing hidden-line styling applies with no renderer change).
10
+ *
11
+ * # Sign convention (locked — matches the rest of the pipeline)
12
+ * Given a world coordinate `coord` along the cut axis and the plane
13
+ * `position`, the signed, *flip-adjusted* depth is
14
+ *
15
+ * `d = flipped ? -(coord - position) : (coord - position)`
16
+ *
17
+ * which is exactly `depthAlong` (profile-projector) / the
18
+ * `HiddenLineClassifier` depth-buffer convention, and the mirror of the
19
+ * annotation-cull half-space test in `useDrawingGeneration`.
20
+ * With `d`:
21
+ *
22
+ * - `d < 0` ⇒ BELOW the cut (toward the floor, nearer the viewer) ⇒ VISIBLE
23
+ * - `d > 0` ⇒ ABOVE the cut (overhead, farther from the viewer) ⇒ OVERHEAD
24
+ *
25
+ * `flipped` only mirrors which half-space is "below"; it never re-derives a
26
+ * flipped plane normal (the cutter keeps the unflipped normal — see
27
+ * `section-cutter.ts`), so band math applies the flip sign itself.
28
+ *
29
+ * All depths are in the same metric, RTC-shifted world space the section
30
+ * cutter and `MeshData.positions` use (WASM applies `unit_scale` upstream).
31
+ */
32
+ import type { SectionPlaneConfig, Vec3, DrawingLine, MeshOutline2D } from './types.js';
33
+ import type { Point2D } from './types.js';
34
+ /** Classification of geometry relative to the two projection bands. */
35
+ export type ProjectionBand = 'visible' | 'overhead' | 'spanning' | 'cull';
36
+ /** Depth window beyond the cut, per side, in world units. Both > 0. */
37
+ export interface ProjectionBandDepths {
38
+ /** How far below the cut (toward the floor) to project as VISIBLE/solid. */
39
+ below: number;
40
+ /** How far above the cut (overhead) to project as OVERHEAD/dashed. */
41
+ above: number;
42
+ }
43
+ /**
44
+ * Flip-adjusted depth of a raw coordinate along the cut axis — the scalar
45
+ * mirror of {@link signedDepth} for callers that only have an axis coordinate
46
+ * (e.g. an element's `axisMin`/`axisMax`) rather than a full 3D point. Keeps
47
+ * the `flipped ? -raw : raw` sign convention in a single place.
48
+ */
49
+ export declare function signedAxisDepth(coord: number, position: number, flipped: boolean): number;
50
+ /**
51
+ * Flip-adjusted signed depth of a world point from the cut plane.
52
+ * `d < 0` ⇒ below (visible side); `d > 0` ⇒ above (overhead side).
53
+ */
54
+ export declare function signedDepth(point: Vec3, plane: SectionPlaneConfig): number;
55
+ /**
56
+ * The camera viewing direction (unit, pointing away from the viewer into the
57
+ * scene) for silhouette detection. For a cardinal axis it is the −axis (or
58
+ * +axis when flipped); for a custom plane it follows the plane normal.
59
+ */
60
+ export declare function getViewDirectionForPlane(plane: SectionPlaneConfig): Vec3;
61
+ /**
62
+ * Project a world point into the drawing's 2D space using the SAME basis the
63
+ * section cutter uses, so projected construction lines coincide exactly with
64
+ * the cut polygons. Cardinal axes → `projectTo2D`; custom plane → the
65
+ * tangent/bitangent basis (`projectTo2DBasis`).
66
+ */
67
+ export declare function projectPointForPlane(point: Vec3, plane: SectionPlaneConfig): Point2D;
68
+ /**
69
+ * Classify a flip-adjusted depth *range* `[dMin, dMax]` into a projection band.
70
+ *
71
+ * - VISIBLE band occupies `[-below, 0)` (below the cut, toward the floor).
72
+ * - OVERHEAD band occupies `(0, +above]` (above the cut, overhead).
73
+ *
74
+ * An element overlapping both (e.g. a wall cut at mid-height) is `'spanning'`
75
+ * and drawn solid — its footprint is real near-floor geometry; the cut line
76
+ * itself is emitted separately by the section cutter.
77
+ */
78
+ export declare function classifyDepthRange(dMin: number, dMax: number, depths: ProjectionBandDepths): ProjectionBand;
79
+ /**
80
+ * Classify a single world-space line segment by its endpoints' depths.
81
+ * Used by the silhouette/edge fallback where each edge is classified on its
82
+ * own (no extrusion range).
83
+ */
84
+ export declare function classifySegmentBand(a: Vec3, b: Vec3, plane: SectionPlaneConfig, depths: ProjectionBandDepths): ProjectionBand;
85
+ /**
86
+ * Map a band to the `DrawingLine.visibility` the renderer keys off:
87
+ * overhead → `'hidden'` (dashed), everything kept → `'visible'` (solid).
88
+ * Returns `null` for `'cull'` so the caller drops the line.
89
+ */
90
+ export declare function bandVisibility(band: ProjectionBand): 'visible' | 'hidden' | null;
91
+ /**
92
+ * Convert a winding-robust mesh footprint outline (from the Rust
93
+ * `meshOutline2d` binding) into band-classified construction-projection lines
94
+ * (issue #979). The whole element is classified by its axis extent
95
+ * (`axisMin`/`axisMax`) — below the cut → solid, above → dashed. Contours are
96
+ * already in drawing 2D space, so they're emitted as closed loops verbatim.
97
+ *
98
+ * This is the winding-robust alternative to the normal-based silhouette path:
99
+ * it draws the true projected footprint even when the source mesh is wound
100
+ * inconsistently (common for ifc-lite roofs/stairs/site).
101
+ */
102
+ export declare function outlineToProjectionLines(outline: MeshOutline2D, meta: {
103
+ entityId: number;
104
+ ifcType: string;
105
+ modelIndex: number;
106
+ }, plane: SectionPlaneConfig, depths: ProjectionBandDepths): DrawingLine[];
107
+ //# sourceMappingURL=projection-bands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-bands.d.ts","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAcxE;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAMpF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,EACP,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAIhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAUhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/D,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,WAAW,EAAE,CAgCf"}
@@ -0,0 +1,185 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { projectTo2D, projectTo2DBasis } from './math.js';
5
+ // ═══════════════════════════════════════════════════════════════════════════
6
+ // AXIS HELPERS
7
+ // ═══════════════════════════════════════════════════════════════════════════
8
+ /** The canonical (unflipped) +axis unit normal for a cardinal section axis. */
9
+ function cardinalNormal(axis) {
10
+ switch (axis) {
11
+ case 'x':
12
+ return { x: 1, y: 0, z: 0 };
13
+ case 'y':
14
+ return { x: 0, y: 1, z: 0 };
15
+ case 'z':
16
+ return { x: 0, y: 0, z: 1 };
17
+ }
18
+ }
19
+ /**
20
+ * The unit normal + plane offset used to measure depth. For a custom
21
+ * (face-picked) plane the cutter uses `normal`/`distance` verbatim, so reuse
22
+ * them; for cardinal axes the normal is the +axis unit and the offset is the
23
+ * plane `position`.
24
+ */
25
+ function planeNormalDistance(plane) {
26
+ if (plane.customPlane) {
27
+ return { normal: plane.customPlane.normal, offset: plane.customPlane.distance };
28
+ }
29
+ return { normal: cardinalNormal(plane.axis), offset: plane.position };
30
+ }
31
+ /**
32
+ * Flip-adjusted depth of a raw coordinate along the cut axis — the scalar
33
+ * mirror of {@link signedDepth} for callers that only have an axis coordinate
34
+ * (e.g. an element's `axisMin`/`axisMax`) rather than a full 3D point. Keeps
35
+ * the `flipped ? -raw : raw` sign convention in a single place.
36
+ */
37
+ export function signedAxisDepth(coord, position, flipped) {
38
+ const raw = coord - position;
39
+ return flipped ? -raw : raw;
40
+ }
41
+ /**
42
+ * Flip-adjusted signed depth of a world point from the cut plane.
43
+ * `d < 0` ⇒ below (visible side); `d > 0` ⇒ above (overhead side).
44
+ */
45
+ export function signedDepth(point, plane) {
46
+ const { normal, offset } = planeNormalDistance(plane);
47
+ const raw = point.x * normal.x + point.y * normal.y + point.z * normal.z - offset;
48
+ return plane.flipped ? -raw : raw;
49
+ }
50
+ /**
51
+ * The camera viewing direction (unit, pointing away from the viewer into the
52
+ * scene) for silhouette detection. For a cardinal axis it is the −axis (or
53
+ * +axis when flipped); for a custom plane it follows the plane normal.
54
+ */
55
+ export function getViewDirectionForPlane(plane) {
56
+ const sign = plane.flipped ? 1 : -1;
57
+ if (plane.customPlane) {
58
+ const n = plane.customPlane.normal;
59
+ return { x: n.x * sign, y: n.y * sign, z: n.z * sign };
60
+ }
61
+ switch (plane.axis) {
62
+ case 'x':
63
+ return { x: sign, y: 0, z: 0 };
64
+ case 'y':
65
+ return { x: 0, y: sign, z: 0 };
66
+ case 'z':
67
+ return { x: 0, y: 0, z: sign };
68
+ }
69
+ }
70
+ // ═══════════════════════════════════════════════════════════════════════════
71
+ // PROJECTION (2D) — single entry point matching the section cutter
72
+ // ═══════════════════════════════════════════════════════════════════════════
73
+ /**
74
+ * Project a world point into the drawing's 2D space using the SAME basis the
75
+ * section cutter uses, so projected construction lines coincide exactly with
76
+ * the cut polygons. Cardinal axes → `projectTo2D`; custom plane → the
77
+ * tangent/bitangent basis (`projectTo2DBasis`).
78
+ */
79
+ export function projectPointForPlane(point, plane) {
80
+ if (plane.customPlane) {
81
+ const c = plane.customPlane;
82
+ return projectTo2DBasis(point, c.origin, c.tangent, c.bitangent);
83
+ }
84
+ return projectTo2D(point, plane.axis, plane.flipped);
85
+ }
86
+ // ═══════════════════════════════════════════════════════════════════════════
87
+ // BAND CLASSIFICATION
88
+ // ═══════════════════════════════════════════════════════════════════════════
89
+ /**
90
+ * Classify a flip-adjusted depth *range* `[dMin, dMax]` into a projection band.
91
+ *
92
+ * - VISIBLE band occupies `[-below, 0)` (below the cut, toward the floor).
93
+ * - OVERHEAD band occupies `(0, +above]` (above the cut, overhead).
94
+ *
95
+ * An element overlapping both (e.g. a wall cut at mid-height) is `'spanning'`
96
+ * and drawn solid — its footprint is real near-floor geometry; the cut line
97
+ * itself is emitted separately by the section cutter.
98
+ */
99
+ export function classifyDepthRange(dMin, dMax, depths) {
100
+ // Guard against caller passing them swapped.
101
+ const lo = Math.min(dMin, dMax);
102
+ const hi = Math.max(dMin, dMax);
103
+ const visibleOverlap = lo < 0 && hi >= -depths.below;
104
+ const overheadOverlap = hi > 0 && lo <= depths.above;
105
+ if (visibleOverlap && overheadOverlap)
106
+ return 'spanning';
107
+ if (visibleOverlap)
108
+ return 'visible';
109
+ if (overheadOverlap)
110
+ return 'overhead';
111
+ return 'cull';
112
+ }
113
+ /**
114
+ * Classify a single world-space line segment by its endpoints' depths.
115
+ * Used by the silhouette/edge fallback where each edge is classified on its
116
+ * own (no extrusion range).
117
+ */
118
+ export function classifySegmentBand(a, b, plane, depths) {
119
+ const da = signedDepth(a, plane);
120
+ const db = signedDepth(b, plane);
121
+ return classifyDepthRange(da, db, depths);
122
+ }
123
+ /**
124
+ * Map a band to the `DrawingLine.visibility` the renderer keys off:
125
+ * overhead → `'hidden'` (dashed), everything kept → `'visible'` (solid).
126
+ * Returns `null` for `'cull'` so the caller drops the line.
127
+ */
128
+ export function bandVisibility(band) {
129
+ switch (band) {
130
+ case 'overhead':
131
+ return 'hidden';
132
+ case 'visible':
133
+ case 'spanning':
134
+ return 'visible';
135
+ case 'cull':
136
+ return null;
137
+ }
138
+ }
139
+ /**
140
+ * Convert a winding-robust mesh footprint outline (from the Rust
141
+ * `meshOutline2d` binding) into band-classified construction-projection lines
142
+ * (issue #979). The whole element is classified by its axis extent
143
+ * (`axisMin`/`axisMax`) — below the cut → solid, above → dashed. Contours are
144
+ * already in drawing 2D space, so they're emitted as closed loops verbatim.
145
+ *
146
+ * This is the winding-robust alternative to the normal-based silhouette path:
147
+ * it draws the true projected footprint even when the source mesh is wound
148
+ * inconsistently (common for ifc-lite roofs/stairs/site).
149
+ */
150
+ export function outlineToProjectionLines(outline, meta, plane, depths) {
151
+ // The outline path is cardinal-only (the toggle is gated off for custom
152
+ // planes), so classify against the cardinal plane position.
153
+ const pos = plane.customPlane ? plane.customPlane.distance : plane.position;
154
+ const dMin = signedAxisDepth(outline.axisMin, pos, plane.flipped);
155
+ const dMax = signedAxisDepth(outline.axisMax, pos, plane.flipped);
156
+ const visibility = bandVisibility(classifyDepthRange(dMin, dMax, depths));
157
+ if (visibility === null)
158
+ return [];
159
+ const lines = [];
160
+ for (const ring of outline.contours) {
161
+ const n = Math.floor(ring.length / 2);
162
+ if (n < 3)
163
+ continue; // a closed ring needs ≥3 vertices (matches the Rust source)
164
+ for (let i = 0; i < n; i++) {
165
+ const j = (i + 1) % n; // close the loop (last → first)
166
+ const sx = ring[i * 2];
167
+ const sy = ring[i * 2 + 1];
168
+ const ex = ring[j * 2];
169
+ const ey = ring[j * 2 + 1];
170
+ if (Math.abs(sx - ex) < 1e-7 && Math.abs(sy - ey) < 1e-7)
171
+ continue;
172
+ lines.push({
173
+ line: { start: { x: sx, y: sy }, end: { x: ex, y: ey } },
174
+ category: 'projection',
175
+ visibility,
176
+ entityId: meta.entityId,
177
+ ifcType: meta.ifcType,
178
+ modelIndex: meta.modelIndex,
179
+ depth: 0,
180
+ });
181
+ }
182
+ }
183
+ return lines;
184
+ }
185
+ //# sourceMappingURL=projection-bands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-bands.js","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Current-floor projection scoping for 2D floor plans (issue #979 follow-up).
3
+ *
4
+ * The construction projection (issue #979) originally projected the FULL model
5
+ * height on each side of the cut, so every storey's geometry bled onto every
6
+ * plan — a roof two floors up would draw (dashed) on the ground-floor plan.
7
+ * This module scopes the projection bands to the storey the cut sits in.
8
+ *
9
+ * # Coordinate frame (critical)
10
+ * The storey floor levels passed here MUST be derived from MESH geometry in the
11
+ * render frame (the same RTC-shifted, Y-up, metric frame as the section `cut`
12
+ * position) — never from the `IfcBuildingStorey.Elevation` attribute, which
13
+ * omits the building/site placement Z and is wrong for georeferenced models.
14
+ * This module is pure scalar arithmetic and is agnostic to how the levels were
15
+ * obtained; the viewer hook (`useDrawingGeneration`) does the derivation.
16
+ */
17
+ import type { ProjectionBandDepths } from './projection-bands.js';
18
+ /** Minimal mesh shape needed to derive storey floor levels (structural — avoids
19
+ * a hard dependency on `@ifc-lite/geometry`'s `MeshData`). */
20
+ export interface StoreyFloorMesh {
21
+ readonly expressId: number;
22
+ readonly positions: Float32Array;
23
+ }
24
+ /**
25
+ * Per-storey floor levels (ascending) derived from mesh geometry, for
26
+ * current-floor projection scoping (issue #979 follow-up).
27
+ *
28
+ * Each storey's level is the MINIMUM world-Y over its member meshes, read from
29
+ * `positions` in the RTC-shifted render frame — the SAME frame as the section
30
+ * cut position. This deliberately avoids `IfcBuildingStorey.Elevation`, which
31
+ * omits the building/site placement Z and is wrong for georeferenced models.
32
+ *
33
+ * `elementToStorey` keys are LOCAL express ids, so callers must restrict this to
34
+ * single-model use (mesh `expressId` then equals the local id). Storeys whose
35
+ * members produced no mesh contribute no level and are dropped.
36
+ *
37
+ * # Known limitations (bounded; documented intentionally)
38
+ * - The min-Y is the underside of the storey's lowest member, typically the
39
+ * floor SLAB which conventionally extrudes a little BELOW the level datum — so
40
+ * the returned level sits ~one slab thickness below the architectural floor.
41
+ * The effect is a small (~slab-thickness) over-projection at storey
42
+ * boundaries, not a whole-floor bleed.
43
+ * - An element assigned to an upper storey but geometrically descending into a
44
+ * lower one (a stair flight, a double-height shaft) pulls that storey's level
45
+ * down, which can collapse two levels together; the scoping then degrades
46
+ * toward the unscoped full-extent behavior for that cut — never worse than the
47
+ * pre-#979-follow-up baseline. A placement-Z / percentile derivation is a
48
+ * possible future hardening.
49
+ */
50
+ export declare function storeyFloorsFromMeshes(meshes: ReadonlyArray<StoreyFloorMesh>, elementToStorey: ReadonlyMap<number, number>): number[];
51
+ /**
52
+ * Compute the construction-projection band depths for the storey containing the
53
+ * cut, given the per-storey floor levels (ascending) and the model's axis
54
+ * extent — all along the cut axis, in the same render-frame metric space as
55
+ * `position`.
56
+ *
57
+ * The current storey `k` is the highest storey whose floor is at or below the
58
+ * cut. Its vertical slab is `[floor_k, ceil_k)`:
59
+ * - the bottom storey extends DOWN to the model bottom (`axisMin`) so site /
60
+ * foundation / terrain below the ground floor still projects (solid);
61
+ * - the top storey extends UP to the model top (`axisMax`) so the roof / eaves
62
+ * above the top storey still projects (dashed);
63
+ * - an intermediate storey is clamped to the next storey's floor (its ceiling),
64
+ * so the floor above is culled.
65
+ *
66
+ * The returned depths feed `ProjectionBandDepths` unchanged: `below` becomes the
67
+ * VISIBLE/solid band (toward the floor) and `above` the OVERHEAD/dashed band.
68
+ * Every depth is floored at `minDepth` so a cut sitting exactly on a storey
69
+ * boundary never yields a zero-width band that culls everything on the plane.
70
+ *
71
+ * @param storeyFloors Per-storey floor levels along the cut axis, ASCENDING,
72
+ * length ≥ 1 (caller should fall back to full-extent bands
73
+ * when fewer than 2 storeys exist).
74
+ * @param position Cut position along the axis (render-frame).
75
+ * @param axisMin Model minimum along the axis (render-frame).
76
+ * @param axisMax Model maximum along the axis (render-frame).
77
+ * @param minDepth Lower clamp for each band depth (default 1 mm).
78
+ */
79
+ export declare function currentFloorBands(storeyFloors: number[], position: number, axisMin: number, axisMax: number, minDepth?: number): ProjectionBandDepths;
80
+ //# sourceMappingURL=storey-bands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storey-bands.d.ts","sourceRoot":"","sources":["../src/storey-bands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE;+DAC+D;AAC/D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,EACtC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3C,MAAM,EAAE,CAeV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,SAAO,GACd,oBAAoB,CAmBtB"}
@@ -0,0 +1,96 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Per-storey floor levels (ascending) derived from mesh geometry, for
6
+ * current-floor projection scoping (issue #979 follow-up).
7
+ *
8
+ * Each storey's level is the MINIMUM world-Y over its member meshes, read from
9
+ * `positions` in the RTC-shifted render frame — the SAME frame as the section
10
+ * cut position. This deliberately avoids `IfcBuildingStorey.Elevation`, which
11
+ * omits the building/site placement Z and is wrong for georeferenced models.
12
+ *
13
+ * `elementToStorey` keys are LOCAL express ids, so callers must restrict this to
14
+ * single-model use (mesh `expressId` then equals the local id). Storeys whose
15
+ * members produced no mesh contribute no level and are dropped.
16
+ *
17
+ * # Known limitations (bounded; documented intentionally)
18
+ * - The min-Y is the underside of the storey's lowest member, typically the
19
+ * floor SLAB which conventionally extrudes a little BELOW the level datum — so
20
+ * the returned level sits ~one slab thickness below the architectural floor.
21
+ * The effect is a small (~slab-thickness) over-projection at storey
22
+ * boundaries, not a whole-floor bleed.
23
+ * - An element assigned to an upper storey but geometrically descending into a
24
+ * lower one (a stair flight, a double-height shaft) pulls that storey's level
25
+ * down, which can collapse two levels together; the scoping then degrades
26
+ * toward the unscoped full-extent behavior for that cut — never worse than the
27
+ * pre-#979-follow-up baseline. A placement-Z / percentile derivation is a
28
+ * possible future hardening.
29
+ */
30
+ export function storeyFloorsFromMeshes(meshes, elementToStorey) {
31
+ const storeyMinY = new Map();
32
+ for (const mesh of meshes) {
33
+ const storeyId = elementToStorey.get(mesh.expressId);
34
+ if (storeyId === undefined)
35
+ continue;
36
+ const pos = mesh.positions;
37
+ let minY = Infinity;
38
+ for (let i = 1; i < pos.length; i += 3) {
39
+ if (pos[i] < minY)
40
+ minY = pos[i];
41
+ }
42
+ if (!Number.isFinite(minY))
43
+ continue;
44
+ const cur = storeyMinY.get(storeyId);
45
+ if (cur === undefined || minY < cur)
46
+ storeyMinY.set(storeyId, minY);
47
+ }
48
+ return [...storeyMinY.values()].sort((a, b) => a - b);
49
+ }
50
+ /**
51
+ * Compute the construction-projection band depths for the storey containing the
52
+ * cut, given the per-storey floor levels (ascending) and the model's axis
53
+ * extent — all along the cut axis, in the same render-frame metric space as
54
+ * `position`.
55
+ *
56
+ * The current storey `k` is the highest storey whose floor is at or below the
57
+ * cut. Its vertical slab is `[floor_k, ceil_k)`:
58
+ * - the bottom storey extends DOWN to the model bottom (`axisMin`) so site /
59
+ * foundation / terrain below the ground floor still projects (solid);
60
+ * - the top storey extends UP to the model top (`axisMax`) so the roof / eaves
61
+ * above the top storey still projects (dashed);
62
+ * - an intermediate storey is clamped to the next storey's floor (its ceiling),
63
+ * so the floor above is culled.
64
+ *
65
+ * The returned depths feed `ProjectionBandDepths` unchanged: `below` becomes the
66
+ * VISIBLE/solid band (toward the floor) and `above` the OVERHEAD/dashed band.
67
+ * Every depth is floored at `minDepth` so a cut sitting exactly on a storey
68
+ * boundary never yields a zero-width band that culls everything on the plane.
69
+ *
70
+ * @param storeyFloors Per-storey floor levels along the cut axis, ASCENDING,
71
+ * length ≥ 1 (caller should fall back to full-extent bands
72
+ * when fewer than 2 storeys exist).
73
+ * @param position Cut position along the axis (render-frame).
74
+ * @param axisMin Model minimum along the axis (render-frame).
75
+ * @param axisMax Model maximum along the axis (render-frame).
76
+ * @param minDepth Lower clamp for each band depth (default 1 mm).
77
+ */
78
+ export function currentFloorBands(storeyFloors, position, axisMin, axisMax, minDepth = 1e-3) {
79
+ const n = storeyFloors.length;
80
+ // Current storey = highest floor at or below the cut (storeyFloors ascending).
81
+ // A cut below the lowest floor still belongs to the bottom storey (k = 0).
82
+ let k = 0;
83
+ for (let i = 0; i < n; i++) {
84
+ if (storeyFloors[i] <= position)
85
+ k = i;
86
+ else
87
+ break;
88
+ }
89
+ const floor = k === 0 ? Math.min(axisMin, storeyFloors[0]) : storeyFloors[k];
90
+ const ceil = k === n - 1 ? Math.max(axisMax, storeyFloors[n - 1]) : storeyFloors[k + 1];
91
+ return {
92
+ below: Math.max(position - floor, minDepth),
93
+ above: Math.max(ceil - position, minDepth),
94
+ };
95
+ }
96
+ //# sourceMappingURL=storey-bands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storey-bands.js","sourceRoot":"","sources":["../src/storey-bands.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA4B/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAsC,EACtC,eAA4C;IAE5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,SAAS,IAAI,IAAI,GAAG,GAAG;YAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAsB,EACtB,QAAgB,EAChB,OAAe,EACf,OAAe,EACf,QAAQ,GAAG,IAAI;IAEf,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;IAE9B,+EAA+E;IAC/E,2EAA2E;IAC3E,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,QAAQ;YAAE,CAAC,GAAG,CAAC,CAAC;;YAClC,MAAM;IACb,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,IAAI,GACR,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7E,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC;QAC3C,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,EAAE,QAAQ,CAAC;KAC3C,CAAC;AACJ,CAAC"}
package/dist/types.d.ts CHANGED
@@ -46,6 +46,15 @@ export interface SectionConfig {
46
46
  plane: SectionPlaneConfig;
47
47
  /** Depth range beyond cut plane to include for projection lines (world units) */
48
48
  projectionDepth: number;
49
+ /**
50
+ * Construction-projection band depths (issue #979). When set, projection
51
+ * lines split into a VISIBLE band below the cut (thin solid) within
52
+ * `projectionBelowDepth`, and an OVERHEAD band above the cut (dashed) within
53
+ * `projectionAboveDepth`. Both default to `projectionDepth` when omitted, so
54
+ * legacy callers keep their single-window behaviour.
55
+ */
56
+ projectionBelowDepth?: number;
57
+ projectionAboveDepth?: number;
49
58
  /** Whether to compute hidden lines */
50
59
  includeHiddenLines: boolean;
51
60
  /** Crease angle threshold in degrees (edges sharper than this are feature edges) */
@@ -213,6 +222,23 @@ export interface EdgeData {
213
222
  /** Model index */
214
223
  modelIndex: number;
215
224
  }
225
+ /**
226
+ * A winding-robust 2D footprint outline of a mesh, produced by the Rust
227
+ * `meshOutline2d` WASM binding (it unions projected triangle areas, so it is
228
+ * correct regardless of ifc-lite's unreliable triangle winding — unlike
229
+ * normal-based silhouette extraction).
230
+ *
231
+ * `contours` are closed rings in **drawing 2D space** (the same basis as
232
+ * `projectTo2D`, so they coincide with the section-cut polygons); each is a
233
+ * flat `[u0, v0, u1, v1, …]` with NO duplicated closing vertex. `axisMin` /
234
+ * `axisMax` are the element's extent along the cut axis (world units), used to
235
+ * classify the outline into the visible/overhead projection band.
236
+ */
237
+ export interface MeshOutline2D {
238
+ contours: ReadonlyArray<ArrayLike<number>>;
239
+ axisMin: number;
240
+ axisMax: number;
241
+ }
216
242
  /**
217
243
  * A raw profile polygon extracted from an IfcExtrudedAreaSolid element.
218
244
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAuE/D,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,GAAG;CACX,CAAC;AAgQF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,QAAgB;IAChE,OAAO,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAc;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,mCAAmC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,uDAAuD,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAgF/D,MAAM,CAAC,MAAM,sBAAsB,GAAiC;IAClE,eAAe,EAAE,EAAE;IACnB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,GAAG;CACX,CAAC;AAsRF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,QAAgB;IAChE,OAAO,GAAG,UAAU,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAc;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,mCAAmC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,uDAAuD,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ifc-lite/drawing-2d",
3
- "version": "1.16.2",
3
+ "version": "1.18.0",
4
4
  "description": "2D architectural drawing generation from IFC models - section cuts, floor plans, and elevations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,7 +12,7 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@ifc-lite/geometry": "^2.3.0"
15
+ "@ifc-lite/geometry": "^2.4.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@webgpu/types": "^0.1.70",